How Can I Get To Deep Level of Understanding of The Java Stack
How Can I Get To Deep Level of Understanding of The Java Stack
Discussion (5 comments)
Lalit Kundu • Staff Software Engineer [L6] at Google
14 18 days ago
In my opinion, concurrency, memory management, serialization, reflection are few of the complex topics that most
developers don't understand the internal workings of.
Effective Java by Joshua Bloch (an ex-googler) is a great book for advanced topics. See if you find some codelabs to do
online for the topics.
One last bit, I would like to understand your motivation behind getting deeper (to avoid X-Y problem
https://en.wikipedia.org/wiki/XY_problem). I have built products using java myself, and rarely I had to do super-deep; and
when I had to, I just looked up primers quickly. But if you're passionate about programming languages in general, I
understand.
a bunch of Java knowledge you don't actually need. Always anchor learning against action as I talk about here: "How to
avoid going down the rabbit holes when learning new things?"
If you can't get Java learning at work, then build side projects. That is how I learned Java when I was working on weaker
engineering teams (i.e. before I went to Meta). As long as you're acutely aware of problems and actively working to tackle
them, you will get better. With Java for example, something I learned to really understand is the NPE or
NullPointerException. Since I don't want my Android app users to run into crashes, I was forced to learn how to minimize
NPEs properly (i.e. not just suppressing them and kicking the root problem down the road).
boundaries of their knowledge, and can very quickly pick up things they don't know. This is the level of expertise I
want engineering leaders to have.
Mastery. These are the engineers that have formed strong enough opinions about different types of languages that
they themselves created a language to make their own tradeoffs as opposed to being confined to the languages that
currently exist. Mastery is reserved for a small subset of engineers that are language authors and major contributors.
There's a theoretical and philosophical element to this that requires a lot of thought and usually comes from a unique
passion or new type of system need.
Resources wise, I do think you're right that the ratio of content for deeper levels of expertise is low when compared to
more basic levels, but if you look closely on SWE forums and follow strong developers on social media, you'll find repeated
references to what I would call classic materials. The most "classic" materials are the documentation for the original
language or framework itself. I actually think these resources are almost always underrated since everyone prefers to read
the latest and greatest. If you pivot from quick and snappy internet content to studying the classics and exercise learned
concepts through writing and re-writing real code, you'll be able to achieve any level of proficiency you want.
Referrals: Earn $100 • Blog • Featured Questions • Perks • Topics • Privacy Policy • Terms & Conditions
Copyright © Taro
https://www.jointaro.com/question/aVzxsGgRlnu8CXWEYPaX/how-can-i-get-to-deep-level-of-understanding-of-the-java-stack/ 3/3