
Ask HN: How to grow as a software engineering generalist? - whysosirius
I am working as a software engineer at a tech startup in India where our tech stack is Django on the backend and Angular on the front-end. I have learnt enough of the two technologies to be able to do most tasks but would not consider myself an expert in either of these two technologies.<p>I am more interested in being a software engineering generalist than in being a Django or an Angular expert since I don&#x27;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&#x27;t much in the way of technical mentorship being offered to me either. On the other hand, I&#x27;ve also been given a lot of managerial responsibilities. As a result, I am feeling that my technical growth has become restricted.<p>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?<p>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?<p>PS: I have a bachelor&#x27;s and master&#x27;s in CS from a reputed university (IIT) in India and have been working at my current company for the past 3 years.
======
au750
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...](https://www.amazon.com/Code-Complete-Practical-Handbook-
Construction/dp/0735619670/)

\- Facts and Fallacies of Software Engineering by Robert L. Glass

[https://www.amazon.com/Facts-Fallacies-Software-
Engineering-...](https://www.amazon.com/Facts-Fallacies-Software-Engineering-
Robert/dp/0321117425/)

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.

------
karmakaze
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.

