A blog was posted to HN (https://www.abhijitbhaduri.com/2019/08/15/generalists-specialists/) earlier today about generalists vs. specialists. It kicked off some healthy discussion in the comments and got me thinking.<p>A lot of people in the software industry are told to specialize as quickly as possible (at least that's what my lecturers told me in 1st year CS). The problem with this is that a Java expert is an expert only in Java. A future change to a new technology will prove difficult and a lot of knowledge gathered will be wasted. However an OOP expert will be able to apply their knowledge to almost any future technology that they need to learn.<p>- What tools and principles have you learned that are effective across multiple domains?<p>- What principles / tools do you think all software engineers should learn early that will be useful in all future paths of their career?
I strongly believe that if I could go back 20 years and tell my younger self what technology to focus on it would be SQL. I think in terms of bang for buck it would be hard to beat deep understanding of SQL in terms of usefulness across just about any job in tech you take