New to Java? Some Resources

In this tweet, I was asked if I had a list of resources for developers who are new to Java. I didn’t at the time, but I’ve spent some time researching and here is that list.

I’ve listed content that is both free and paid. It’s not that one type is superior; it’s just to give you plenty of choices. These are the resources that I’ve used and do still use to re-learn Java. So, if you’re new to Java or looking to pick it up again after a break, this blog is for you.

The other super important point is that everyone learns differently; some like reading, some like doing, some like watching, most of us like a bit of a mix of everything. I tend to switch between them depending on what I want to learn about and how I feel. You’re probably similar, so pick an approach that works for you.

Learning Platforms

Let’s start with learning platforms. There are plenty of them to choose from, so you can pick one that works for your learning and budget style.

JetBrains Academy is a reasonably new learning platform that I’ve been using to skill back up on Java. I’ve used it in conjunction with other learning materials. I like the mix of theory with practice tasks. Of course, the slick integration with IntelliJ IDEA is a bonus too.

I’ve also used Udemy in my Java learning travels. There is a wealth of content available here, and you can sample most of it before you buy.

Finally, I’ve played around with codewars. This is a nice gentle introduction to katas (more on them soon), irrespective of where you are on your coding journey. It’s less structured than either JetBrains Academy or Udemy and can provide some light coding respite when the mood takes you.

Communities

The Java community is a rich, vibrant and welcoming place. This is played out in the communities that have sprung up around it.

The Virtual JUG is what it sounds like; a virtual Java User Group that hosts talks and shares knowledge. They have a Slack and Meetup space, so you can hear great speakers, speak yourself and learn from your peers.

Since I’m based in the UK I also want to give a shout out to the London Java Community and the Manchester Java Community. They are both great resources of information and supportive communities. I fully expect that this is mirrored in other Java User Groups worldwide, so I recommend you find your nearest one (or set one up(!)) and get involved. Talking of getting involved, creating content is an excellent way to do that.

The Java Specialists is another active group run by @heinzkabutz. Heinz also has a newsletter that I recommend you take a look at.

The Code Ranch is a very friendly place for newcomers to Java where you can post questions, learn from others and try out coding questions. The forum is also really active (oh, and did I mention that everyone here is super lovely?).

Code Katas

I am a relative newcomer to code katas, but I really like them as a way of learning. They are self-contained mini-puzzles that you can solve at your leisure.

@TheDonRaab does a great job of keeping these updated for Eclipse Collections: https://github.com/eclipse/eclipse-collections-kata

@CGuntur has also created these Java Katas for you with really nice instructions and updates: https://github.com/c-guntur/java-katas

I’ve not started these yet, but I like the look of them because the tests are right there to look at.

Specific Java Resources (including Frameworks)

This is a bit of a catch-all section, but there are a few resources that I’ve come across that are amazingly useful; they are listed here.

This course from @techgirl1908 was one of the very first resources I used on my journey to familiarise myself with the last 20 years of Java. I found it to be well-paced, gentle and incredibly useful.

@marcobehler has created a lot of content around Java, and specifically, Spring. This blog, and this Spring course, it is a bit like an onion. It starts with life before Spring and builds up the complexities so that you feel like a wizard when using Spring (and subsequently Spring Boot) and understand how the magic is being done and why. I feel like there’s a spring onion pun there, but I’ll move swiftly on.

There is a wealth of Java information on the Baeldung site. I don’t have one specific blog to point to, but invariably when I’ve Googled Java something there is a blog on this site that explains how to do it. It always amazes me just how rich this content is in terms of quantity and quality (many authors contribute to it).

One more thing I do want to mention is the official Oracle documentation for Java. I say this because you don’t have to store the Java language in your head. There is no shame in looking stuff up (another reason why technical interviews are so broken). Spend your time on the artistic side of learning to code, not remembering stuff that is one Google search away. Sure, you’ll learn more in time, but it doesn’t need to be your priority when you are starting your Java journey.

Of course, there are plenty of dedicated Java blogs out there, which you can find with a quick Google, but I want to keep this list of resources specifically targeted at content that newcomers might find helpful and that I’ve used.

Books

I like books; arguably, I like them more than videos. As with all other resources I’ve listed here, there is no shortage of them. These are the ones that I specifically have found helpful.

Head First Java by Kathy Sierra and Bert Bates. Yes, this book is old on the scale of Java, but it’s still very, very good and will probably appeal to your brain’s way of learning. I started with this book, and I didn’t regret it.

97 Things Every Java Programmer Should Know. Am I including this because I work with @trisha_gee, no, I am including this because I got a lot of value from it. I liked the vast range of topics that I could dip in and out of it very quickly because all the content is standalone. Many very experienced Java professionals contributed to this, so in my mind, they are worth listening to!

