We need rockstar programmers
I often hear this sentence: “We don’t need rockstar programmers”.
Most of “technical” managers or developers are saying team spirit is stronger than programming skills. I don’t agree with that philosophy. By rockstar programmer, I mean someone who knows in depth abstract concepts, and understand nearly all langage/framework subtleties.
For me, difference with lead dev resides in soft skills.
My point is a rockstar developer is more able to code abstractions than a communicant. Abstractions in programming are necessary: without them, we cannot think about absolute truth.
For instance, creating monads help developpers compose functions in a context. Composition is the essence of functionnal programming. Functional programming is a powerful concept allows us writing sustainable and scalable programs. The more you abstract things, the less entropy you have in a program. The more lines you write, the more entropy you get. Entropy involves chaos, and chaos is non deterministic. Who wants a chaotic application for his business ?
Building abstractions is like defining predicates. These predicates are, by definition, always true. This is like defining laws on an abstraction, and these laws can be applied in various fields: advertising, energy or e-commerce. You can define rules defining a session for an e-commerce website as well as an advertising system.
If you can define something that is always true, you can compose things that are always true, and your program becomes stronger than if it’s written by hundred of unreadable lines.
Rockstar programmers are call like that because they write abstract structures. Of course, it’s easier saying we don’t need rockstar than saying I don’t understand this piece of code.
Of course, I’m not saying soft skills are useless, but it’s not a reason for hiding incompetence behind that.
