Coding as a hobby? For me, non-work coding is a regimen, like going to the gym

Einstein FTW

The opinions stated here are my own, not those of my company.

This post is also available on my website (link to post). Read it there or here; up to you!

Who is this post for?

You should read this post if you are trying to get better at coding. If you have questions or stories to share, please comment!

tl;dr

Don’t feel pressured to treat coding as a hobby if you don’t actually find it fun and relaxing. If your goal is to get better at coding, just treat non-work coding as a regimen, like going to the gym.

Coding as a hobby

Stack Overflow runs a developer survey every year. In the results for the 2019 survey, a whopping 80% of respondents said they code as a hobby!

Of course, don’t misinterpret this statistically. This survey is voluntary, so it suffers from selection bias, which means that the 80% only applies to the survey respondents; it doesn’t apply to all developers.

Is coding my hobby?

Not really. Let me explain.

My hobbies are things I do to relax, learn outside of work, have fun with my family, etc. Riding bicycles, re-learning to play guitar (after many years of inactivity), playing Lego with the kids, etc.

I don’t find coding outside of work relaxing during the work week because I spend all day at work either coding or dealing with code (filing bugs, discussing fixes, etc). By the end of the day, I really don’t want to see any more code.

Furthermore, the weekend is generally family time. By the end of the night, once the kids are asleep, I’m pretty tired. I want to veg out, not code.

Do you want to become a better coder?

I do, for a few reasons.

First, even though I don’t code as a hobby myself, I do consider it a core mental activity, like reading, writing, doing math, etc. It should be a standard part of the K-12 curriculum. Even if you don’t like coding, software is eating the world. Since coding is a core mental activity, getting better at it is innately rewarding.

Second, I feel a lot of professional pressure in my career as a software developer to keep getting better. For example, to get a job at a better company, to get a better job in your current company, to cultivate a specialization, to get promoted to a lead or manager role, etc. For these reasons alone I take coding as a non-work regimen fairly seriously.

Does the code you write at work make you a better coder?

This is not a trick question. If you feel like the code you write at work is consistently making you a better coder, day after day, year after year, that’s great. I am curious how common that is.

In my experience, the code I write at work only occasionally makes me a better coder overall. This has been true over my whole 16+ year career. Once in a while, I get a nice tricky problem, delve into a language feature I haven’t used before, or start something from scratch, and I learn something new. It’s great when it happens!

The rest of time, I am writing code that is similar to the code I’ve written before. I can still learn things here, such as getting faster, writing code that is easier to read and understand, etc. But in my experience, I have learned the most by tackling problems that are unfamiliar, hard, and without obvious solutions. My day-to-day work has never satisfied that for long stretches of time, which is why I have adopted a coding regimen outside of work.

What is my coding regimen?

My coding regimen is super simple. I try to code outside of work for at least 1 hour a week. That’s it. Regimens don’t have to be obsessive or overbearing.

Of course, when I have applied for new jobs in the past, I have adopted a much more intense period of study and practice. But my day-to-day regimen is meant for slow, steady progress.

Conclusion

That’s it! If you love coding as a hobby, good for you. If you don’t, but still want to get better, consider adopting a coding regimen outside of work.

This is Version 1.2 of this post. You can see other versions (older, and possibly newer) at my GitHub repo (link to post).

Bruce Nauman On Clarity

Bruce Nauman

Having to say it out loud, having to explain what you are doing, forces you to be clear. You can’t just fumble through and get something and say “That’s what I meant to do all along”. That is the part I think about in my work: making sure that what I’m doing is really clear. Then it’s available, and those are the kinds of things you look for, in art, and this changes the structure of how you can think about art, and it’s there for you. And those are wonderful things when you are in their presence.

Bruce Nauman

This quote is from an episode of the show “Art in the Twenty-First Century” featuring the American artist Bruce Nauman. You can watch that episode online. He was drawing (no pun intended) a parallel between proof and clarity in mathematics, and clarity in art. I would extend the parallel to creative projects in general.

