4.1 General Development Tips

 

Know the 80/20 rule

The 80/20 rule states that 80% of the results come from 20% of the causes, and 20% of the results come from 80% of the causes. This rule is also known as the Pareto principle.

If you use this principle during material study, you can achieve 80% of the grade from 20% of the study time...

There are many examples to this rule, here are 2 that relates to development:

  • 80% of the work takes 20% of the work time.

    20% of the work takes 80% of the work time.

    This means that when you have done 80% of the work, you still have 80% of the work time ahead!

  • 80% of the code is running 20% of the runtime.

    20% of the code is running 80% of the runtime.

    This means that a small part of the code is running most of the time, and the bigger part of the code is running seldom.

You should not assume that the project progress is linear.

Assume problems will happen

Murphy's law states that is something can go wrong - it will.

Unfortunately, this law applies to development process.

For example, lets assume a development process that is made of 10 stages or tasks. The probability to fail in a single task is 5% (or the probability to succeed is 95%). This is rather small chance to fail. But what will happen, when we do all the 10 tasks?

The probability to complete all the tasks without problems is only 0.9510=60% !!!

This means that we have a probability of 40% to fail. This is a big chance to fail.

Remember that we need to do all the tasks in order to finish the development process.

If one task fails, we can't complete the development. Furthermore, usually the tasks have dependencies, so we have to do them serially.

Get feedback to your work

During the development process it may be a good idea to get feedback on the plans and results of your work. You can get the feedback from the following sources:

  • Project manage.
  • Team leader.
  • Team mates.
  • Testing man.
  • Marketing man.
  • The customer of the product.

The feedback allows you to fix problems quickly.

There are several types of bad feedback:

  • Weak feedback - this is the usual case. You don't get enough feedback about your work, usually because the guy who should give it to you is busy with something else that is more important to him (not necessarily the company).
  • Strong feedback - you can't progress with your work, because you are continuously disturbed with question, requirement changes and tasks, or just need to send mail and status reports all the time.
  • Asynchronous feedback - the feedback does not come at the time that you need it. You need to consult with the customer, but he is unavailable or you get feedback when you are engaged in the middle of the task.
  • Bad quality feedback - is not specific and vague, so you have to guess the intension of the person who gave you the feedback (and run).
  • Misleading feedback - this is the worst kind, usually generated from bad understanding of the system and its limitations or bad estimation of the time needed to develop the changes.

Consult other people

Don't limit yourself to your own knowledge, you can learn from other people's experience.

You can do better job with less time if you ask your boss, team mates, friends and forum posts for their opinion about design, implementation and debug problems that you encounter during development.

Do not overuse this tip, since other people's time is a limited resource.

Free development bottlenecks

Bottleneck is a stage in the development process, that delay the end of development.

The bottleneck may change during development.

When a single developer is working according to the waterfall development model, the current development stage is the current bottleneck - requirement, specification, design, coding, testing.

In reality the situation is more complex. You may find yourself many times waiting for another person or resource to be freed.

For example, if next month you will need to use a specific tool, that you need to purchase. It will be a good idea to order it now and not when you need it, because it may take several days to get it.

Some good bottlenecks handling habits:

  • Plan ahead identify and take care of future bottlenecks.
  • Give high priority to tasks that need to use other people or resources. This will help since people and resources tend to be unavailable when you need them.
  • Help someone who needs you. Many people tend to concentrate on their own tasks and neglect other project members tasks.
  • Fix bugs when you find them. When you still remember where and how to fix the bug.

Start development ASAP

Usually if you start development earlier, you will finish earlier - if you can avoid unnecessary additional features.

Starting development as soon as possible, will reveal hidden problems that might cause delays. This will allow handling the problems earlier.

You don't necessarily need to wait for the management approval order.

Starting early will reduce your schedule pressures.

Be in shape

Good health condition can enhance your mental skills.

