DEV Community πŸ‘©β€πŸ’»πŸ‘¨β€πŸ’»

hstrychalski
hstrychalski

Posted on

Increase the chances of having a successful software project

Throughout my experience as a software engineer in product companies I've learned so far that there are always more features and projects in the roadmap to work on than available resources.
My part as a software engineer is to produce value through solving problems and effectively building software and shipping it to production.

Here are a few tools that I adopted which increase a chance of success and reduce the risk of failure when working on a software project:

1. Technical specification

Great way to organize knowledge in a single document accessible to every team member and stakeholder. Preferably using a template standardized across the organization.

I found this one to work for my needs:
https://stackoverflow.blog/2020/04/06/a-practical-guide-to-writing-technical-specs/

2. Visualization

Visualizing architecture can create a lot of problem solving value.
It allows you to examine a design in end-to-end fashion and have a closer look at its complexities like communication between subsystems, microservices, asynchronous communication, data models.
It also eases introducing other people to the architecture and helps you get back on track when you’re switching context.

I remember a situation when I implemented code relying on the data produced by a different process that was not accessible just yet at this point of business transaction.
If I had mapped it out on the diagram, the right way to solve it would have been obvious and I would not have to rework my solution.

Lesson learned.

This is the kind of approach that requires investing some effort upfront, but pays dividends especially during long term projects.

Example tools:
FigJam - offers a lot of community templates, great for collaboration
PlantUML - creating diagrams using markup language

3. Decision log

Keeping track of important product or technology decisions, reasoning behind them and their consequences.
I find myself revisiting decision logs frequently and sharing entries outside of the team during the project lifetime but also long after the project has been shipped to production.

4. Proof of concept

Trying to build minimal working end-to-end prototype to validate the idea or fail and revisit the initial assumptions. This approach can greatly reduce the risk of horrible and costly mistakes.

Creating PoCs shortens the feedback loop thus allowing for more potential iterations in pursuit of the right solution.

Top comments (0)

Take a look at this:

Settings

Go to your customization settings to nudge your home feed to show content more relevant to your developer experience level. πŸ›