My career (so far), visualized simply

When I decided to start working on my blog more, I also decided quite consciously to maintain a healthy ratio between personal and professional posts. Mostly because I find blogs that are ostensibly about a person, but that only talk about their professional work, to be boring, as that’s only half the person really. That said, the professional identity is important, it puts bread on the table and maybe one day will pay for kids’s colleges, and so it needs its care and attention as well, especially since macro business cycles can be unpredictable. We are in the midst of quite a long boom cycle since the Great Recession of ’07-’09, and of course “winter is coming”, but it’s anybody’s guess as to when.

Furthermore, when I think about my professional career, I am optimizing for a 40-year run (ages 22-60ish). I doubt I will be able to retire before 60, and of course, it’s anybody’s guess as to how easy employment will be had or kept after the age of 50, age discrimination being the increasing reality that it is, so some of that planning does require a branch for self-employment out of necessity.

Furthermore still, the idea of career planning has always been a paradox. For some people, especially who spend most of their career at one employer, it can be quite straightforward, and I’ve found talking to those people unhelpful, as they don’t have the perspective of moving around, both geographically and between roles. Some people get lucky and don’t really realize the statistical uniqueness of that outcome. The paradox is between the job you have, and the job you want (the attainable kind, not the mythical). The dissonance between those two is quite a spectrum. And furthermore, a job is not a monolithic thing; you are solving for many variables at once (role, manager/IC, technologies used, team, growth opportunity, stress level, working hours, commute, location, etc). The personal weights assigned to those variables change over time.

If I’m aiming for a 40 year career, then I’m almost at the halfway point temporally, and when my “earning power” will max out is a deep topic for another time. If you think your salary is always going up and to the right, think again folks.

Due to all these realities, I’ve cobbled together what you could call a layered approach to career management. But before I even get into those details, I like to start with a holistic view of things. And so I present the following diagram, which neatly summarizes salient aspects of my career to date:

I’m a spatial thinker, so I find this kind of visualization quite helpful. In fact, it’s more helpful to me than it is to you, because while the visualization itself is sparse, I can use the data that is there as associative cues to other considerations in my brain that I haven’t explicitly represented.

Furthermore, the title of this post says “visualized simply” and I mean that. Data visualization has really become a thing in the last 10 years or so, and I’ve seen some really over-the-top viz. Now, the line between “data density” and “why are you showing me that?” is perhaps subjective, but I prefer to start simple, and focus on the broad strokes view of what I’ve done.

I would say, when I see that visualization, I see a lot of fragmentation along every possible dimension. In the past, that was fine and in part intentional. I wanted to be well-rounded and the only way to do that was to try different kinds of roles. But, I think that chapter of my story has run its course.

Instead, my goal is to really focus my attention on the areas that are most likely to realistically play a part in my career for the next 20+ years. This is a subtle point; it has to be something which is a stable or growing area (does the world need anymore Windows COM experts? Probably not), multiplied by what I’m intrinsically and intuitively interested in.

When I started working on mobile/iOS, I thought maybe that’s the right track to double down on. But I decided against that, in 2017, and I will blog about my reasoning there another time.

The area I do plan to focus on is applied machine learning. By applied I mean non-research-focused. I don’t have a PhD, so it is highly unlikely that I will find myself breaking ground at the theoretical level. Hence, a focus on applied works.

In fact I have a loose conjecture that applied machine learning is just going to be another aspect of business logic for apps. This is something I also need to tackle in another article. The amount of specialized knowledge to wield it continues to drop rapidly. You generally don’t need to bust out a derivative or even hand-code an algorithm yourself, insofar as you can get started with many off-the-shelf packages and approaches. Of course, the cutting edge will always require bespoke operations, but the number of teams that will need to do that kind of work will drop over time, as approaches standardize, become “good enough”, and are composable.