What should I need to learn to become a good Software Architect?

Hi everyone, I’m currently a junior student in Computer Science and about to graduate next year. So far, I’m kind of a goal-driven person, and I only learn what I feel important. In particular, since my goal is to become a software developer, I try to absorb knowledge that relevant to programming, data structures & algorithms (just enough for the interview), design patterns and architecture, database, etc. And I kind of forgot most fundamental concepts in ML/DL courses.

Recently, I had a backend internship position and start having a grasp of the career path of a software engineer. As far as I know, to become a person who is more valuable to the company (such as team lead, technical lead, software architect), not only coding and those basic concepts that I learnt so far, I also need to have a broad knowledge on the field, including what pros and cons of the framework, what design, language, and technology to choose for a particular project. More than that, to reach the highest technical position (CTO, I guess), management skills, risk assessment skills are also vital.

I started to doubt my previous mindset: ‘Learn only for my job’ might make me get trapped as an average coder till retirement. Should I try out something new? Should I learn more about other stuffs like DevOps skills, management skills, etc. Should I read more and more about technical trends? I really want to know what should I learn to become an expert in the field, and what should I focus on now. Thank you very much for helping me out, wish you guys a good day.

When starting out as a Software Developer, I usually recommend that the best approach is learning a little bit of everything, and not focusing on anything specific until later. The reason for this is specializing on something early “closes” doors that may come up later.

Going back to what you said about your own goals of just being a software developer, you could look into all of these things to become “more valuable to the company”, possibly climbing the corporate ladder. But is that what you want to do? If your not sure, then I wouldn’t worry about it too much at this point. I’d focus more on your current goals, which I assume would be to graduate and get a job.

Odds are you will have to continue to grow, and will continue to grow if you have a job as a developer. Just running into newer problems means you will learn and grow from them just day to day. If you go further than this is more up to you. You could expand what your learning even after getting the job, just to learn, or to increase your importance to the company.

If you grow in realms that could get you “higher” in your job is also up to you. Or you just do your developer job as best as you can.

Don’t focus on being an expert right now. Focus on your short term goals (graduating, and getting a job) and continue to learn more about anything and everything. Only later once you “get your feet under you” in the field after some real world experience, then you can pick for yourself what kind of “expert” you even want to be.

Good luck, keep building keep growing!

2 Likes

Hi Brad, thank you very much for your advice, it is very precious to me at this time.
I guess I’m kind of overwhelmed with so many gaps in my knowledge that I’ve figured out in my intern and get stuck in deciding what to learn next. Thanks for your valuable insights!