I recently got drawn into a bit of a debate on a LinkedIn discussion group about whether a Development Manager should be spending time writing code or not. This is something I feel quite strongly about and the following is a heavily reworked version of my response.
If I asked a group of sales managers whether a head of sales should still be involved in some selling, I think most of them would say yes. Not full time of course, managing things does take time, but nobody thinks its strange for a head of sales to still do some sales meetings and prepare a few of the most important proposals. Same goes for Law, Medicine, Architecture, Project Management, Civil Engineering, Advertising, Fashion Design, Cooking and Teaching. But a Development Manager who writes the odd bit of code? Surely he/she needs to learn to let go!
Why is this? My theory is that it stems from a polarisation of the development and non-development IT cultures.
Most new developers undervalue the non-coding parts of the development life cycle like analysis, testing and support. Probably like many freshly trained young professionals they view their supporting functions as (a) optional and (b) something they could do themselves if they felt so inclined. Unlike other industries though, this never really gets beaten out of them. Which leads to a strong developer sub-culture and removes incentives to participate in and ultimately master the usual political/interpersonal shenanigans that exist in any workplace. They simply choose not to participate, instead aiming to exercise influence by ignoring that world and just building what they know to be the right thing anyway.
For their part, the rest of the IT industry often seems happy to let the developers run their own affairs without much of a challenge. It is very rare to see a non-developer attempt to argue with a developer on their own turf. Very few non-developers make any attempt to learn the basics of programming, read up on the fundamental principles or apply critical thinking to interrogate a programmer’s assertions. The rest of the industry give developers an easy ride and they shouldn’t. Ultimately both sides are equally culpable for allowing these two separate IT cultures to exist.
I don’t believe for a second that developers are not capable of the kinds of communication, persuasion and manipulation that it takes to progress into management. Very few of the developers I’ve worked with are truly autistic or at all confused about how to operate in political work environment they just look down on it. Similarly, I hate the almost religious aversion that many non-developers have towards writing anything remotely like code. I’ve seen intelligent people who can design processes, think logically and make Excel do amazing things be presented with the most straight forward of SQL queries and insist point blank they aren’t cut out for coding and therefore can’t (i.e. won’t) do it. It makes me want to cry sometimes.
It’s this polarisation of cultures that leads to so few developers being asked to manage their teams and so few of those that are asked accepting the job long term. With so many non-developers managing developers it’s little wonder they seek to define the role as predominantly non-technical and purely “managerial”.
This is a shame, because:
- Many developers would benefit from some actual hands on management (they might not enjoy it at first though). They would be forced to learn. Their performance would be more accurately assessed and their design choices would be regularly challenged.
- Many development teams would benefit if someone with a bit of clout in the business spent some time in the trenches and saw what was happening.
- Many managers would benefit from having coding skills. In fact most profession people would benefit from having some coding skills. Coding is not magic, it’s like selling or design or being able to chair a meeting really well, if you’ve got it in your armoury you’ll be more productive.
My current role combines some technical architecture and customer consulting, but even just looking at the managerial parts, I use coding to help me get everything done.
- Written a greasemonkey script to make our time keeping and reporting app easier for me to use.
- Learnt how to use the TFS power tools command line app and PowerShell’s XML commands to analyse and report on our progress.
- Used lots of regexs to search for things in documents
- Used lots of Excel functions to build planning ‘apps’ in Excel.
In conclusion, if you’re a developer I recommend you don’t opt out of departmental politics. People are only a bit less predictable/knowable than complex systems but they are much more rewarding to hack. If you’re a manager in charge of developers I think you owe it to your team to get stuck in and really manage what they’re up to. Finally, if you’re just someone who uses computers for a living, learn to code. You’re sitting in front of one of the most powerful devices humanity has ever constructed, you’ll save yourself so much time!
I'd love to meet you on twitter here.