I haven't kept the sacred "blog at least once a month" pace since last December because of my move to Tokyo (And I still don't have internet at home, arghh). However, here's my comeback
with a classical post about the developer vs project manager divide. I decided that an interview would be a better form of post than a long monolog and I really enjoyed doing it (beside I don't have to be the one to be smart!). You can find many more posts on the subject, including this recent one that had lots of comments, even if it's more on the lines of "everything sucks".
But I have more posts coming up:
- StrengthFinder 2.0
- Pattern matching with Ruby
- Net pearls
An interview for a change
I have had comments by Teki on my "Interesting software vs plumbing" post. Those comments brought us to the subject of programmer's evolution: starting from being a self-satisfied geek, why would you become a project manager?
Wanting to write a few lines on the subject, I preferred to go for an interview with one of the best software professionals I've came in touch with, my friend Olivier. [some of my comment are in brackets]
me> Olivier, it is sometimes said that a programmer should evolve to a manager position to get a satisfying job in terms of career (recognition, money, autonomy, employment), what do you think about that?
him> I don't agree! A good programmer doesn't necessarily make a good project manager. Becoming a project manager is not the only possible evolution. Technical expertise is also amongst the possibilities. It is true that most of the time, the management positions are the only ones recognized socially and financially. But It doesn't have to be that way. In my previous job, I encouraged the HR department to setup 2 different "ladders" in the company.
By the way, as a recruiter, I have a very, very bad feeling, when a programmer comes to me and says: "Hey, I want to be a project manager in 2 or 3 years". Programmer is a real job, not a transition.
me> Do you think that there could be more than one "expertise ladder"?
him> I don't know, this "ladder" thing is essentially a social and monetary issue. Most people need social recognition and it is often correlated to salary (at least in France).
me> Is it possible to be a good programmer as well as a good project manager?
him> I hope so! [me> Olivier is both ;-)]
me> Is it seldom to be good at both? Can it be learned?
him> I think it can be learned. The real difference between Mr. Universe and me is not the amount of muscle, but essentially the time spent training. Training sufficiently may not make me Mr. Universe but it may still build lots of muscles. The only question is: will I enjoy the training, am I willing to do all necessary efforts?
me> Is it possible to be a good manager without having been/being a programmer?
him> Yes, I think so. I've worked with a very good project manager, who was not a programmer at all. However, he had a real respect for my expertise and trusted my judgement. Respect is a key point in our field. It is also true for programmers who are sometimes capable of utter pretention: try a newbie message on the linux.fr mailing list for instance,...
[me> I sometimes wonder if it is possible to really have a deep understanding of programmers and software without having being one yourself]
me> Will programmers take over the world :-) and be rewarded as they should? What should they do to achieve this?
him> I don't think that any "world movement" [me> or certification program,...] can achieve that. Local action is prevalent, relentless communication is my only tool. I try to communicate whenever possible: to programmers, QA, directors, sales, consultants. Communication has to be relentless to make people realize the value of programmers.
However, the recognition of the importance of programmers will continue to rise as the upper management realizes their creativity is needed and how much turnover affects the company.
me> Why is programmers perceived added value so low?
him> Their added value? Is it really so low? Yes, perceptions can be very far from reality: some people think that programming is an obscure task, reserved for some kind of mutants. Other ones (sometimes the same but at different moments!), think that programming is easy because they use Word everyday and find it intuitive, easy to use. Or, they have programmed a few Excel macros and feel it is not such a big deal. But how much complexity is hidden behind a good software? It is so hard to make it simple!
Anyway, this is unfortunately the reality for most engineers I know, from mechanical to electricians.
me> Do you think it is a Taylorist / scientist vs agile / lean issue ? What I mean is: do you think that a Taylorist view of software leads to a natural division of Commanders / Executers while an agile view of software makes it more like a collaborative / creative process ? How do you see the future to that respect?
him> Taylorism doesn't apply well to software programming. It is fundamentally a creative activity and an undeterministic process. The V-Cycle was such a big misunderstanding. It has unfortunately spread through most of development standards from administrations to banks. Driving a car is a much better analogy: you constantly have to adjust your direction, your speed and manage obstacles as they occur.
Anyway, I don't think that any agile / lean methodology will drastically change things. Whatever has been said on the subject, there are not enough total project failures. I have not seen one around me in my whole career. [me> Lucky guy, I have seen quite a few, from medium to big].
Still it is so common to expect obligation of results and not obligation of means. Can you write a best-seller in 3 months? Maybe you can write "something" in 3 months, maybe you can write a best-seller in some years, but it takes a genius to write a best-seller in 3 months. How many programming Mozarts can write a brilliant symphony for each project they start?
me> Is there a question that you would have liked to answer ;-) ?
him> The question you ask at the beginning leads us to: what does it take to be a good programmer, a good manager? Is there an universal definition of those 2 roles, or only local ones? Whatever the answer, having the 2 activities being in conflict is always a sign of a big underlying problem: lack of respect,...