Project Planning
This blog post is by no means an instruction manual on how to plan a project. It is just the way I go about planning a project and why.
Step One: Requirements Gathering
Don't Waste Time
Once you have been given a brief or a concept for a project or piece of work it is then on you to gather the requirements. This is the most important step in the project planning process as it sets the foundation for the rest of the project. If you then start planning and developing based off of incomplete or incorrect requirements, you risk wasting time and resources on features that don't meet the needs of the end user, and the further you get without realizing the more work has been done for nothing.
What are the Requirements
Note: client refers to the person or company who has assigned you the project. If it is a personal project of your own I would still go through the planning process and act as the client.
The requirements of a project are not just what the client has asked you for, but also technical, time, financial, legal, ethical and organizational. Some of these may be given to you but more often they are not and it is up to you or your team find these out yourselves.
When gathering requirements, it's essential to think beyond just the surface-level ask. The client might tell you they want a website, but what they really need is a solution that fits within their budget, complies with data protection laws, integrates with their existing systems, and can be delivered before their product launch.
Requirements: Time
When is the deadline? Is it a hard deadline or a soft one? Have you put time aside for testing? Are you using the agile life cycle? These are all questions that are to do with the timing aspect of the requirements.
Make sure you have a clear understanding of your development life cycle, with this you can set out sprints or your own timing to get the project completed in the given timeline.
Requirements: Technical
The technical requirements encompass the hardware, software, and infrastructure needed to support the project. They should include specifications for servers, networks, databases, programming languages, frameworks, and tools. In short it is the literal aspect of creating the project solution.
Requirements: Financial
Sometimes businesses will provide a budget and sometimes they will ask for you to come up with a proposal for them but either way it is important for you to understand the financial constraints of your project.
If it is a low or no budget solution you will want to look into open source software and even if you have a sizable budget sometimes open source is still an viable option.
In general if I come across software that I like for being open source, performant, small or other reasons I will save it to a list with tags so later if i'm looking for a new database I can just search for for the database tag and see my options I know.
Requirements: Legal
Legality is an absolutely crucial aspect of any project. It is important to understand the legal implications of your project, including any potential liability or regulatory requirements as if you break a law or a condition of something you could be hit with a severe fine or shut down entirely.
A couple of tips:
- Check the licenses of the software you are using
- Check expiry dates of software and licenses
- Do not use copyrighted media
- Check your firms legal policies
Requirements: Organizational
These are more related to the brand and image of the organization the project is for, making sure it is aligned with the organizations values and goals.
Something else to consider is the client may be a non-technical person or team that doesn't fully understand the technical difficulties of a problem so it is important to communicate in an effective but less technical manor, unless the client is more equipped to understand.
Step Two: Concept
Concept the project out, this includes planning from a high level, wire framing, designing with iterations and feedback if you can get it. Come up with ideas within your head and that will help you when you come to formalising them on paper/computer.
Come up with ideas for a feature to start planning the requirements and then you can put them together like Lego blocks. E.G. if you need live updates you can start thinking about implementing that via websockets or server side events or some other way.
Step Three: Development Cycle
The development cycle will actually help you stage your solution so you are not focusing on it all at once. This is where you will break down your project into smaller tasks and assign them to team members or yourself. You can use tools like Trello or Asana to manage your tasks.
Step Four: Testing
Include testing within the planning process. This can be done through unit tests, integration tests, and user acceptance tests. Make sure to plan for testing at each stage of the development cycle.
UART Protocol Learning Nginx