Why You Need to Build End to End Projects

In the era of chatGPT, software engineers need to reevaluate the relationship they have with their craft.

The software development cycle is defined by steps. These are traditionaly defined by a process of elicitation, design, development, testing, deployment and maintenance.

Yes, becoming Agile and doing DevOps might reduce the latency of the feedback loops between these steps, but at the end of the day we are still doing the same thing.

My argument is that if as a professional you truly want to understand the whole range of implications involved when deciding to build a system with a particular architecture, you need to go through the whole lifecycle of a project.

If you are stuck working in corporate environments with large codebases and development cycles involving years, your learning curve will be terribly slow unless you are continuously job hopping between different projects, at different steps and in different professional roles.

If you want to keep a stable job, then this means that you need to build end to end personal projects that involve the aforementioned steps at a scale that a single developer can handle on its own.

These projects need to be small and, most importantly, they need to stay small in order to stay maintainable.

This will force you to take on multiple hats.

First you will need to become a product manager or product owner that understands the set of problems that the project will solve. You will need to think in terms of use cases, which will determine the needs and scope of the personal project.

In order to armonize the use cases, you will need to figure out the tech stack required to implement them, so you will need to think as software architect and do the necessary research.

Next, you will need to build the thing and implement each of the parts to assemble your use cases with the technology stack of your choice and make sure that the implementation is reliable enough. This will force you to think as the coder and the tester of your project.

Finally, you will have to deploy and ship this personal project, which will force you to act out the role of the system administrator.

At this level you will need to focus on the monitorization of the application, figure out if it is working as expected, detect and debug errors during its runtime and handle security risks.

The lessons you get along the way will not noly improve your knowledge about the technologies involved, but also your wisdom as a software engineer.

You will also get the required understanding to iterate and refine each of the steps of the process.

You will see the limitations of a technology for a particular use case, you will define more complete designs, you will take into consideration additional factors involving the different dimensionalities of the operation of your system.

These experiences will provide an integrated view of the development process, instead of hyperfocusing on isolated issues or patterns.

Thinking of yourself as a systems implementator or systems developer instead of an expert on a particular niche technology is the way to reverse the menace of future AI models such as chatGPT, and convert the advancement of this technology into an opportunity.

In other words, instead of becoming an individual that provides a commodified set of skills that are sold as a service, such as what a freelancer programmer does, become an asset developer.

Use automation to your advantage, and become truly creative.

To achieve this, you need end-to-end knowledge about how the system works and how to build new systems.

You need to transcend the idea that you are a cog in a large machine beyond your understanding and start building things that are individually useful by themselves.

As a bonus, if any of these side projects shows interest, then you will also be forced to think as a business owner and an entrepreneur.

Of course, do not expect any this happening without pushing hard into marketing and self-promotion. Having a good product is meaningless if you are unable to sell it. Entrepreneurship is probably the hardest thing you will ever experience in your carreer, if you ever make the choice or are forced to by destiny.

Once a personal project starts making money you will have ownership of your own destiny, this is the prize. But you also need to become the kind of person that is able to handle this role.

However, you are not doing this for the money yet, you are doing it for the mastery. Because most likely your skills are worthless without the corporate structure that make them useful and the business processes that tell you what to do and how to do it.

This is one of the possible exits.

whoami

Jaime Romero is a software developer and cybersecurity expert operating in Western Europe.