It feels like a long time since I visited my own blog here and it has indeed been over a fortnight past the last post which was about Eric S. Raymond and how much I admire the person. One of the things he mentions in the “Jargon Lexicon” as part of his commentary on the whole Hacking folklore is that a Hacker is characterized by someone who, when faced with a new problem and even otherwise, can literally devour tons of voluminous books – specification manuals, tutorials, code, architecture, design and what have you, hours at a stretch and
books on end till he has sufficiently mastered the domain to be able to solve the problem in an elegant and efficient manner. Now that is one aspect that I am afraid I have not been able to inculcate in myself till now. Not for lack of ability but due to lack of time or more honestly, due to lack of time-management. In short, my time management has been utterly ludicrous over the past month.
In my first few posts, I had laid out a charter of goals to accomplish – such as the 20% projects.
I confess that not much work has been done in that respect. Here are a few lessons that I have learnt from the whole experience merit sharing :
1. Never force yourself to stick to a draconian time schedule.
This may seem trivial but it can either make a successful project or lead to self-loathing despondency. Don’t set unrealistic goals when attempting something especially ambitious. Consider all the other parameters and factor them in with enough buffer so that the task gets done. For instance, attempting to write a Linux Device Driver is a noble decision. However, it is well impossible to write one when the specifications are obfuscated by the vendor. Reverse engineering is a task that requires not only expertise but also dedicated effort that many working people just cannot afford to expend on a 20% project. A sound theoretical knowledge is absolutely essential and I would suggest creating some sample drivers for simple devices would bolster one’s confidence enough to attempt writing one for a more complicated device. This is the approach that I have taken and will be logging the progress here as promised.
2. Beware of turning something that fascinates you into a bugbear
Now everyone knows that one can excel in something that one truly enjoys. This is common sense, right? Okay… what not many people realise is that there are a multitude of ways in which one can manage to turn these same enjoyable pursuits into something that you start loathing. A veritable bete noir. And that would be a real shame. Chiding oneself when one slips a schedule (for whatever reason), being stymied by some extraneous factor (In my case, the whole problem of unconfigurability of sound on my Linux notebook) however banal, expecting too much out of too less time are just some ways in which the whole process of learning and working on something that you find extremely enjoyable is turned into something that you fear facing and start avoiding as if it were the Devil Incarnate! Believe me, it can happen with anything that you consider – no matter how intriguing or challenging. The solution? Take it cool. The world ain’t gonna vamoose if you ain’t gonna finish that piece of software now or ever. Just set some broad deadlines and a very flexible and loose schedule and enjoy it all the way. In most cases, I bet the results would surprise you in how much more you achieve than what you had originally planned.
3. Leave time for other activities.
In short, you have a Life. If not, get one today! Seriously, work (even if you are a Hacker-par-excellence-in-extremus who lives and dies for coding) is not everything. It is most of it, but there should be space and time for other wholesome activities. Sleep, take your girlfriend out, surprise your parents by staying home and actually spending time talking to them, go for a long ride, meet up with friends and just go plain crazy… the list is endless my friend. For me, I do most of the above 😉 …
4. Never ever wait on an idea.
Ideas are ephemeral property. Either you implement and stake claim to it or someone else will take it, thank you. You get an idea, start working on it immediately, keeping all the points above in mind of course. And the best reason is that average ideas come from brainstorming sessions, good ideas come from dedicated study of the domain and great ideas come while one is least expecting it. The winning move is not to lose it!
Okay, I have been evangelising long enough for one day. I have started work well and truly and I am following my own principles listed above. Look for a lot of activity on this little nook of the Web ( pun intended). Peace.