Rob Garrett - Blogs

Welcome to Rob Garrett - Blogs Sign in | Join | Help
in Search
Google

Software/Technology Discussion

Software and Technology Tid-bits

How to manage projects and developers in the software development business

I recently posted an article about getting ahead in the software development business. The post focused on some key ideas to get ahead as a software developer in the current industrial climate, from the employees stand point. According to my weblog stats, my post has sparked some interest. I received an interesting comment from Seun Osewa, who suggested that I write a post concerning views from the other side - the manager's stand point. During my 12 years of service in the software field I have had some experience managing developers, and of course I've been managed by lots of different managers to know good from bad. So, below are some suggestions for managers of software developers...
  • Never Micro-manage - I once worked for a CEO who would meet with me 3-4 times a day for an hour or two at a time, when not in meetings he would come and watch me work in my office.  He could never understand why I had trouble-developing software.  Micro-management tells your staff that you do not trust them to do a god job; it also severely hinders progress with the constant interruption of workflow.

  • Responsibility doesn't roll down hill - Many managers believe in the tiered organizational structure: The CEO sits at the top, and then comes the upper management, project managers, and finally developers.  This concept usually dictates that the CEO and management level employees stipulate the work for the project managers and developers.  Project managers’ figure out the plan for the project and the developers construct it.  The only snag is that management typically does not have a faintest clue about what is involved with software development; they only understand business and money.  Likewise, developers do not always know about the latest business deals or the financial situation of the company to determine the best software to engineer.  It is the job of the project manager to sit in the middle, with knowledge of both sides, and determine how to make a product best using the talent of the developers whilst staying in budget and within time line.  To be affective in this position project manager should be prepared to listen to both sides.  Sadly, too many project managers shift the blame when it comes to responsibility, leaving the developers with the task of generating software in an unrealistic time with stupendous constraints, and limited understanding of the expected solution.

  • Have a vision of the solution - Some would argue that that solution vision is the responsibility of the architect; others say it is up to the PM, in most cases these two roles are satisfied by the same person.  Whatever the situation the person whom delegates work to software developers should have an understanding of how the finished product should work.  Developers should not have to determine vision.  In most cases, will each developer have a different idea and over complicate the problem to make use of new technology.  This does not mean that the view of the developers should be discounted, just considered as a view, not relied upon.

  • Getting requirements from management is like getting blood from a stone - Management (sometimes the client) won't necessarily know what they want in a software product, just that it should do everything, continue to do everything in the future and cost relatively nothing.  The PM should work closely with management/client to establish a base set of requirements.  Requirements are the basis for software developers to perform their work and a necessity in any software development project.

  • Be accountable - Most project managers have no issues holding a developer accountable for the estimates and work they provide.  Developers should expect no less from their PM.  A strong manager who comes through on promise, turns up to scheduled meetings, and takes responsibility for a late project or project gone bad will gain the most respect from his or her peers.

  • Reward good work as well as reprimand for bad work - Software developers are people with feelings (rumor has it), they like to receive compliments.  Saying "well done" occasionally costs nothing, and will often inspire an individual to work just as hard on the next task or project.

  • People have lives - It is a known fact that die-hard developers like to burn the midnight oil in front of a computer trying to solve a development problem.  Never exploit this fact.  Any developer that routinely works more than 50 hours every week will most likely burn out and end up leaving the project for another with less hours and more pay.  If a developer is asked to work a weekend or late evening once in a while he or she will most likely oblige, but, ask them to work late every night and every weekend (especially if no overtime exists)  and they'll start resenting the fact that they have no free time for personal pursuits.

  • Manage staff expertise - Developers come in all different flavors, some good, some bad and some extraordinarily brilliant (I will let you decide which I am).  The trick is to manage a development team and level expertise.  A team with one expert and remainder bad will result in the project failing because the expert will get tired of being a crutch for the poor performers.  On the other hand, a team consisting of only experts is a hindrance because no one wants to work on the mundane jobs.  The trick is to balance the team to utilize talent best, and match interest level.

  • Have a plan - A good development plan (Gantt charts are best in my experience) will resolve any curiosity from developers.  Getting buy-in from all involved is important.  It is no good asking completion of software from developers if they do not believe in their ability to meet the objective.  Commitment upfront also makes it easy to consult a developer when they fail to meet a deadline.

  • Stay in contact - Always aim to be reachable by your team and encourage them to do the same.  During development questions will arise, in which the answers are not always obvious from the requirements.  Developers should be able to get clarification on issues sooner rather than later to avoid developing unnecessary software.  Avoid calling team members outside of office hours unless the staff member has given permission to do so.

  • Always be honest - Never keep your team in the dark, if there is important information in the company that affects the project or employment status, the team should know about it.  The exception to this rule is any information that requires clearance, is not project related, or divulging of information that would violate the employee/employer relationship agreement.
For the record: The above information is suggestive and is in no way a bad reflection of my current project manager/employer's abilities. The information stipulated above is based on previous experience throughout my software career.
Share this post: Email it! | bookmark it! | digg it! | reddit!
Published Saturday, March 05, 2005 10:01 PM by Rob Garrett

Comment Notification

If you would like to receive an email when updates are made to this post, please register here

Subscribe to this post's comments using RSS

Comments

 

Seun Osewa said:

I'll keep that in mind for a time when I'll have people working "under" me. Nice update to the 'boss is always right' post :-P
March 14, 2005 2:59 PM
 

Jay D said:

Hi
Article is all good . But what if the apples in team are really below sea level and we have fixed bid project with tight deadlines ...

Is there a way to push them upto - thinking level - undertand the way ti test the application etc....
March 21, 2005 3:37 AM

Leave a Comment

(required) 
(optional)
(required) 
Submit

Blurb


Head Shot
Rob Garrett is a British Expat living in Maryland USA. Rob is a trained software engineer and experienced in Windows .NET development.

Rob enjoys listening to Rock music, posting to blogs, driving in the country with the sunroof open, beer (not in conjunction with country driving) and spending time with his family.

This Blog

Syndication

Powered by Community Server, by Telligent Systems