Java can be a very big and intimidating language compared to other languages that are often recommended for new coders. I’ve reflected on my two years of using Java professionally to describe some tactics I’ve used to gain Java confidence.
My first encounter with Java was not the most ideal. I took a weekend course on Java in my local community at a Meetup. I didn’t make much progress in the course, so I figured this was something I’ll have to learn when I’m more advanced. I held onto that belief for a while… Until I was offered a job as a junior software developer where I’d be programming with Java!
My earliest memories
Bridge your understanding of Java with other languages
In my first 8 months as a Java developer, I bridged a lot of my knowledge into what I worked on professionally. My knowledge of REST routes and CRUD apps was translated into working with Spring Boot applications and APIs. My utilization of print statements was expanded on through the beauty of IDEs where debugging is powerful and insightful (there have been times where I’m for a full day in debug mode just stepping through how something comes together). Lastly, my conversations with senior developers contained linguistic gymnastics where we would toss back and forth the similarities to Java with other languages, and extrapolate our technical experiences into implementing code (pair programming can be so golden, yall).
Practice practice practice
Similar to knowing a human language, it’s not just enough to know the syntax and the rules, but you also need to put them to work in varying stages of complexity to confidently state fluency.
In my experience, I felt that Treehouse (referral link) had the best tutorials in learning Java. The curriculum includes videos and in-app practice modules to test your knowledge. This was really helpful because the set up of starting some Java projects can be quite ridiculous. Besides Head First Java, I’ve been enjoying going through other O’Reilly books about Java (I received 10+ books through a Humble Bundle sale for Christmas that I’m still working through!) as well as Manning Publication books. Plus, free options like YouTube and blogs have a lot to offer (you can’t Google Java probz without encountering baeldung.com). For coding katas, I really like practicing Java on CodeSignal or HackerRank.
And did I mention that project setups can be a pain? Unlike create-react-app or rails generate, starting up Java projects include a lot less automaticity. Thankfully Java IDEs try to help as best as it can, for example, IntelliJ offers several options to get started with a new project. I continue to underestimate how many steps it takes to build a new project. I know I’m learning a lot, but weird setbacks like trying to do a seemingly simple CRUD app can let the imposter syndrome take over. What has helped get me through this is using tools like Spring Initalizr to take the guesswork out of what I need for new projects. I plug in my needs into the form and it gives me a buildable project!
Build community around your learning
As with any tech skill you’re learning, it’s recommended to see what other technologists are discussing and building with Java. Look for local Meetups to attend or Java-specific conferences.
During my journey with Java, I often co-work with friends and work on projects together. Having a community outside of work helps to form many new conversations and opportunities.
I haven’t found specific groups relating to Java that are align with what I’m learning. I see a lot of interest groups on Scala and Kotlin though, as well as open-source communities. These are great folks to meet and get to know (shout out to Chicago Kotlin Users Group!). Unfortunately at my current company such JVM derivates are not enthusiastically supported!
These three topics summarize what I’ve found most beneficial in gaining confidence with Java. After 2 years of working with the language, I have more independence with it. There are several topics I still struggle with though, and I work towards solving them through specific goals I set. As with any learning adventure, patience is necessary above all else.