Hackers and Body Builders
17 Dec 2015More than two years back, I took the first step towards programming in college. I noticed that the programming community in my college was bifurcated amongst competitive programmers, the people who preferred calling each other by their codechef and spoj handles instead of their real names and hackers, some of whom were known for getting selected for the prestigious Google Summer of Code. (Very few were a part of both the groups).
Two communities
DCE Coders, a self interest group of college with the aim of sending more teams to ACM-ICPC, had many of its core members get high paying jobs in bigwigs like Amazon and Google. Thus, it had become synonymous with high salary placements. Soon, they had more students attend their classes than they could handle. Many students had no idea of what it stood for and were there either for clearing interview rounds of companies or just because their friends were there.
On the other hand it was hard to find a fellow hacker to work with. I remember my struggles to find a partner for participating in Google Cloud Developer Challenge. Many people refused to participate citing that they were focusing on “coding”.
Software development according to many was limited to web development which also only consisted of HTML, CSS and PHP. They believed that these skills were easy to attain and could be learned over a couple of days.
I was never a fan of competitive programming, and seeing the culture build up was a little sad.
Is software development really so simple? Can anyone become a good hacker in a short time? The answer is a big NO. But not many people understand this.
The analogy
In gym, you’ll generally find two types of people.
People with toned muscles, bulging chest lifting heavy weights.
Well, the truth is most of them can’t even touch their toes. Most of them won’t be able to run on a treadmill for just 5 minutes.
On the other hand there would be people who are lean but strong, muscular but flexible. Not that they don’t lift weights, but they do make sure that they stay flexible enough.
If Bruce Lee and Arnold Schwarzenegger were to be pitted against each other, who would you think would win the fight? Arnold wouldn’t even stand a chance, IMO. While he would have been dragging around weights all his life, he would be standing against a small, very strong guy, who is three times as fast as he is, a deadly killing machine, aiming for a kill.
The reason I introduced all this was because I find a similar analogy with programming.
Competitive programmers are like the former category, big, strong, heavy but don’t have much real life use of their skills. Hackers are like the latter, lean but strong and flexible enough for any real life work. While both of them lift weights(read Data Structures and Algorithms), the latter have been trained for functionality(read building things).
Why this rant
A lot of competitive programmers still disregard actual software development. Sure, competitive programming is more fun and interesting for some but at the same time it is necessary to have skill more transferable to tasks on the job.
Programming contests let you demonstrate that you’re smart and able to think quickly. Real life programming lets you demonstrate that you’re able to build things. Both are desirable.
Thanks to Arnav Gupta and Chirrag Nangia for reading draft of this.
***
If you liked this post, you can share it with your followers!