Effective Java by Joshua Bloch this isn’t the book that you start with, but it’s a book with a relatively low barrier to entry, and a book that I got a lot of value from (and probably need to re-read now I have more knowledge).

Head First Design Patterns 2nd Edition. This book is so fresh off the printing line that the ink is likely still wet. I’m going to come clean and say that I don’t own this yet, but I plan to own it very soon. I do own the first edition, and it was excellent. I fully expect the second edition to be just as good, if not better. Design pattern knowledge and understanding will serve you well, no matter what your coding goals are.

Java Certification

A note about Java Oracle Certification: this tends to be one of those subjects that can polarise opinion. I think certification is very valuable for a deep understanding of the Java language, and it will serve you well if you want to study and obtain it. I don’t think you need to be certified as such, and I suspect that on the job knowledge of Java will provide you with an equally rich and diverse experience of the language, albeit from a different angle. It’s entirely up to you, but here are my recommendations for resources if you want to pursue Java certification.

There are excellent books available from Jeanne Boyarsky and Scott Selikoff. I haven’t taken the exam, but I have found the books very useful and the examples informative.

My colleague Mala Gupta is also a passionate advocate of Java Certifications and her book for Java SE 11 is in preview so that you can get your eyes on it already!

Goals, Learning Styles and Time

Irrespective of if you’re new to coding, new to Java specifically, or took a break from Java, this is a list of resources that will help you get up and running quickly. I suggest you find the ones that work for you and build your list. Invariably what works for one person might not work for the next, so feel free to explore the wealth of content out there. Your learning style will also play a part, as will the amount of time you have available.

Whatever you do, enjoy the journey and remember what your goals are. Never lose sight of the why; that’s what will get you to where you want to be.

Finding a Community Mentor

In this blog, I mentioned that one of my hacks for self-promotion is to find a sponsor or mentor. Khalid and I had a bit of a Twitter chat and thought we’d write this blog as a follow-up.

In the original blog, I suggested that finding a mentor is useful:

This can be a single individual, a group of individuals or a community. You can think of the group or person as a booster rocket for your content. They are usually very prominent and well known in the community that you’re part of and want to grow in. They will be able to introduce you to people and be a guide as you start on your journey of self-promotion. Ask them to champion you and help you to build your brand. They’ve done it, that’s how they’re where they are, they know what you need. Everyone needs a helping hand, ask for one!

Let’s explore this in a bit more detail. After some discussion, we settled on Community Mentor as the right words to describe this person because it’s a mentor in a community, as a rule. We’re not talking about a life coach here; they usually have a cost associated with their professional services. This person is someone in the tech community who wants to help you grow and share their experiences with you.

Image by mohamed Hassan from Pixabay

Image by mohamed Hassan from Pixabay

Why Finding a Community Mentor is Useful

A mentor in a tech community is useful because they’ve walked your path, hit the same obstacles as you’re about to run into, and they have the tools to overcome them. They know what it’s like to start out in the community, and they understand a good portion of your upcoming challenges because they’ve been there. You don’t need to struggle to overcome every single obstacle yourself or without guidance. Asking for help is an underrated strength.

However, it’s not all about you either. Mentoring is a two-way relationship; people who mentor others usually gain insights about themselves along the way. Many people, especially those that have been in their chosen industry for a while, want to grow themselves and mentoring others is an excellent way for them to do that. Some aspiring mentors know that they’ve forgotten how far they’ve come and want to lift others up using their platform. All community mentors want to help; you just have to ask.

They Can Introduce You to Others

Community mentors are likely to have a platform. That can take many forms from social media, conference circuit knowledge and attendance, or knowing a substantial range of influential people that they can introduce you to. Ultimately, it boils down to this: they know people in the community you’re moving into / are in, and they’re willing and indeed want to, introduce you to them. Community mentors are authentic people who want to give you a seat at the table. It would be rude not to sit down.

They Can Open up Opportunities

Community Mentors can open up numerous doors for you. They can introduce you to people as we’ve discussed, but there are lots of other ways that they can help too. For example:

  • Co-present with them at an influential conference

  • Review pre-recorded video of you giving an upcoming talk and providing feedback

  • Review content you want to publish and give you advice and reassurance

  • Introduce you to work opportunities that you didn’t know existed

  • Collaborate on projects to raise your profile

This is probably not the end of this list!

One Mentor is Never Enough

There’s a notion that you have one mentor, and that’s enough, which isn’t the case. You can have as many mentors as you have the time to give. A mentor-mentee relationship is a precious one, and it needs time and cultivating, the same as any relationship. However, mentors are not limited to one, so think broad. You might benefit from a mentor for your career, one for public speaking and one for a technology you’re learning (for example).

