Tuesday, August 11, 2015

On Managing

Managing in general has its responsibilities and some of those will be topics further in this article. Software engineering is unique in that the manager has to do just as much work as the people he/she is managing. A software manager has the job of a software engineer but with added meetings and responsibility. This makes time management critical. Much of the rest of this article is not about how to create the ideal process or algorithm to ensure optimal performance. Management is about hacking around the bugs and at least maintain order in your projects and code. Management is something necessary for productive engineering but its not pretty and its kind of opposite to the mentality of good engineering. The following advice might not be optimal or elegant but its functional and for the most part gets the job done.

When you become the software manager you get to make decisions about how the software is made. You do not get to make decisions on what what software is made. Features come from the business around the engineering team this includes marketing, sales, and services. You will learn more about these request in the many meetings you will be attending to represent the engineering side of the project/company. There may be other things out of your control that can effect your engineering decisions such as costs, deadlines, legacy requirements, or amount of data you receive about a project before starting it. Notice the trends around the feature requests made, what seems to be important or get the most attention, where do assets originate and in what time line are they presented vs the time a feature is placed in queue. You can save yourself a lot of frustration accepting the imperfections in any of these processes and fill in the gaps yourself. Eventually the blame will be on your head if something goes wrong in engineering so as the manager you should be doing everything to make sure engineering is not the problem.

As a manager you will probably be expected to interact with many more people. You might not like all these people ,and that sucks, but that's the role you placed yourself in. The most important thing you need to do about personal relationships as a manager is make sure your team respects you. Software creation can be very difficult and it awful to work with people who dont want you on the team. It can be very draining on the entire process and might get you fired if it becomes visible to the rest of the company. For the most part respect comes down to your team thinking that you work as hard as them. Do the following:

  • 1 Be the 1st or 2nd one to arrive. Put in as much time and try to be the most available for help. You cant manage if you are not there and for the most part being a software manager is just being a go to resource.
  • 2 Notice and study the technologies that your colleagues are studying. Managers are not always the most informative but you should strive to be one of the most informative on your team. Being able to speak to your team members about their favorite tech choices will make others feel more confident about following your tech choices and will make you a better engineer overall.
  • 3 As much as bad blood can spill out of your team good karma can spill in. Try to have a good report with others in the company. Hopefully other managers. These social capabilities have not been the strongest among engineers. If you can present yourself as obtaining this quality it will further support the idea that you should be the manager of your team.

When you get to finally start implementing as a manager software engineering can be really fun. You get to design your foundation and play with the tech that you think is interesting and best for your problems. Its like playing some kind of virtual big kids legos. Yet your desires are not always possible in this area. Things like partnerships and budgets can effect certain tech being used. The faster you learn to keep your code organized in such an environment the faster you get back to enjoying your job. Learn to abstract away the bad keep your code robust so that when the day comes you can swap out that cheap custom api you hacked together for the top of the shelf web service that will scale with your business.

For the most part my advice boils down to "look good." Simple but very different from what engineers focus on. As engineers we like to focus on what matters and that is productivity not vanity or politics. Hence the sleeping pods and company supplied food. When you become a manager that is something you still have to care about, but if you are a good manager then you have a good team, and if you have a good team then you can delegate code productivity to your team members. Your other focus is to make sure you represent the engineering team well and accurately to the rest of the company. You are the face of the brains as software manager. Putting on a good face while still maintaining a productive team will ensure you success in your role.

No comments:

Post a Comment