How do you move from a front-end developer to software architect?


Note: This article was originaly posted on Quora.

If you want to become a good software architect you need to broaden your horizon beyond front end development.

You will need to spend few years working with different programming languages, say Java, node.js, Go, C/C++, Scala. And by working I mean not just learning from books but complete several projects going through each phase, i.e. prototyping, implementation, testing, performance tuning, refactoring, etc.

In addition to this, you will need to gain an understanding of the software development process as a whole from idea, through implementation, maintenance and retirement of the software. Learn the difference between agile, waterfall and whatever else is next. Gain an understanding of why these methodologies exist, what problems they are trying to solve and how they do that. You will need to learn not to just blindly follow them but adjust to better fit your needs based on understanding the principles behind them.

You will also need to understand the business behind software development. Every piece of software is intended to solve a business problem, so you will need to be able to identify and understand these problems. This will give you an understanding of the mindset of stakeholders, what is important for them and what’s not. You will likely need to gain some domain knowledge of the business you are in (i.e. healthcare, transportation, IoT, fintech, social networking, etc.). Ideally, you should get yourself familiar with several areas.

On top of this all, keep yourself up to date with current technologies and trends and most importantly learn to separate hype from the real thing. Over time you will also see what technologies survive and what fail and will become better at long term planning and strategy.

Along the way, you will make a lot of mistakes, but you will need to learn as much as possible from each of them. This is where your experience will come from - not from successes but from failures.

After all this, you will gain a vision of how everything fits together, how parts move and how they depend on each other in space and time. You will understand the mentality of other developers because you are one of them. You will understand the business and the mentality of the management, investors and end-users. Most importantly you will know what NOT to do in order to succeed.

Your personal experience will vary of course, and not everyone is destined to become a good software architect, so here is my advice to you - keep doing what you love, take every opportunity to learn and grow, progress naturally and follow your calling. This way you will naturally grow into the role that is just right for you and you will be a happy person :-)