The importance of proper planning before software development

The importance of proper planning before software development

Like the popular saying:

If you fail to plan, you plan to fail.

The importance of proper planning before implementation cannot be overemphasized.

What does it mean to plan?

A plan as defined by Wikipedia is a list of steps either in written or graphical form that outlines the procedures to undertake a specific task or goal. Planning is very relevant in all fields of study, not just software development. Before a building can be constructed, the architect must provide a well detailed plan or blueprint of the building. Likewise, software engineers must plan before kick-starting any form of implementation. The plan can range from functionality, requirements and purpose.

What is Software development?

Quite simply, Software development is the process of designing, crafting and writing instructions that achieves a specific task. It encompasses design, programming, testing, debugging and documentation Wikipedia. Softwares varies but basically, we have application and system softwares. Practically any idea can be converted into software. These softwares are often programmed. These programs contain instructions that are often written in computer languages such as Java, Python, C, C++ etc. programming languages

Why plan before development?

Planning before kick-starting any form of development gives you a template on how to go about achieving your objectives. A plan gives a detailed step-by-step guide of what the project entails, it's requirements, it's dependencies, it's structure, it's architecture as well as the relationship between each component of the project. Without a substantive plan, you tend to get stuck if you just proceed and start developing. Planning is one of the most essential steps in the software development process.

Algorithm and Planning

An algorithm is a step by step process of solving a problem. Once you have a specific problem, the step by step procedure to undertake in solving that task constitutes what an algorithm is. Algorithms are mostly written in human readable languages. They are not instructions that can be interpreted by a computer. Rather, they are pseudo codes that outlines the procedures to solve a well defined task. Algorithms are important in the planning process. In fact algorithms constitute almost 50% of the planning process. A look at your algorithm should give me an idea as to what the software is all about.

Ideas and planning

Necessity is the mother of invention.

Once a real life problem presents itself, software engineers and developers start brainstorming on ideas to tackle such issues using software. However, they get stuck once they don't know how to convert these ideas into reality. Mostly, the reasons for such setbacks is a lack of plan. So it begs the question: how do you plan once you have an idea? To plan, follow these steps:

  1. Take a piece of paper and pen, write out your idea in any format. It doesn't matter if it's not pretty, just write it down first.
  2. Go through what you've just written and think about it for a while. Thinking about it makes you digest your idea and gives you better insight as to what you want to achieve.
  3. Think about the requirements of this idea. Write down these requirements. It's a rough sketch. It doesn't have to be well laid out. Just write what you think is required to solve the task.
  4. After outlining the requirements, brainstorm on what tools and techniques are at your disposal or what technology is best to solve each requirement. Write down the tools. You don't have to be a master of these tools, just outline the tools, technology or techniques that's best to solve such requirements. You might need to consult your colleague, collaborator for more help if need be.
  5. Once you know the tool to use, outline the tools that you're familiar with. Compare them with those outlined in the previous step. If you have knowledge of all the tools required, then that's perfect! If not, you have maybe two options: firstly, you can decide to learn the basics of the other tools. Secondly, get a collaborator with expertise in such tools and you can work together.
  6. Create a graphical representation of each task and sub-task. This representation would show the workflow of the project. It would show how each requirement or task interacts or depends on another. You can do a rough sketch on paper.
  7. At this stage, you can modify or digitise your project workflow using any text editor or graphical softwares, some of which are outline below. At the end of this stage, you should have a complete architecture of your idea.
  8. Once you're comfortable with your plan and it's architecture, cross-check to ensure you're meeting all the requirements of your idea from stage 1. If not, add the missing requirements and update the plan.
  9. At this point, you have a draft of your idea. You can then proceed to writing algorithms for each requirement or task as well as it's sub-task. The algorithms should outline the steps to solve each requirement with any technology that you might adopt. It shouldn't be rigid. It should be flexible to accommodate any technology or programming language/technique.

What tools do I need to plan?

Really, one of the most basic tools you need is a Pen and paper/board. But for professional development, there are so many softwares built specifically to aid developers and engineers in designing well structured softwares. These softwares range from graphical to text editors. Some of them includes: Edraw, Adobe XD, Sketch, Visio etc.

Software development is a rewarding and exciting field but developing softwares requires proper planning. Proper planning gives the engineer a proper workflow of the project thereby making designing and subsequent implementation easy. Remember, planning is one of the essential steps in the software development process. A well planned software can easily be designed, developed, and maintained.

Special thanks to pngguru for the images.