You can do several things to achieve this:

  • Get adequate sleep - at least 7-8 hours.
  • Eat breakfast in the morning.
  • Do moderate exercise.
  • Eat healthy food.
  • Avoid overweight.
  • Avoid stress.
  • Sit on a good chair.

Be updated with new technology development

Technology advance constantly forward. New development platforms and new development methods and technologies are introduced. In order to avoid reduction of your professional level, you should be updated with new technologies and lean new development methods.

New development platforms (hardware and software) can offer:

  • Faster development time.
  • Faster program execution time.
  • More reliable product.
  • Cheaper development process.
  • Better product.
  • Better inter products integration.

If we look back, we can remember some major developments:

  • C language evolved to C++, which evolved to Java and C#.
  • Procedural programming evolved to object oriented programming.
  • Window API programming was replaced by MFC classes, which were replaced by .NET framework.

How can we learn new technologies?

  • Read books.
  • Read professional magazines.
  • Attend professional course.
  • Read newsgroups.

Red queen race: "it takes all the running you can do, to keep in in the same place" (Alice in Wonderland).

This means that if you stop learning new things, your professional level will slowly decrease.

Avoid working overtime

The most common solution to project delay is to stay late and work overtime. This is a poor habit that usually overused by the management. The team leader usually thinks that if the team will work late every day, he will finish the tasks earlier and give added value to the organization by using the employees better. The team leader will also appear to upper management as a hard working guy. Actually working late hours usually give poor results, because most people can't work late without lowering their productivity. If you double your working hours it will not take you half of the time to finish the work:

  • double hours != double production.
  • Work wise not hard.
  • You can run very fast, but if you run to the wrong direction, you will not get to the place you want to go.
  • Working hard usually masks bad working habits.

Only in rare cases, it may be ok to stay overtime to solve an urgent problem.

Iterative development process

Waterfall development model assumes sequential development process: requirement analysis, design, implementation and testing. When each stage ends the next stage begins, without turning back.

In reality this model can not be used, since many times we have to go back to previous stages.

More realistic development model is the iterative or spiral model. This model consists iteratively advancing through the development stages, while refining each stage. Each stage involves expansion stage while considering all the possibilities and focusing stage while choosing the right path.

Constant improvement of development process

During development you will learn new tricks and habits that will make your life easier. These skills will be your personal toolbox.

Avoid skipping development stages

It is common practice among managers and developers, who want to accelerate the development process, to skip development stages in order to deliver the product early.

Actually this practice is self fraud, since skipping development stages can only delay product delivery. The development process has several stages:

  • Requirement analysis
  • Specification.
  • Design
  • Implementation and debugging
  • Testing

When we choose to skip one of the development stages, we risk with late changes:

  • Requirements changes
  • Specification changes.
  • Design changes (redesign).
  • Implementation changes.

Each high level stage change will cause lower level changes. For example requirements change will cause specification, design and implementation change. This is a very big and time consuming risk, we should avoid. 

Avoid switching development tasks

During work, the developer is required to perform many development tasks.

Many times the developer is required to stop working on one task and start working on another development task. This task switch has a hidden overhead - the time that is needed to go back and resume the first task is wasted. This overhead time might be found more significant while task switch frequency grows.

This tip might contradict the free development bottlenecks tip, so an appropriate optimal balance should be found. This is the same principle of operating system tasks that should get optimal tick time, that balance between CPU efficiency and response time.

Don't compromise on work quality

 (avoid quality reduction to achieve results sooner - hard deadlines can delay the project).

A bad common habit in the development world is to reduce the quality of the work, in order to finish early. For example skipping the specification document, design document and testing. This poor habit is usually used when the project is late. The usual outcome is that the project will be more delayed! Usually there is no tradeoff between quality and finishing the project sooner. If the quality is high, the project will be finished sooner.

This is the reason why non realistic hard deadlines usually cause the project to be more late.

 

Write how to improve this page

PROGRAMMING TIPS
RAPID TABLES