You can classify programmers by whether they love OOPs based programming or functional programming… I know it’s obviously not a binary classification(though i wish it were), but let me go with it. The difference is basically on what kind of programs they like to create.. the OOPs/Object-oriented is al about state-ful objects and things they can do… alone and working together…. It’s like a marathon runner….. Starting off not with fastest pace, but a steady pace.. that can be maintained for a long run… perhaps slightly faster till you get ahead of the crowd, but the focus is on finding steady,consistent pace where you are in the zone… On contrast functional programming is a lot like sprinting/relay.. the focus is on being as fast as possible on a given course/distance..
Now any decent athelete will tell you how cross-training is important… By cross-training am referring to playing across variety…Not training weights if you are a runner, though that helps too but not as much as running in rain, snow, bare feet, matted ground, running at a steady pace.. full acceleration etc…
i am beginning to realize i prefer the relay/sprintings nowadays… But if you want to be a programmer throughout your career, you’ll eventually have to find a balance and preferred state(more like range of states) in-between… On the other hand, if you want to move into management, then you finalize on the pace you prefer and take on other management responsibilities…
Now one of my hypothesis about the popularity of OOPs is that it sets a steady,predictable pace and frees up time to take on other responsibilities..
I wonder how one goes about testing it though.. Obviously, setting up experiments spanning that length of time is going to be expensive and unlikely to happen anytime soon..
But let me try and imagine how anyone from the future could conclude this assuming they have every data about the career path of a programmar..
Before that let me put out the other requisites:
What are the alternative career paths for someone starting out as a programmer??
1. Startup founder and/or CEO
2. Venture capitalist (mostly successful startup founders, think paul graham)
3. Stay programmer
4. IT/Data/ Architect
6. IT director
7. System Administrator
Ok, i am running out of options.. update me if you think something more should be added.
Now which one of these promotes/rewards functional programming and which one of these promote/reward OOPs??
Am going to assume startups prefer/reward functional programming biased programmers..I know it’s a debatable assumption, but debate away.. am not going to join the debate*..:-)
So if am a future analyst looking at programmer careers vs the type of code(and language,and perhaps functions-to-objects ratio??) they wrote,
I would expect:
1. Majority of the startup founders(successful or not) would have been functional programmers
2. Same for VCs as they would have mostly been startup founders.. I gues, there are some programmers who joined VC firms as analysts after a MBA degree even now.. I would guess they would have preferred functional programming too..
3. Ofcourse, the ones who stay programmer are the ones that prefer OOPs.. they can build on and reuse and reuse objects and more remember the state.. and they like retaining state in their heads..
Ok.. now my thinking is going to the lizard brain mode.. will just post it for now and update later for other career choices…
Feel free to add your thoughts in comments… will try to incorporate them in the next edit…
*– because i have debated it a lot with myself and concluded that it needs one hell of a lot more empirical study before accepting either stance and am safer to bet this way.