Community Mentoring (yes, it’s a thing!)

One final point here, while I was chatting to Sirisha about this (then draft) blog, she came up with a couple of phrases that, for me, summarises what you’re looking for here – Community Mentoring / Herd Mentoring. Don’t limit yourself – take all the help and advice offered to you (if you want to). The communities exist to help us all learn from each other. Sirisha and I know each other through the Java community, we don’t live in the same country, and we’ve never met, but such is the power of tech communities and desire to help others. I hope to rectify the ‘never met’ part in the future!

How to Find a Community Mentor

Finding a mentor can be a daunting task, so here are some ideas for where you can start looking. Many communities have some kind of meeting place. Often it’s Slack or similar. Get yourself on there, introduce yourself and see if they have a community for this purpose, they might well do. This is a really common route for finding a community mentor.

If such a group inside a community doesn’t (yet) exist, ask if you can create one. Be clear in terms of what you are looking for, including the kind of mentoring you want and time commitment. You can also try before you buy. That is to say, have a chat with them before you enter into a mentor-mentee relationship (in my view, no money should change hands). Any mentor-mentee relationship is one built on mutual trust and respect, it needs to be on a solid grounding, and you both need to know what you’re signing up for.

If you know the person you want to be mentored by, do your homework and see if they’re open to having a mentee. If you don’t know them directly, see if you have a contact in common who can do an introduction, the world is a surprisingly small place when you need it to be.

Resources

Here are some resources that might be useful for both Java and .Net from Khalid and myself:

My understanding, at least for the Java world, is that your local Java User Group is usually the best place to start these conversations.

Having a Productive Mentor/Mentee Interaction

When operating in a mentee/mentor relationship, everyone involved wants to see progress. For all participants to get the best out of each correspondence, each interaction must have a focused and actionable next-step.

While there may be casual elements between individuals (jokes, anecdotes, and shared experiences), everyone involved must understand it is a professional relationship. To help keep everyone involved in meetings/conversations going, all parties should think about the following questions:

  • What’s the purpose of the interaction?

  • What’s the ultimate goal?

  • What impediments are blocking progress?

  • What’s the mentor’s responsibility, and what’s the mentee’s responsibility?

  • When the current interaction is complete, what’s the next step?

Answering these questions can determine the type of interaction required. Whether the exchange should be a face to face, video call, or email can be determined by answering the questions listed above. In general, come to every interaction with a topic, a duration, and a take-away. It will give all parties a better feeling about the exchange and help everyone look forward to the next one.

While goals are essential to track progress, they should be used as guides and not life-or-death marks to achieve. There will be times when a mentee/mentor relationship achieves its goals, surpasses everyone’s expectations, or utterly fails. Regardless of the outcome, each individual should take it as an opportunity to reflect, learn, and carry that knowledge forward.

Careers are rollercoaster rides, punctuated by highs and lows. A mentor can help a mentee have more successes, be supportive in times of struggle, and reinforce the idea that it’s a long journey ahead. A mentee can be honest with their mentor(s) and provide feedback, as mentioned in earlier sections.

Anti-patterns

There are some anti-patterns for finding a mentor too, don’t fall into these traps!

You Thinking They’ll be Too Busy

You are worthy of their time (if they’ve offered it), irrespective of whatever point you are in your journey. Mentors that are too busy or don’t have the schedule gaps will let you know in advance, so you know where you stand. Never assume that they’re too busy for you because they’re jet-setting all over the world (in time), and you’re writing HelloWorld. They started writing HelloWorld too.

You Not Bringing Your A-game

The mentor-mentee relationship is a special one. Bring your A-game each and every time. If you can’t be present because of your circumstances, let them know and re-group. They will understand.

Them Not Bringing Their A-game

If you’re not getting what you need from a mentor, then there is no shame in politely letting them know that it’s not working for you and walking away. It’s better to do that than continue in a relationship that isn’t benefiting you and over time could even be toxic.

Thinking You’re Too Inexperienced to be a Mentor

You have valuable experience. It may not be in the sphere that you’re moving into, but if you have the experience that matches a mentee’s requirements, do explore becoming a mentor. As long as you’re honest and transparent about what that experience is, how you’ve applied it, and are comfortable saying I don’t know, then do consider being a mentor. Sometimes we all need some help, reassurance and support.

Summary

Community mentors are phenomenal springboards to opportunities that you probably didn’t know existed, and they want to help you. Not everyone in a community wants to be a mentor, but if you don’t ask, you won’t find! Community mentoring others is an incredibly powerful way of learning more about yourself and helping to give those that are earlier in their journey a seat at your table. Give it a go!

Special thanks to Khalid for reviewing, and contributing to, this blog.