Hi Sameer,
I have an interesting question for you. Let's say I'm a software engineer and I want to make my way up to lead enterprise architect. What's the most useful knowledge to gather in my next years working in an IT organisation? Fortunately, having studied at the university, and having worked as a freelancer for many years, not only do I know my programming languages, frameworks and design
patterns, but I also have good knowledge of networking, operating systems, hardware, remote server management, cloud, etc.
What I've noticed is that even though one could study things in theory, like SOA, microservices, integration patterns, etc, you really become able to make important architectural decisions, and explain how to implement them, only when you do things in practice. Making things in practice will make you appreciate pros and cons of one approach vs another, and makes you really understand why certain patterns exist, both in software and architecture. For example, you can explain people in theory how to do dependency injection, mocking and
unit tests, but only experience will make you good.
Since I'm working as team lead in my company, I have the luxury of being involved, and thus learning and becoming better, in both software implementation and design and even operations. So, among the many exciting challenges I might be facing in the near future, which areas would you suggest for me to focus and from which I can get the most bang for the buck? Security? Operations? Infrastructure? Integration patterns? Database and domain? Big data? Analytics? Strategy? Project management? Etc...
Sometimes I have the impression that, in order to make it to the top levels of an IT career, like chief architect or CTO, it is important to be (or have been) a decent programmer, but it seems that other kind of skills are relevant to these higher level tasks. If that's the case, I'd rather not spend too many years of my future career on programming. Although, sometimes it feels like programming is the best way to get your hands dirty and really understand stuff like test driven design, microservices, good db performance, continuous delivery, distributed computing, concurrent programming.
Any advice is highly appreciated. Thanks for your time.
Best Regards
Martin