I’m working with Mapbox at the moment – it’s a great tool for bundling offline maps into your apps. I recently noticed that my RMMapView’s weren’t deallocating as expected. These map views used by Mapbox, I’m not sure if they’re open source or not. Anyway, long story short, this was leading to a memory leak and I spent about a day trying to figure out why. The fix is pretty simple, just remember to set the “showsUserLocation” flag to false when you destroy the parent view. Something like:
Good software development teams don’t need managers. The team should manage itself provided that ALL the programmers have the ability to:
complete the job, to spec and on time
communicate efficiently with other team members
In fact, I can think of only one instance of where a manager is really required and that is at the initial phase of deciding on project scope and a deadline and these tasks could really be handled by a developer with decent communication skills and/or an analyst. I probably feel this way as a result of working in organisations where there could be a manager for every two developers (this is not an exaggeration – in fact before the recession, the ratio could be even smaller).
In such companies (nay, most companies), it seems as though the less you do the more you get paid. As a relatively experienced programmer I’ve been told that I will have to take management courses if I want my salary to improve to the levels I want. But why is this? I’ve seen great developers working on projects with average managers overseeing them and yet the manager makes more money. If a developer and a manager both contribute the same to a company, who do you think gets paid more? It is, of course, the manager. The reason for this is liability. If a project doesn’t meet deadline, runs over budget or just goes to the wall then the manager is held to blame. The blame of course permeates up the management ladder so not only is the manager to blame, but his manager and so on. Tie this model with a modern environment where people are taking less and less responsibility and the result is a broken workplace.
That’s quite a broad statement, however, – some leaders take responsibility and some do not.
Compare Obama’s statement:
As president I take responsibility for a failure to restore job growth more quickly.
to Brian Cowen’s bullet dodging answers to Vincent Browne at the announcement of the IMF Bailout:
The model needs to change. I’ve worked in organisations where managers seem to exist to SOLELY be held responsible for when things go wrong.
I’ve also seen a lot of poor programmers hide underneath the protection of a team. Upon project initiation, each programmer should be given ownership of their own portion of development: if that portion doesn’t get complete or overruns, then they are 100% liable. Of course, this requires more time at project initiation as each programmer needs to agree on their deadlines. Which brings me onto my next point.
Development managers need to be programmers.
In order for each programmer to be involved in defining his own deadline, the manager needs to know whats an acceptable time estimate. A manager of mine once had no problem with me estimating that updating a HTML page would take two weeks. I did the update in about five minutes of course but another employee could take much longer if they so wished.
Just how an individual can become an IT manager without any real IT experience is beyond me. Its like expecting a construction site foreman to be able to lead a team of surgeons. We don’t need a person who is solely responsible for managing a project. An experienced technical lead, who knows what is required of the job, can be appointed at initiation and can handle any issues which arise during the development cycle. He can also lead SCRUM meetings which would facilitate the required communication between programmers.
I worked for about five years as a butcher on the meat counter in Supervalu. The “team” was mostly made up of young students who enjoyed the frosty hug of the coldroom following a night on the batter. We had an overall manager there whose job it was to organise the rota and place orders but we more or less looked after ourselves. Despite the absence of team meetings, various authoritative titles and project planning sessions, we pretty much got the job done everyday. We had our issues of course – lads falling out over whose job was what, who had the worst hangover and thus should get the first teabreak etc etc – and I’ve often seen the same issues rear their head in the software teams too. So if a team of young lads can be trusted to sort this stuff out amongst themselves then why not a grown team of developers?