Tuesday, July 12, 2011

Engineering Management

"the first myth of management is that it exists" Robert Heller.

I recently came across this (http://www.joelonsoftware.com/items/2006/08/07.html) post and I couldn't agree more. The whole idea behind effective management of software engineers is motivation and education. Engineers must be motivated about the project they are working on and have adequate domain knowledge to get the job done properly.

It is often the case that engineering is not consulted during the early stages of a project or that engineering estimates do not fit the financial model. This leads to milestones which are inconsistent with reality and as a result, sometimes we ask our engineers to do the impossible. This is OK if we can handle it. If, however, at the end of the project we overlook the fact that we were asking the impossible in the first place then we can demotivate the troops. Troop demotivation is one of the first signs of ineffective management. The second is lack of education.

If an engineer understands the bigger picture when working on a project, they are less likely to produce semantic flaws. Proper education of the engineer on domain specific knowledge can improve software quality, though I doubt there are any definitive studies to support this conclusion. Constantly educating engineers on the tools they use to ply their trade and challenging them to find better ones will produce better code. Again, I doubt this is quantifiable.

Finally, motivation comes from within so all the engineering manager can do is to challenge the engineers with things that can't be done. Kind of to pique their interest in the task at hand and the concepts necessary to efficiently solve the problem. Software is a beautiful art that way; sometimes while solving a problem you can be learning a new concept.