What’s your side project?
I’ve been kind of pensive lately about going back to my re-implementation project of The Project. As detailed in The Coder’s Whiteboard, it seems that every time I sit down to actually work on the domain layer of this project, I get sucked into trying to beautify the accidental uglies that either the platform makes awkward or I haven’t adequately yet addressed. Plus, I have this blog to maintain, right?
I was going to push it off indefinitely, since I’d have to end up re-doing it from scratch yet again, given my revelations in recent weeks. Then I stumbled upon a post by Nathan Ainslie that lauds the importance of the side project.
But at the same time, this irrational love of development can be worn down by all of the institutional BS that we have to deal with, and it can be rather, how you say, “soul-crushing.” So, how to rekindle the love of coding and avoid the burnout that is the otherwise inevitable consequence of the software engineering process? Start a side project!
Hooah! I argue that it doesn’t even have to amount to anything. I know my side project for The Project might not ever get off the ground because of my perfectionist tendencies. But Nathan nails it. When you have a side project, there is no budget, no deadlines, and no angry customers complaining that an extra bit of prettiness and looser coupling isn’t going to line their pockets.
In a side project, you get to do it the right way. Everyone is always saying you should engage in constant refactoring. In a side project, you actually get to do it. It is like an engineering lab, and you’re the scientist.
And I think we need labs if we’re going to discover better solutions to our own mistakes. In the “real world”, if it works, it works, and there’s a significant chance you won’t get to go back and fix it.
What a breath of fresh air. It is the type of design and architecture debates and self-disagreements on elegant and pretty code that gets me excited. And I understand the reality that I won’t be able to do this at a job I’ve held for an entire two months.
My most recent obsession of minutia boils down to simulating friend classes in languages, like Java and C#, that do not have such a concept. It is motivated by doing DDD factories “the right way”, being able to have your cake and eat it to (you’ll probably hear about this in a later post). This is fun for me. Do you see now what I was saying about masochism? I’ve got the bug.
I will never be famous. I don’t know if I’ll get married and have a family. That would be nice, but nothing is guaranteed. The least I should have is a love for my work. That love should serve as sufficient enough distraction from the rest of my imperfect life.
I was under the mistaken notion that most people who get into this line of work love the work. I always took the software industry to be such a masochistic endeavor that only sickos who actually like it would want to get involved.
It turns out, not everyone loves the work. Not everyone likes to take part in “lifelong learning” in their spare time. This was probably the one thing that shocked me out of college: not the arduous process, not source control, and not bug tracking systems.
One of my colleagues said, during orientation and before we were deployed to our work areas, that she was eager to get to work because she hadn’t written code in two years. Two years? Really? And you’re a developer? What have you been doing since then?
To me, that is unthinkable. This industry demands that developers be on top of the craft, and I think the non-trivial side project is a great way to apply new languages, tools, and techniques.
So you’re a developer? What’s your side project?
September 14, 2008 at 11:49 am
Nice post, in total agreement.
I’m a game dev by day, and funnily enough my current side project is also game related. Modern games are so huge and complex that we increasingly specialise.
Working for a big developer lets me produce things I could never do on my own, but the smaller personal projects let me roam around the game technology stack working on things I find interesting. Best of both worlds.
September 14, 2008 at 2:37 pm
I have a lot of respect for any game developer, given the rumored horrendous work-life balance.
And you’re right — on a team, you do things faster than you could if you were on your own, and quick enough so the work can make a difference. Another thing the side project affords is the ability to, as you put it, roam into aspects of systems that you’re not allowed to touch: for me, that’s UI, the database, inversion of control, and so on…these are areas that are done at work in ways I disagree with.
January 28, 2009 at 8:39 pm
From Global Nerdy:
“The article goes into more detail, but its general gist is that what a candidate does in his or her spare time might be a good indicator of his or her fit for the position. Looking for a star developer? It’s probably one who’s got a hobby programming project on the side.”
I am ready to accept your apologies for doubting me.