Saturday, March 14, 2009


As Jeff Atwood mentioned in his famous blog article ( that there are only two kind of programmers :

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.

So in retrospective of my little more than 3 years of experience as a software developer i MUST say that i still belong to 80% category of programmers. YES I DO. There are thousands of reasons for this which i can think about but few of them that screams from my heart are -

  1. I never started this profession with a zeal, that is required in this ART of software development for masses or business.
  2. Never really did any useful hard core projects for fun, except few academic ones to fill up the marksheets of my 4 year B.E Computer. PERIOD.
  3. Limited course book or some poorly written ludicrous course manual were my world, even though i am saying "course book" believe me never ever dared to look beyond the pages which was listed in our damn syllabus. FUNNY HUH!!
  4. Big O Notation, finite automata. GIMME A BREAK!!. i swear these things really vexed me a lot. A LOT. I used to wonder what people do with these theoretical shit and why are we ever reading it?? WE are not going to design compilers!! there are already so many damn compilers out there created by few innate supernatural geeks.
  5. Never had a vim to dig more than what is required for those lame assesment and semester exams. Never enjoyed the real motive behind solving and understanding the Producer-Consumer, Dining Philosophers etc. problems.
  6. Totally failed to envision the possibility that there could be an applications like facebook, orkut and others with humongous number of users. Spring, Hibernate and more that are the rock of enterprise applications today. All that came during the time or after i completed my so called B.E Computer.
  7. Perception that all those computer science theory isn't doing any good to get the job, Only concern was how to get a decent paying job. Limited Scope of imagination.
  8. I vacillate too much. Ruby, Groovy, Flex, Scala, JavaFX but never really could come up with any little working project to boast off using all these technologies. That means i read but never act.
I know by this time you must be feeling awfully PITY on me isn't it?? I was a good student though, i worked hard on occasions, have a decent marksheet reports all my life, never had to spend money on my education always scholarships, but somehow the cake never baked the way it should have been. But to be honest there are few odd reasons for my lack of getting it right from the day one. I think it's obvious too when you are in an environment where your imagination is limited by the infrastructure and accessibility issues which every students has to suffer in our country, not to blame my beautiful country but that's the way it is. But WHATEVER, i am getting it now and i am starting to feel the zeal that is needed for being a software developer, it feels good when people use the software that you worked on. I have started doing some projects that involves some really cool stuffs, i am dying to work on projects that involves concurrency management, scalability etc. etc. I can think of few facebook application ideas but still see if i can come up with it. If not haskell i try Scala over the weekends :)

With all this being said there are few gotchas in above 80-20 rule, like i tried linux in early days of my college years i have used version control and sometimes i really act like as if i belong to 20% category.

I wonder how many of you feel the same!! thanks for reading my whimisical ideas that bothers me at times :)


Zack Curl said...

This is a neat article. Even though I would consider myself in the 20% category, it's cool to see that the majority isn't as obsessed as I am :).

Anonymous said...

I like your honesty. I think admitting you are an 80 is the first step in becoming a 20. The whole 80-20 programmer distribution thing reminds me of how the majority of people believe that they are better drivers than everyone else. Similarly, it seems most programmers think that they fall into the 20% even though they are admittedly casual about their development efforts.

Anonymous said...

I'm not so sure that one could be solely an 80 or 20. Take for example, when I'm not active socially, I'm trying to find ways to hack my satellite TV. However, when I am extremely busy with outside activities (girls, sports, etc) -- I'm pleased being an 80.

My point is that outside sources determine my level of involvement in "extracurricular software". I've always been intrigued by assembly, algorithm design, and operating systems, but - at some point I realized I enjoyed UIs, ORMs, and Design Patterns much more.

Furthermore, since when did the definition of "20%" become so damn rigid? That's bullshit IMO. You mean to tell me that the guys at 37signals aren't 20ers simply because they aren't writing mobile phone operating systems...

While I agree with you, in that "zeal" is required -- I don't condone a labeling of 80/20 as programming, as we know it today, changes VERY rapidly.

Remember Javascript circa 1995? Exactly.

Nice Post!