I love magic code. It’s both a sign of a rapidly evolving software where priorities are fluid and sometimes moving on is the only option, and a rapidly evolving organization where code ownership tends to switch and new owners tend to write around things, leaving magic code at the margins of the codebase.
Magic code is sometimes a testament to poor or non-existing code review and documentation practice. Someone wrote it, then they left. Then this other person came in and tried to untangle it, and all we got was a broken build and we haven’t touched it since — no time and no energy to understand it, if leaving it intact gets the job done.
Magic code is scary, especially when it resides at the bottom or at the heart of your software stack. This magic code is always guarded by select few who know of it’s central nature in the world, but can’t explain how it makes the system work, which gives rise to a kind of religious following. We know it’s important, we know it rules over us, but we can’t tell you how it functions or why it works they way it works, and… we are afraid to challenge it.
Absence of magic code can be scary too! That’s the opposite problem. When everything is neat and proper, when everything makes sense, when there is no unexplained, preternatural totem to worship and obey. This is usually a sign that too much time is spent preening the code base, fixing the technical debt, and doing so obsessively, refactoring and generally making things perfect for the sake of perfection.
Neither extreme is good, and both are equally unrealistic. As is often the case with matters with two extremities, it’s all about the balance.
Does your code base have magic code?
I’ve just gotten past a peak interviewing period where I would interview 3-5 engineering and product management candidates every week. I’ve used this question for as long as I’ve interviewed people, and it has never failed to reveal something not-immediately-on-the-surface about every single candidate. So I was not surprised that it still works, but I did get a little better at understanding why. Continue reading
Changing jobs is one of those times when one cannot escape the task of going over the contents of My Documents folder and making sure that one’s contribution is not lost for humanity. I had the honor of doing that last week, and here is what I found.
In my two weeks of travel in Vietnam I couldn’t help but take mental notes of some things that were strikingly different about Asian approach to life, liberty and pursuit of happiness. On the surface the differences may be obvious and much has already been written (and little read by yours truly) about the Orient and the Occident and the intrinsic disparities between the two. I couldn’t hope to add any insight to that body of work.
What I wanted instead is to arrive at some essential generalization about the two worlds (intentionally subjective), and then map this generalization to, say, the way we can approach our work environment or the way we can approach software design. Sounds pretty crazy, I know, but I explicitly wanted to avoid political or social angles. So I started by imagining choices in achieving happiness and well-being (the ultimate metrics of individual success) could map to choices other domains where matters as well.
It feels really good to be able to tell you that the game I’ve been working on for the past 2.5 months has just launched. To be a little more precise, today I launched a limited, yet playable version of the sprawling vision I had in the shower (hehe) on or around October 15th, 2010. Yes, I actually remember where the idea occurred to me for the first time.
I haven’t yet done the work of spreading the word, so my Twitter followers and my blog readers would be the privileged few to have a go at it first. Hope you enjoy it, and I welcome any and all feedback.
Oh, before I forget, proficient and/or native English speakers will tend to enjoy the game a lot more than the rest of the world. :) Please use the feedback tab to let me know how you feel about that.
Disclaimer: It’s going to be a long one.
“One Budding Entrepreneur’s Story” turned 8 months on October 2nd, and I feel like enough time has elapsed to sum up my experiences writing and promoting this hodgepodge of musings, commentary, thoughts and shameful self-promotion.