Process and Flow

tech code

As a Finnish language learner, I find Wiktionary to be invaluable.

Sunlight on a small, calm lake, a forest on the opposite shore Several years ago (2014-2017) I ran a website that presented Finnish word definitions and inflections scraped from Wiktionary, but in a way that was more convenient for Finnish language learners (well, for me, anyway). I was in a full time Finnish course, and it was useful to me. I was likely also its only user.

It was built using C# and ASP.NET in a framework called MVC, which I had been using in my professional work. You can peruse the source code here, if you're of a mind to do so. Its lack of documentation is discussed here.

I liked to code "in the Zone" or "in the Flow" then, and I can see it in the code. The Zone is a state of mind where the external world disappears and you're just focused on the task at hand to the exclusion of all else. People used to talk about that state of mind a lot, how to achieve it and maintain it (e.g. "Make sure you have a 3 hour block of uninterrupted time"), and it was felt to be essential to get really good work done. I believed it. There is even a brief scene in The Social Network movie, where Sean Parker (Justin Timberlake) tries to ask a developer what he's doing and is rudely rebuffed. "He's in the Zone, don't bother him" he's told. Sean Parker then grins approvingly (and I cheered quietly). It seems to have fallen out of favor as a cultural idea these days, but it really had force for a long time, and some developers still swear by it today.

I think there's a general recognition that being in the Zone is not necessarily needed to get the best work done. Sitting down and typing is not the most important part of software development - it's critical, of course, and takes up the bulk of a developer's time - but the conceptual work of planning and architecting, and the social work of getting consensus, documentation and following an already established process is at least as important. To emphasize the Zone is to emphasize only one component of developing software.

As well, the state of hyper-intense focus means that as devs, we won't always ask if what we're doing at the moment is necessary. Do I really need to optimize that function now, or can I leave it for never? Coding in the flow means lots of lines of code are being written, but not always towards focused ends.

When creating or leading a project, I like to give a lot of thought to the process involved. There's a theory of art creation that "the process" is the art, and the artistic works that the artist makes and people look at are just a by-product of that artistic process. I think that model can be useful when thinking about software creation also. The product, the software, is the result of a process. If the process is successful, then the software will be robust and bulletproof. Focus on the process, and the software will follow. Code reviews, automated testing, continuous integration are current practices that are part of the process.

The Suomenkieli Website was created when I still equated development to sitting down and typing. I would just start typing and it would all work out. And indeed, the website worked and did what it was supposed to do.

But for that site, there is zero documentation, so sorting through and getting it up and running is a bit of a chore. There is some reverse-engineering involved. I also was really enamored with the idea of using a relational database to connect all of the words with their declensions and conjugations. And that took up the bulk of my time in development: scraping those properly, making sure they were entered and annotated properly. I spent many hours in Flow, making sure that the contents of the cells of the HTML table displaying inflections were tagged properly with its column and row headers.

It turns out that the word itself and its KOTUS type can completely determine its inflection. Which is to day, that I did not have to scrape the inflections, but could have derived them using Wiktionary's own scripts.

As for the site itself, I may find the time and energy to update it again; if you are interested in something like that, let me know. We could collaborate.


Leave a comment

There was an error. It's me, not you. You could try again later? Or try another method? Email? Smoke signals? Tell me what went wrong!

please enter a substantive message with no link or website address
please enter your name
please enter an email

Comment successfully sent, and it awaits moderation.