I wasn’t a professional programmer for very long, just a few short years at the beginning of my career. I did a little bit of UI development for a sample preparation robot. I created a bunch of XSLT sheets for a content management system. I fixed up a training and diagnostics software for a DNA analysis machine. Not trivial things, but not too complicated either.
I constantly struggled with how hard and lonely it felt. Mob programming was not yet a thing and neither was pair programming – in the companies I worked for (even though others where doing it, since this was the early 2000:s). The other developers I worked with, or maybe neary would be a better word, all seemed content with doing their own thing, on their own. I felt constantly incompetent, most likely because I was. Still, I remember those years fondly, because programming can actually be fun. It was just that I hadn’t yet discovered what it takes to make it so.
As a kid I mainly used computers for gaming, even though I typed in my first program ever on my neighbors Texas TI-99 4A. Her father would read a program listing to us, and we took turns typing the letters in. Our neighbors had no means of external storage so once we’d run the program a few times (the results typically weren’t that exciting) we would shut the computer off and it was all gone. This must have been in the early 1980:s.
Also back in the 1900:s, older people used to do something called crosswords. On paper. I’ve always found crosswords way too hard for me. My patience and vocabulary both fail me (unless it’s the New York Times Mini Crossword – those are lovely). Still – I do need a mental challenge in my free time every now and then.
Instead of crosswords, I do something I’ve come to think of as recreational programming. It might seem obvious that programming is a great way to exercise your mind, but for some reason things like crosswords still seem to be a more frequent choice of activity. That’s a pity, especially if you spend your working days in the software business doing something other than programming. I’ll explain why in a bit.
My favorite platform at the moment is the game development tool Unity. It’s a wonderful platform, because it lets me get to results quite quickly. It’s just wonderful to play around with and I build lots and lots of little fun things just for the joy of it. That said, I’ve also dabbled in Python and Ruby, and hacked together some nice backup and PDF-generation scripts in bash. As long as it’s fun, it fits for me.
I spend my working days as a consultant and trainer. I call myself a ”full stack management consultant”, because I help people at all levels in software organizations to get stuff done and collaborate better. I don’t do professional programming any longer though.
Although my recreational programming is primarily for fun I find that it also provides me with an additional benefit: it helps me remember some key things that may be hard to understand for someone who has never programmed. Here are some such things:
- Programming can be pretty hard. It really does take a lot of concentration. Once you loose your concentration it can take a while to get back into the flow. This is why it’s so important to create a focused working environment for your development teams.
- Programming can be very fun, and that is why a lot of people choose to do it for a living. It also means that it’s really not that strange if your developers seem to care a bit more about the code than about actual business results some of the time. You can’t be great at everything. Well, some can, but most of us can’t. This is why we have cross-functional teams with an ongoing dialogue that balances business value and technical sustainability.
- If your software’s internal design (i.e. the source code) isn’t very good, programming isn’t fun any more. Once the software turns into a spaghetti mess the experience of working with it rapidly degrades. If you’ve ever wondered why it takes forever for your team to develop something that seemed simple to do, this could very well be the reason, because messy code is slow to work with. It might also explain why programmers are leaving your organization in search of greener pastures/code bases.
- Some programmers are really skilled at creating well designed software. Many aren’t, and many aren’t even aware that there’s a difference between good and bad design. Some get stuck in polishing the internals for too long, but that’s probably much less common than the situation where the internals get too little love, and therefore degrade over time.
If you’re a manager, an agile coach, team lead or scrum master with no programming background, that might not be a problem. It may even turn out to be something you can use as a strength, but only if you can manage to turn up your curiosity and trust the professional opinions of your more programming-savvy colleagues. If you don’t, you run the risk of causing havoc in both your product and your workplace, simply because you don’t know what is important when it comes to programming. Programming is, after all, still an important part of software development.