Building things is a skill.
The more you do it - the more you get better at it.
But building software seems like such a multi-faceted thing - how do we even get started practising?
Let’s break down first the tasks involved in building software products.
Research
Planning
Coding
Testing
As you can see, writing code is just one step. Each of these steps you need to practice with dedicated effort to grow.
Let’s go through them one by one.
Research
Anytime you start working on a project, you need to do research.
Now, your organization may restrict you from participating in certain steps of the research phase (Business, Design, Customer Interviews, etc) but still, it makes sense to research the topics on your own and understand the why behind everything.
Research is a huge topic and certainly not simple - but it is an essential step towards becoming a better engineer.
How do you practice this?
Just google, read books on the topic and speak to people who have done it before.
Take notes.
Summarize the notes into a blog post (Feel free to send me a draft if you want me to publish :P )
Planning
Planning is another vital step - normally you won’t proceed with building something unless you can communicate clearly with your peers what it is you are building and are able to clear out significant risks beforehand.
How do you practice this?
Build POC apps to get a general idea of how things should work.
Simple Diagrams to communicate what changes would be required (UML much?)
You can compile all of these into a tutorial style blog post
Coding
Writing code is fun.
When you have a very rough plan - feel free to go wild.
The reason I ask to start with a rough plan - it makes sense to see the end goal before running towards it, otherwise, you run the problem of coding yourself into something you have to clean off again.
How do you practice this?
Write your code with proper clean syntax - no hacks
Put it on Github
Deploy if possible
Testing
This is an underrated skill but QA is always a part of a good software engineer.
How do you get started?
Manual Testing
Automated e2e testing
Put the automated e2e tests in a CI/CD pipeline
TDD is also a very interesting skill to learn. I recently went through
Now the question you may have is - what do I build?
Learn to build e2e applications - without it gets really hard to build something you can share and be proud of. Practice shouldn’t be just for the sake of practice but also to share publicly and gain the attention of everyone.