How To Avoid Coding Yourself To Death

March 7th, 2010 by Kevin | 1 Comment | Filed in development

Did Your Boss Thank You for Coding Yourself To Death? reflects on the ever important point of overwork that seems to happen quite often in the software industry. To me experience has shown that the following points mess around with delivering software on time and increase the work load on software developers. And unfortunately, it keeps happening with projects till it feels like deja vu.

Unrealistic Estimation

One day you get an email saying, “Oh, we need features X, Y and Z in the product. We are sure you can deliver these by the end of the month as the client is expecting them. Thanks.”  While I may be exaggerating a bit, the point is that estimating and promising work you do not know about is ridiculous. Software estimation is tough as it is and the only people who can get as close as possible are the developers who will work on it. Unrealistic estimation just increases the pressure on developers and they end up overworked.

For any software project to be delivered on time, estimates have to be made by developers and estimation does require some thought(Evidence Based Scheduling).

Communication gaps

Communication between the business team and the client ought to get the requirements clear. This is not possible often because many a times the client themselves do not know clearly what they need. At other times, there is a communcation gap between the two and what is understood is not necessarily what was meant. What this means is that requirements have a possibility of change. Such communication gaps will increase the backlog on developers and they end up overworked.

To avoid this the developers can try to make sure the requirements are clarified as the project progresses. This may mean change to the already developed software but change now is better than when the product is complete. Smart developers also manage a design which is flexible enough to withstand change easily.

If you are in an offshore outsourcing model, communication between the offshore-onsite team is also important to avoid schedule slips. Resolving queries should happen as fast as possible. Different time zones can also play a role in such situations.

Rigid Development

Once developers get the requirements, they start working on creating the features in the product. “Ah”, say the developers, “We have plenty of time. Let us be cautious and make sure we get all the requirements done.” While this actually sounds quite good, the only problem is that the requirements are not stable. So you shot something but it was not the deer they wanted and you have to start over again when the requirements change (and they will in most cases). Well, back to the drawing board and it’s overwork time for you and your team because of such rigid development.

A good way to avoid this situation is to deliver as fast as possible using something like the Tracer Bullet Technique. This helps the client to test out something, clarify if it meets their requirements and provide their feedback. However care has to be taken to mention to the client that this is just an incomplete version and may contain bugs. But how do you develop the project in such a short time? You can’t. But you can perhaps deliver a few features at a time. Good developers can make this possible and ensure that they do not get overworked at the later stages of the project.

Improper Testing

The first version of your software is out so testers start testing. But there is just one tester and the poor guy is getting overworked. Oops, he just missed some cases. Everything is fine and the product is delivered to the client. One day, the client’s scouts honour, always working website just goes down. Developers are called in to find the issue on the production system which is time consuming and they are overworked. Ah, they found it but it’s an issue that could have been found in system testing.

Good testing is as important, if not more, than software development.  If the testing is improper, it delays the detection of bugs and increases the pressure of fixing them later in the project. Major bugs should be reported and fixed immediately perhaps even at the cost of restricting further development till those are fixed. Like good developers, good testers are needed to recognize that detecting the major issues at the start is a good thing for the entire team because it then reduces the chances of overwork which happens during the later stages of the project especially due to bug fixing.

 

Related Posts:

Tags:

Views Of An Offshore Software Developer

March 7th, 2010 by Kevin | 1 Comment | Filed in development

Offshore outsourcing has been the buzz during the last few years and by trends it seems that it will just keep on increasing. The basic reason for any offshore model seems to be the cost factor as offshore outsourcing significantly reduces the cost of your development cycle. There are many countries that perform a lot of their work based on the offshore model.

While I am no expert at understanding the intricacies of this business model, I can write about it from the perspective of a software developer who has worked in a few such projects.

Working opportunities

You can get to work on a lot many projects from different countries around the world. I have worked on projects from Japan, China, South Korea, Norway, Sweden, and Denmark. The US and UK are also huge providers of offshore work.

You may get an opportunity to visit the client onsite and learn from the developers there. I have visited China and Norway and it was an enjoyable experience working with the developers over there.

Face challenges

Unless you are involved in software R & D outsourcing, you will have to work on a lot many tasks which may seem mundane and repetitive. You may be involved in maintenance activities trying to fix legacy software. So you may not get to work on the latest cutting edge technologies.

You will be expected to work in day or night shifts as per the requirements. You may have to work late and on weekends whenever required with no compensation.

 

Related Posts:

Tags:

What Every Software Developer Wants

March 1st, 2010 by Kevin | 1 Comment | Filed in development

Good developers are the lifeline of any successful software organization. Here are a few things that developers want to remain content and productive when creating software.

Developers want resources

Developers Want Resources

Resources include hardware and software. Some poor developers work on a five year old system with a single 14 inch CRT monitor for GUI development!!! And if they want RAM above 1GB, they need a special request along with screen shots of why they do??? Same goes for the software required by the developers. Developers tend to enjoy playing around with the latest gadgets and software. Being in touch with the latest trends is a good thing for both the developers and the business. So provide developers with the resources that they want.

Developers want freedom from documents

Developers want freedom from documents

Documentation is a good thing and most software developers tend to put it off. But how much documentation is really important. Following process oriented methodologies tend to require lots of documentation. Considering the fact that like software the documentation needs to be updated and that it will be obsolete the moment it is written, is that large pile of documentation really necessary? If the amount of time developers put in writing documentation is more than the time they spend working on software, something seems wrong somewhere. Advice is to write documentation which will be useful to you and your customers. Not more, not less.

Developers want incentives to work

Developers want incentives to work

Developers are easily satisfied people. Incentives don’t have to be just money. Developers enjoy to work with cool software and gadgets, so provide it to them. If you are a mobile based company, purchasing an iPhone, an N900 or a Nexus to tinker around with is a good incentive for developers. Incentives can be as simple as movie tickets or coffee mugs or those cool collectibles that developers keep on their desks. While the cost of such incentives is negligible, it makes the developers happy to work. Appreciation of the work that they put in is also a good incentive that makes developers happy.

Developers want a quiet working environment

Developers want a quiet working environment

Most working environments consist of a farm cubicle where developers sit near each other. The phone is ringing, people are shouting from one end to the other, music is playing on a computer. Considering the amount of concentration that developers need to get into the zone, it is quite easy to distract them with such things. And a noisy environment directly affects their productivity. Developers want a quiet working environment where they can concentrate on their work and create high quality software.

Developers want a say in the project schedule

Developers want a say in the project schedule

Developers tend to get crabby when it comes to sticking to the project schedule. And in many cases rightly so because many a times the management creates a schedule along with the marketing team with no input from the developers. Developers are bugged by this method to no end. The result in most cases is that developers tend to get overworked and when that happens you get poor quality software. Fixing such software will take time any ways and your schedule will automatically be extended. So instead of that isn’t it better to consult the developers and get as much a realistic schedule as possible?

 

Related Posts:

Tags: