How do you move from 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 rather completing several projects through each phase, i.e. prototyping, implementation, testing, performance tuning, refactoring, etc.

In addition to this you will need to gain understanding of software development process as a whole from idea, through implementation, maintenance and retirement. Learn difference between agile, waterfall and whatever comes next methodologies. Gain 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 principles behind them.

You will also need to understand 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 understanding of mindset of stakeholders, what is important to them and what’s not. You will likely need to gain some domain knowledge of the business you are in (i.e. medicare, transportation, IoT, fintech, social networking, etc.). Ideally, you should try yourself in several areas.

On top of this all, you will need to keep yourself up to date with current technologies and trend and most importantly learn to separate hype from real things. 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 mentality of other developer because you are one of them. You will understand business and mentality of 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 be a happy person :-)