Translate

Tuesday 2 April 2013

Project Delivery Crisis: Software developer issue with irrational expectation

Project delivery is important  issue that define the quality of service of a software vendor. Keeping good coordination and developers morale is prominent since they are the heartbeat of project delivery. No matter how many resources do you have, how good your managers are, if you cannot make your developers in good morale and distribute workload to its appropriate working line, then your project is considered failed before it even done. High turn over in IT industry is normally accepted, but if at the same year there are more than 10 developers moving out, it might be an indication of something miss in project management.

Common breakdown in the development department are Project Manager, System Analysts, and Developer. At the same time, these developers may be entitled as Software Engineer which role is analyzing solution to be implemented into codes by breaking down the big concept into smaller fractures so that it can be easy to do and understood before it is written as code. System Analysts are supposed to provide system requirements, sets of logic and rules, and define the standards for software development being tailored for customers. Project Managers are dealing with clients, coordinating project progress and resolving problems that occur in development area that may affect clients satisfactory and company revenue.

Do you wonder where is the missing point? it was the dualism of software engineer and somehow project manager do not manage rational expectation for project delivery. Either the PM want to keep his record good and clean, or want money comes faster without considering how complex the project will be. System Analyst cannot do anything due to pressure from top level, and just create requirements, specifications, and task timeline without buffer time. At the end, It's developer who are frustrated by pressure from all around, developer is expected to breakdown the requirements and specification into coding planning as well as implement it into code. This requires extra times and efforts, but management seems do not want to tolerance this extra time. So whenever bugs/error occur the most first person to point is developer. Bug/Error is not always come from developer side, it sometimes come from not rational project delivery expectation that impact the whole software development life cycle.

Keeping good morale of developer is simple, it is like trading with social tolerance. Company want developer to work full time for them, and keep up with the tight deadline schedule whenever project plan is not executed well as expected, then special rewards must be given without being hold. It is very disappointing if you have worked hard but your reward is being hold until next year. Software vendor does not earn money from customer, but they earn money from the sweat of developers. What if those developer who hold critical module stopped working like a jammed machine? throw that jammed machine and acquire a new one? One should remember that software engineer is human, not robot. New guys may come, but will takes another learning curve.

To cope with this crisis, we must think the opposite from bottom to top. CEO must aware that their power is their human resource, which is their Software Development Department hold the biggest stake. Software Development consists of three main working line, they are requirements gathering, coding, and testing. Later in it may be extended into implementation and integration, but that is another thing. Make the application done is something, and deliver the project done is good thing. Here are best solution in my opinion to cope with this software developer crisis:


  1. Clear and complete requirements: In tight schedule there may be hard to provide fully completed functional specification and requirements, but to make software developer life easier and faster, system analysts must give a simplified technical documents that provides brief description and workflow of the project as well as the module and processes, technical breakdown that include a standard UML diagram from use cases, actors, module and classes, as well as sets of standards and rules for this specific project. Make it done first, sent it to software developer, then continue doing client oriented documents. 
  2. Use generalization as much as possible: It is very useful and fastest strategy to cope with tight schedule, but to find out which one and modules can use generalization, this must be either comes from System Analysts or Software Developer. As mentioned at the first number, It should be part of system analysts because software developer must implement the code as fast as possible with less mistakes and less time.
  3. Special rewards and no blaming: No one is perfect, but also to boost morale, rewards is required. Since irrational project delivery is priority, rewards must be given respectively after the project done, regardless of it is delivered or not. why? because if project cannot be delivered well, either the problem is on development side or management side. but with the time given so irrational, then it is management failure, period. Do not blame development guys (analysts, engineers, and tester) when it fails, ask yourself why plan failed. It's better to encourage rather than blaming and blind-forcing to finish this task. You don't want to lose your development assets after the project's done, do you?
  4. Maintain client requirements: somehow, following what clients wants can ruin the whole project development. It is best to keep what already agreed and signed at the first requirement study, and if there are any change requests or additional features, deliver it on next phase/patch. So at least, project can be delivered first without mess, and be ready for patches and next phase. you cannot accept all requests to be delivered within the same timeline without having extended development time due to side-effect . 
When project delivery has come into critical stage, company must sacrifice more costs for keeping development team morale and wills boosted and do remember to respect whatever have been done as a team. Because if projects done beautifully, the words and awareness will spreads out affecting many potential customers. It is a bargain, to persuade people to work not in normal time and pressure, then compensation is required. If having three line of development is not enough, then consider having Business Analysts line to study user business model, business requirements, and let the System Analysts to do more technical analysis as it is supposed to be. 

2 comments: