Code Monkey: n, a person who writes computer code for a living.
The term code monkey generally refers to a computer programmer or other person who writes computer code for a living. More specifically, it refers to a person only capable of grinding out code, but unable to perform the more intellectually complex tasks of software architecture, analysis, and design. The term is thus considered mildly insulting, and is often applied to the most junior people on a programming team.
That is how wikipedia defines the term. I keep asking my self this question, Am I being a code monkey? I know I am better in converting a business requirement into code, than bother about what it implies to the business. I generally suck at testing. Testing is not my job, I can’t possibly find fault in my code. I write a piece, test it, if it succeeds in the first attempt, rather than delving to fix negative scenarios, I move on to the next requirement. Ipso facto, I am a code monkey.
I, like most of my friends who work in software companies, just write half baked code for a living. We don’t create; we just fix code, if I have to properly call it. Most of us (software or IT professionals) in India, never realize that we are bad programmers. We have full blown IDE in our office, and we just churn out thousands of lines every day, without ever looking for alternative ways. If something bothers us, there is the ultimate destination, Google; just search, find and then Ctrl + C and Ctrl + V code, never understanding it. I am not blaming those who put effort to understand it before using it. I am just speaking about the mass of the programmers.
Why don’t we realize? That’s because, we get the job done in time. At the end of the day, what matters is the output. We all try to make the management happy. What they need is delivery on time, and we are very good at it and also in times of crisis. Stay late, complete the work and you end up getting an ‘Exceeded All Expectations’ in your annual appraisal. With that comes a salary hike. What more do we need?
So why am I complaining? I have a job, I get a decent pay, everyone is happy out there, being a code monkey is not a big thing to worry about, many (I didn’t want to use a most here, and hurt the reader’s ego) of my friends are also code monkeys. Why is there a need for this post then?
I would have lived in the glory of my ego, if not for reading through the posts of Jeff Atwood and Steve. They are two people whom I admire for their writing on programming and programmers. Jeff admires Eric Lippert and Steve admires Knuth. So to me what are Eric and Knuth, programming Gods!!!
Steve says in one of his posts
Almost everyone thinks of their programming ability as being just fine, plenty good enough. They can get by, get the job done, do pretty much anything they’d need to do, given time and patience.
It’s quite a nasty shock for many of our interview candidates when they find they’re unable to do something as simple as reverse a linked list, or open and write to a text file. They’re not shocked that they can’t do it; they’re shocked that we’d ask. Those are specialty skills, and not their specialty. They haven’t been doing much “low level” stuff like that lately.
Not all interview candidates are shocked when they can’t do it, because many of them don’t realize they’ve written something that could never work: broken code that’s not even remotely close to a correct solution. These programmers are particularly cheerful, being so clueless that they don’t even know they’re clueless.
Jeff says in his post,
There are two “classes” of programmers in the world of software development: I’m going to call them the 20% and the 80%.
The 20% folks are what many would call “alpha” programmers — the leaders, trailblazers, trendsetters, the kind of folks that places like Google and Fog Creek software are obsessed with hiring. These folks were the first ones to install Linux at home in the 90’s; the people who write lisp compilers and learn Haskell on weekends “just for fun”; they actively participate in open source projects; they’re always aware of the latest, coolest new trends in programming and tools.
The 80% folks make up the bulk of the software development industry. They’re not stupid; they’re merely vocational. They went to school, learned just enough Java/C#/C++, then got a job writing internal apps for banks, governments, travel firms, law firms, etc. The world usually never sees their software. They use whatever tools Microsoft hands down to them — usally VS.NET if they’re doing C++, or maybe a GUI IDE like Eclipse or IntelliJ for Java development. They’ve never used Linux, and aren’t very interested in it anyway. Many have never even used version control. If they have, it’s only whatever tool shipped in the Microsoft box (like SourceSafe), or some ancient thing handed down to them. They know exactly enough to get their job done, then go home on the weekend and forget about computers.
It hit the nail. Once in an interview I was asked to write a program for a linked list, I was dumb struck. The interviewer was a ex-employee of Microsoft. He just posed this question as the first one in the interview. I just drew the Linked List representation and told him this is the algorithm. He wanted me to write the program on paper. I just couldn’t get it done. (It is a different story that I came back home furious about myself and settled down to complete writing the program in one sitting. I could not get it when it mattered.) That is when I knew, I am a terribly bad programmer.
I have been living in a Matrix(Movie), like Neo, oblivious of the fact that real programming is not what I do. Real programming is a lot more than what I do. Reading through the writings of Steve and Jeff, I realized I am being presented the red pill. I could either take the red pill and delve deep into the Truth, or just ignore it, and continue my living.
I am taking the red pill!!!
There are a few of posts that I would recommend to the curious reader.