Ask HN: How to grow as a software engineering generalist?
2 comments
Hi,
If you want to be a generalist, you may want to learn things which are useful independently of the programming language.
Some books that would qualify in my opinion (as examples):
- Code Complete: A Practical Handbook of Software Construction, Second Edition by Steve McConnell
https://www.amazon.com/Code-Complete-Practical-Handbook-Cons...
- Facts and Fallacies of Software Engineering by Robert L. Glass
https://www.amazon.com/Facts-Fallacies-Software-Engineering-...
Learning the different approches taken by multiple programming languages is certainly useful. It may not be that much relevant which language it is unless you want a job specifically in that language.
I can't speak for Google but I guess it is more relevant how familiar you are with software development practices and general knowledge about architecture, design, testing, algorithms to name a few than a specific language.
If you want to be a generalist, you may want to learn things which are useful independently of the programming language.
Some books that would qualify in my opinion (as examples):
- Code Complete: A Practical Handbook of Software Construction, Second Edition by Steve McConnell
https://www.amazon.com/Code-Complete-Practical-Handbook-Cons...
- Facts and Fallacies of Software Engineering by Robert L. Glass
https://www.amazon.com/Facts-Fallacies-Software-Engineering-...
Learning the different approches taken by multiple programming languages is certainly useful. It may not be that much relevant which language it is unless you want a job specifically in that language.
I can't speak for Google but I guess it is more relevant how familiar you are with software development practices and general knowledge about architecture, design, testing, algorithms to name a few than a specific language.
Substituting breadth for depth is likely only useful in less technical roles. Specialize in different areas so you have depth in many. There's a thing called 'T'-shaped skills and you can acquire multiple areas of depth and be 'TT'-shaped, etc.
I am more interested in being a software engineering generalist than in being a Django or an Angular expert since I don't want to be doing web development all my life. My company is unlikely to expand its tech stack beyond these two in the near future and frankly, there isn't much in the way of technical mentorship being offered to me either. On the other hand, I've also been given a lot of managerial responsibilities. As a result, I am feeling that my technical growth has become restricted.
Should I be learning another language such as C++ or Haskell in order to grow myself? Will my experience at Django and Angular fetch me a job at a company that works primarily in C++ if my only experience in C++ was outside work in hobby projects?
For eg. Will Google ever consider me employable as a senior engineer with my 3-4 years work experience in Django and Angular? Or will Google treat me like a fresher?
PS: I have a bachelor's and master's in CS from a reputed university (IIT) in India and have been working at my current company for the past 3 years.