became a stupid software engineer six years down the line in my career. In college, I was a computer science student and very quickly fell in love with programming. I knew I wanted to become a good computer engineer, little I knew that in due course of time with little focus in learning, I would end up becoming an average software engineer – and would only know a little more than what I learned in college. In fact, in a few areas, I am no longer as good as I was then – take for instance ‘problem solving’, puzzles. So, really what happened ? Let me take you through the journey pretty quick.
In college, I did hell lot of programming, read several books, participated in umpteen number of programming competitions – won a few as well, to hone my programming skills and of course I loved doing it too. National Instruments, a pretty reputed company, in the line of product development who paid good too, found me worthy of the job among my talented batch mates. Lot of glory and appreciation came my way post that in college, which made my time in the last year of college very wonderful. Joined NI soon after college and met extremely talented people from different colleges. I was very focused and determined and performed extraordinarily – which made a top leader in the company see a lot of potential in me. His appreciation naturally attracted appreciation from lot other people. After 2 years, the management felt that I should be assigned more critical role and I was put in an extremely important team- compiler team, in the team of 3 extremely talented individuals in the organization. I was nervous and was overwhelmed with the pressure of doing well.
It has been close to four years since then and still I have been performing the same role – no less critical, no more. Among those 3 most talented individuals, two are still there and 1 another very talented and focused engineer has joined the team 2 years back. It was very expected of me by my peers and leaders, that I would be climbing the ladder quicker than others – and in a way I have let them down. I feel ashamed to admit that after the time of around 3.5 years in compiler team, I know very little of compiler – I haven’t even finished one-quarter of any compiler book, hardly did any programming outside the work (and think of it that was the thing I fell in love with), no compiler projects, no conference attended, and no of a lot of things. The point is that all my time in the last 4 years has been spent in being managing to complete office work and dealing with personal distractions (some people call it quarter life crisis caused by several reasons- in my case it was primarily caused by the absence of a girl friend), personal commitments. The basis of all that has been extremely poor time management and lack of determination. Often personal distractions kept me from performing effectively at work. It wasn’t like that I did not realize or wasn’t aware of the losing time and opportunities. There were moments of frustrations and fearfulness and so there were plans, discussions, mentoring from people but no action items were executed. Of course, it was also to do with my lack of sufficient intent of learning.
Any ways, I just realize that I have forgotten to state what I mean when I say computer engineer versus when I say software engineer. The way I define them is that a software engineer is one who is good in developing softwares, has good programming skills (can program in various languages), and can test a software well – that is all. One individual in my team once said that he considers engineers in companies like Infosys, Wipro as merely software engineers. Another individual in my team named them as code-monkeys who does not really care what’s underneath the code. And that is where a computer engineer comes in, who is not just well-equipped in developing software, but is also aware of various software and hardware optimizations he can make use of in his program. He is aware of computer architecture and writes programs well suited to the type of underlying hardware. One who can argue about the different optimization techniques, different linker and loader strategies.
Sadly, I am still merely a software engineer from college.
Naturally, this is not a good feeling and as I am growing in my career, I feel the heat of it more with every passing day. I feel dumb in the company of my talented peers, with really nothing to contribute. As it clearly stands out, for what ever reasons – lack of determination, intent of learning, quarter life crisis, whatever – they have left me stranded with no descent achievement at neither professional or personal level.
However, I’d like to believe that this is not the end of the world for me and the door is still open to mark an entry on the other side. So to start with, here I jot down a few things to accomplish in the next 5-6 months. I realize that I should go by rules imagining that I am held in prison and of course, the rules are not questioned there, and one does have only little flexibility to not follow the rule. Do not go by heart and follow the rules of the warden for the next few months, and the heart will follow.
– Lot of high level and low level programming (A program per day)
– Study books : Linkers and Loaders, Computer architecture, Engineering in compiler
– Papers on computer architectures and compilers
– Learning as much as I can
– Play tennis and cricket for fun to remain fit and energetic
In a mission from a stupid software engineer to a good computer engineer, the march starts today !!!