Delivering Your First Live Talk Remotely

This blog post focuses on delivering live talks remotely, but if you are delivering a pre-recorded talk, go check out Carly’s blog post on exactly this! The first few tips here apply for giving talks remotely or pre-recorded, but Carly has written up some great guidance for those of you who need to submit pre-recorded content.

Webcam

Image by Aksa2011 from Pixabay

Stand Up

Standing up is a powerful way to deliver your presentation. It’s really hard presenting remotely, as I covered in this blog post. However, standing up is one way of adding energy to a remote presentation. It’s also a lot less scary to stand up because you can shift your weight onto the front of your feet and lean into the audience remotely. This will calm you down, no one wants to be on the back foot when they’re presenting. In addition, your legs can’t shake if you’re standing on them!

You don’t need a standing desk for this, although if you have the means and the space they’re very helpful! You can achieve the same effect with some chunky programming books to raise your monitor and webcam up to your eye level when you’re standing up.

If you are using books, make sure that it’s stable; the last thing you want is a mid-talk-topple! If you are using an electronic standing desk, or a desk converter, that has a lock function – use it. It’s very easy to accidentally knock buttons and trigger a desk movement mid-talk. Trust me, it happens!

Add Lighting

Lighting makes a big difference to your presentation. You don’t need professional studio lighting either, but it’s important to work with what you have.

Lightbulbs

Image by Pexels from Pixabay

The best advice I can give you here is to experiment. There’s a lot to work with including the room lighting, windows, your phone torch, the old anglepoise lamp in the garage, your bedside table lamp and more. A lot of the time you can briefly improve the lighting for your desk when you give, or record, your presentation.

If you do want to purchase some additional lights for your desk then you could consider something like this or a ring light. I use the former as I wear glasses and find that ring lights cause too many reflections. However, if you want to purchase something to brighten up your environment then go for it. It if helps Carly has been playing with this one which comes with two sizes of tripod.

Expect the Unexpected

Life happens. I know it feels like life stopped in early 2020 but life still happens. That means that at any point, your kids could strut on into the room, the Internet could die, the doorbell could ring, your dog could inform you that the postie has just been, and many more interruptions are equally viable.

Of course, you want to avoid all these things but sometimes, as I said, life happens. The best thing you can do here is to mitigate them. That means accepting that they might happen, and, having a plan in place in case they do happen. For example, if there’s someone else in the house, ensure that they know you’re on a call, and they need to answer the door. Be ready so that if you’re live when the dog informs you that the world is ending because the postie is here, let the participants know, laugh about it and keep going. Your audience will be at ease when they know that you’ve got this! They don’t want to see you uncomfortable and twitchy, and they also know that life happens. If the Internet goes offline because your other half decided to press a button on the router mid-talk (that happened), deep breath, and dial back in tethered to your phone. Be ready for it but save the row for later!

Pay Attention to the Conference Tech Check

All conferences do tech checks. Tech checks cover a broad range of things and normally happen 1-2 weeks ahead of the conference. They can include:

  • When to dial in for your talk (it will be at least 10 minutes before the scheduled time as a rule)
  • What software to use – make sure you are familiar with it. If you’re not, let them know and do practise runs!
  • Username and passwords for the conference; speakers often have different details to participants
  • How questions will be managed throughout your talk (during or after)
  • Who is hosting your talk
  • Any pre-canned questions that you’d like to be asked in case the audience is feeling quiet
 

woman-listening.jpg

 

Image by Karolina Grabowska from Pixabay

These Tech Checks are your time to ask questions too. Make sure you make notes, write down what you need to do and where you need to be when you need to be there.

On the Day

Live talks are in many ways easier because you will have the excitement factor (which will manifest as nerves), and you’ll have to stick to a pre-determined schedule. However, there are still some things you need to pay attention to.

Wear (Suitable) Clothes

Okay, seriously, wear what you like! Wear what you feel awesome in. That will look different for everyone (good thing too!).

My only other tip here is to consider something loose fitting. Often when you’re presenting you’re nervous and that can cause you to get hot – especially if you’ve got extra lights pointed at you! Loose fitting clothes may be more comfortable!

Check Your Tech

Make sure your machine is not running 20 million applications and isn’t experiencing glitching. We recommend re-booting your machine prior to your presentation, but not five minutes before! A good couple of hours before is preferable, you never know when those updates are going to come and bite you!

Get in the Zone

On talk day you will be nervous, this is a good thing! Those nerves are what you can use to lift your talk energy, so you need to channel them. Do whatever it is that gets you in the zone – some press-ups, a walk, and shake it out – whatever it is. Have some water ready for your talk and of course visit the bathroom beforehand!

Image by Keifit from Pixabay

Make Eye Contact

This one is much harder with remote talks because you have to talk into the void and make eye contact with a webcam; it’s the weirdest thing! However, your audience are on the other side of the webcam, so it’s important that you try and maintain eye contact. Check your eye level with your webcam once you’re standing up. You can always record a little test video and see what it looks like.

Enjoy Yourself

This is the most important one – you need to enjoy yourself! It is much harder giving talks remotely, but you can do it! Of course at an in person conference you’d probably chat to conference delegates and then head to the pub afterwards. That is harder remotely but make sure you do engage with conference participants on social media and at least give yourself a treat afterwards. You deserve it!

Handle the Q&A

A Q&A session normally follows a conference talk. If the conference asked you for pre-canned questions and the audience is feeling quiet, this is a good way to get people feeling comfortable. Of course try and answer any questions that the audience has, but don’t be afraid of saying “I don’t know”, followed by “let me get back to you on that”, or “I don’t know, but I know someone who will know the answer to that question”. You don’t need to know everything!

Summary

There’s plenty of things you can do to ease your experience here and make it less stressful for yourself. I hope I’ve given you some ideas to try so what you feel more comfortable when you give your first, second and third live conference talk. Of course, I’m sure there is a different/additional set of skills for presenting in real life so when I get that opportunity I’ll write that one up as well!

Responding to a Developer Conference CFP

So here we are, you’ve done some public speaking at a user group, and now you want to apply to speak at a conference. Good for you! You have to ‘respond to the conference’s CFP process’ with your talk idea to speak at a conference. Before we go any further a CFP is a Call For Papers. It’s the process a conference goes through well in advance (in theory) to ask potential speakers for their talk topics so that they can build their conference schedule.

I’ve covered a lot in this blog:

I’ve recently done my first conference talk at the phenomenal Java jLove conference. I’ve also applied to speak at two different conferences, one of which I’ve been turned down for, and the other I’m waiting to hear from. I’m also on the program committee for a big developer conference that will be held later this year. The program committee are the folk who look at all the CFP submissions and decide which speakers and talks get offered a place in the conference and which do not. This experience means that I’ve been on both ends of the process and can provide unique insight into the complete process.

Are you ready?

Of course, this is a question only you can answer. What I will say is that you’ll probably never be ready. You’re unlikely to bounce out of bed and say, “yes! I’m ready to speak at conferences now”. There’s no sudden switch, and it will always be out of your comfort zone.

However, allow me to offer some guidance to help you to assess if you’re ready. Have you:

  • done a 30 minute or longer talk at a meetup/user group?
  • got a talk already done/drafted/under serious consideration?

If yes to both, congratulations, you’re ready! If you haven’t, you might still be ready, but your journey may be bumpier. User groups/meetups are a fantastic way to dip your toe in the water of public speaking, get feedback, iterate and improve. We all have to learn our craft. If you’re UK-based, I strongly recommend you check out the London Java Community. They’ve been instrumental in helping me on my public speaking journey with support, encouragement, and speaking slots of all sizes!

By the way, I once made the mistake of asking a seasoned speaker, Trisha Gee how many lightning talks (5 minutes long) you should do before progressing on to longer talks. Here’s the answer (video) if you’re interested. It’s one by the way. Lightning talks are just one of the many initiatives that the London Java Community have. They also have an Aspiring Speakers group and an Aspiring Woman Speakers group that I’m part of. Come join us!

The pandemic and conferences

Let’s talk about this one first. The pandemic has moved all conferences online. At best, some are considering hybrid events for the future, but, for the most part currently, they are all online and have been for over a year now. Sure the picture might gradually change, but if it does, it will be precisely that, gradual.

What does this mean for you? It means two things:

  • The barrier to entry is lower
  • You get zero audience feedback

The barrier to entry is lower

What I mean by this is two things. Firstly, you don’t have to travel anywhere. Now I know you might have wanted to go to that amazing new place and one day, you will, but for now, it’s safer and easier to stay at home.

Secondly, it’s easier to give a talk from the comfort of your home. This is true, but it’s also a lie. Let’s start with the true part. It is undoubtedly easier to give a talk from the comfort of your home. You don’t have to travel anywhere, you don’t have jet lag, your brain isn’t swimming with the names of everyone you just met, and your legs aren’t shaking as you walk onto the stage. All you have to do is join the Zoom call and do the talk. Now I’m not saying that’s easy, but it’s easier than going to a conference in many ways.

Now, let’s move on to why that is also a massive lie.

You get zero audience feedback

It’s a massive lie because you get zero audience feedback for the duration of talks that you give remotely. Nothing, nada, zilch, zero. And that is HARD. When I started my public speaking journey nearly a year ago now, I really liked that. It was great; I just had to turn my machine on, give my talk without throwing up, and then enjoy the adrenaline high afterwards. I didn’t have time to think about the audience, regrettably. I just assumed they’d tell me if they hated it, and they didn’t, so yay?

Then I started doing talks longer than 5 minutes. I did a 25-minute talk, and that’s when it dawned on me that I had absolutely no clue if the folk on the call were glued to what I was saying or if they were glued to what their phones were saying. I had no idea, and I couldn’t get an idea either. Most recently, I gave my 50-minute conference talk to a user group. The lack of immediate audience feedback for the duration of the talk was crippling. Thankfully two audience members put their cameras on, and I loved them for it – they were legends! I could see them smile, laugh, look confused and nod at the appropriate points. However, two people in an audience of over 50 is not a great sample size. Even if all 50 attendees had put their cameras on, I’d still not be able to read all their faces accurately and in time.

Now, unless you’re a speaker who takes questions as you go through your talk, a talk is, by the very definition, one-directional. You, the speaker, are talking to them, the audience. So that doesn’t change, but what does change is the fact that when you share the same physical space as your audience, you can see how they are reacting to your talk. You can see if they’re laughing at your jokes, nodding to your points, or grimacing at your self-owns. When you’re speaking from the comfort of your own home, you get no physical feedback from your audience at all. You cannot, as a comedian would say, easily change the room (video). This can leave a speaker feeling dejected. We have no way to know if we achieved what we set out to achieve.

So how do we address this, well, with great difficulty. It has baffled me for months now that I’ve had it drilled into me that “you are the presentation, not the slides”. As Deborah Frances-White put it in the video above, the overuse of slides is the savanna equivalent of you, the gazelle, saying “Look! A Zebra! (video)”. People come to talks to hear what you have to say, not to judge how fancy your slides are. Now, this area is changing. There’s a fancy new tool called mmhmm which is disrupting the space that PowerPoint and KeyNote hold firmly. It will be interesting to see if it takes off. I certainly am investing time in learning and playing with it in lieu of being able to be at conferences in person.

I really don’t like being a tiny hand-waving Helen in a little box next to my relatively sparse, disproportionally large, yet occasionally amusing slides.

Finding a conference that is looking for speakers

This is step one, and it’s not a difficult step you’ll be pleased to hear. As it turns out, my ex-colleague wrote this excellent list for developer conferences, so I won’t repeat him. Thanks, Phil Nash!

Responding to a CFP

So now you’ve decided that you’re ready, and you’ve found a CFP, great! Let’s do this! Each CFP is different (of course), but there are some guiding principles. Steve Poole recently did an excellent video that I learned a lot from on this exact topic.

Let’s take a look at the broad categories and what I’ve learned for each one.

Title

It needs to be short

Like, really short. It’s absolutely worth putting effort into coming up with the shortest title you can, which is in itself an art.

It will probably (in time) appear in printed media; you don’t want it wrapping if you can help it.

It needs to be snappy

It’s not enough to be short; it needs to be snappy too. Yes, I know that’s a big ask, but it’s an important one. Now, snappy titles do not come naturally to me, so feel free to ask a friend. Also, get feedback and opinions on your title.

The other reason that it needs to be snappy is that, if you are successful, the chances are that those attending the conference will only read your title. Yes, that’s right, those beautiful pros that I’ll come on to for the talk description, they don’t get read a lot of the time. Brutal, isn’t it?

Talk description

This is the bit that will appear on the conference schedule as well. I know I just said many conference participants will not read this, but it will be scrutinised by the program committee. That is the folk looking at all the submissions and deciding which ones are in and which ones are out. So for that reason, you want to invest effort in your talk description.

Keep it flexible

Be careful not to box yourself into a corner here, especially if you’ve not yet written your talk. You don’t want to get your talk accepted, agree to the conference slot and then realise that the talk you really want to give is not the one you submitted. Conference organisers expect slides to change and ideas to be iterated over, but don’t commit to present one topic and then pivot to a different topic or audience level. That would break the contract you make with your audience and the conference organisers should your talk get accepted. Write about the structure of your talk and the stories you want to tell; you can hang the detail on it later.

Spell check it

It’s easily done and it happens. I can say this with absolute confidence because I’ve seen it. Run your work through a spellchecker.

Keep to the point

This is where you sell the talk. Think about prompts like:

  • Why are you giving this talk?
  • Who is this talk for?
  • What story are you telling and why?
  • What is the purpose of this talk?
  • What do you want your audience to talk away from your talk?

This should not be a massive block of text. Look at the past conference schedule for the talks you’re submitting for a guide as to the length. 100-150 ish words are usually the norm here. If you’re up at 200, you will probably need to start trimming it.

Elevator pitch

Not everyone asks for this, but some do. Imagine the scene; it’s the final day that the conference is open for CFPs, 68 come in overnight, and it’s your job to sift through them the following day. The elevator pitch is where you can sell your talk to the program committee. It needs to be short. Many CFPs that ask for an elevator pitch will limit you to 300 characters. Not words, characters. So use them wisely. The ampersand is your friend here, as Steve once told me. That said, don’t revert to text speak entirely. It is unlikely to go down well.

You need to tell a story in this little place. Human brains thrive on stories. Instead of trying to cut down your talk description, try and tell a mini-story.

For example, if it’s an experience talk, you could say something like:

I will share my journey of ‘the thing you’re going to talk about’. I will talk through what worked and, more importantly, what didn’t. I will give some top tips to deal with ‘the thing that didn’t work’. This is my story.

Or, for a technology-based talk you could say something like:

I’m going to show how to use ‘some technology to create ‘something awesome’. I’ll show how to install and configure ‘some techology’ for various environments. I’ll show how to get the most from it, what problems it solves, and how to avoid the pitfalls!

These are just examples, they’re not a gold standard! By the way, talks about failure are very useful; arguably more useful than talks about success. We learn far more from failure.

Make it stick, make it so that the program committee can’t say no. And, even if this is an optional field, never leave it empty. It’s incredibly useful for the program committee to read before or after your talk description.

Notes

Okay this is the place where you relax a bit. This is where you can talk directly to the program committee about why you are the best person to give the talk, and you can expand on the contents of the talk (if you want to). There’s not usually a word count here, but keep it to the point. The program committee wants to have some confidence that:

  • you’ve thought about your talk (seriously)
  • you have an idea of the structure of your talk
  • you’re the right person to give this talk
  • you know what you want your audience to take away from your talk

Expand on each of these points where you can.

Slides

Depending on the CFP, you may have a space for slides. If you do, and you have slides, insert them here. If you don’t, that’s okay too; it’s not usually a requirement. It’s helpful if you do but by no means a must. Make sure the link is accessible to all as well (yes I totally failed on that one with my first submission). Talking of slides, don’t start with them; that’s a terrible idea. If you’re looking to understand how to tell your story, I urge you to read How to make a presentation make a point.

Speaking experience

Again, depending on the CFP, this might be called something different, but somewhere there will probably be a space for you to evidence your prior public speaking experience. This box is crucial for new speakers who aren’t already on the conference circuit. It’s crucial because nobody knows you!

It’s fine that nobody knows you, but if you have a video or two of your prior public speaking appearance, it’s very helpful for the program committee. It means that they can see what kind of public speaker you are and if you’re a good fit for the conference. You have got a much higher chance of being accepted to speak at a conference if you have evidence of prior public speaking engagements such as user groups/meetups. Point to the videos of your prior recordings on your site or on YouTube. If you don’t have such evidence, record a little video of you talking about this talk that you’re submitting and put that on YouTube for the program committee.

This is a good place for me to mention that having your own website can be very useful for creating your own collection of your public appearances. You can link up your previous talks, podcasts, blogs and more.

Speaker bio

Last but not least, we have a speaker bio. This should be written in the 3rd person (which is very strange when you’re writing your own). Again if you’re a new speaker, this is something that the program committee will look at closely. They want to know who you are and what makes you tick. Keep your speaker bio relatively short – around 100 words should suffice. It should state who you are, where you work, what your experience is, and what your passions are. You can read some good advice here and more here for writing your bio.

Getting accepted / rejected

Of course, I hope you get your talk accepted, but I cannot guarantee that. However, I can say that this is the guidance that has helped me get my talk accepted at my first conference and the advice I’ll be building on for future conferences. I was not entirely surprised that I didn’t get accepted for the other conference I applied to, especially given I don’t work directly in that field anymore. There are always a lot of factors to consider for the program committee, but please be assured that it’s never personal.

Getting accepted

Yay! You got accepted! In this instance, the program committee will get in touch with you offering you a slot at the conference. Remember, at this point, you still have the chance to say no. Your circumstances might have changed, a big piece of work might have come in, or life might have thrown you a curve-ball. If you can’t commit to giving the talk on the date offered, say no. You’re not letting anyone down at this point if you say you can no longer do it.

Of course, there is the rare event that you can’t do a talk that you’ve committed to. This is always a tough situation to be in, and if you’re here it’s highly likely that it was completely unavoidable. In that instance, you need to explain your situation to the conference organisers as soon as you know. They will be accepting and understanding.

Something else that’s important to ask at this stage – does the conference want you to do your talk live or as a pre-recorded video. This has come about because all conferences have moved online. As I’ve already said, it’s incredibly hard to talk into your webcam for any length of time and get no audience feedback. For this reason, I prefer giving the talk live because I feel like I at least owe that much to the audience. At least then they can see my gaffs in real-time rather than a polished pre-recorded version. That said, some conferences do want pre-recorded versions, and you might not be in the place to be picky over what you say yes to.

Some conference organisers prefer pre-recorded talks because they remove the element of risk. They don’t need to worry about conference speaker turning up on time or having audio issues because they have a pre-recorded version of the talk. Make sure you ask what they’re expecting, what platform they are using, and if there is anything you need to know in terms of format or staging (such as your zoom background). Ask if they are expecting your talk to be pre-recorded. If it is, find out on what date they want the pre-recorded talk. It’s normally a few weeks before the conference, which can catch you off guard if you’re not careful.

The next thing to ask, and everyone needs to ask this is “What’s the diversity of your proposed conference schedule?” If you don’t get a satisfactory answer, you need to dig into that in more detail. Look at past conferences. What was the diversity of those? Are you happy with it? This is an uncomfortable conversation to have, but we need to get comfortable with being uncomfortable. If the conference doesn’t have the answers for you, that in itself can be a red flag.

Getting rejected

If you get rejected, ask the conference organisers for feedback. They may not give you any, but they might. And, if they do, you can make tweaks accordingly. It’s worth mentioning that there are always more talks than conference slots, but if you keep applying and keep honing your skills, you stand a greater chance of getting accepted. If you’ve written your talk, and you evidence it in the CFP, and you’re still not being accepted to speak at any conference, you need to get feedback. It should help you to understand your next steps and what you need to change (if anything); competition is stiff but keep going and keep learning. I could insert numerous quotes about getting rejected, but you know the drill, get back on it and submit to another conference.

Writing your talk

My top tip for writing your talk is this – don’t wait to get accepted before you write the talk. Now you may think that’s very presumptuous but allow me to explain. If you start writing the talk before you receive confirmation of acceptance, you’re ahead of the game – win. On the other hand, if you start writing the talk and get rejected, you still win long term because your talk will hopefully be accepted in the future, and even if it’s not, it will be great experience to master your craft.

Remember, public speaking is a skill and, we’re not born with it. Everyone can learn it, though. On that note, don’t compare yourself to people who have been public speaking for decades. They’re good for a reason; they’ve had A LOT of practice! Talking of practice, practice really is everything when it comes to public speaking.

It takes a very long time to create a talk. I’m loathed to give a metric here, but my most recent conference talk that was accepted has taken me just over 50 hours to prepare. It’s a 50-minute talk. That includes the slides and numerous dry runs. I know every line, what I want to get across, where my punch lines are, and what emotion I want to get across and why. Now, I know there are some public speakers out there who can quite literally wing it. Good for you; that’s an awesome skill. Most of us, however, cannot wing it, nor should we try. Don’t assume that you can give the talk and wing it in any way. It’s not fair on your audience, and for a conference, they’ve often paid to be there.

I’ll say it again, practice is everything.

Giving your talk

You will be nervous, that’s because you care! Being nervous is a good thing. It would be far weirder if you weren’t nervous. There’s not much to say here except:

  • Pay attention to the tech check. Write down what you need to do and when.
  • Have canned questions ready for your talk in case your audience isn’t feeling chatty.
  • Get in the zone, whatever that looks like for you. For me, it’s raising my standing desk, doing a few press-ups, and some pretty bad dancing and singing. Do whatever works for you.
  • Remember that your voice reflects your mood, so it’s imperative that you go into your talk happy. You can’t fake it, at least, I can’t.
  • Join in a timely fashion, give your presentation and answer the questions afterwards with a smile on your face.
  • Reward yourself with whatever makes you feel good when it’s done!

Submitting to more conferences!

By now, you’ll know that creating talks takes time and a lot of investment from yourself. There is absolutely nothing wrong with giving the same talk multiple times at different conferences. In fact, it’s expected. Conferences know how much effort and time it takes to create, and they do not expect unique content.

That said, it’s polite to ask and to let them know where else you’ve given this talk, with a recording if possible. If you’ve not given this talk before, that’s fine too. I was in that exact situation; just let them know. Communication is key here.

Summary

Submitting your talk to a conference, that is, responding to a CFP, is hard work. It’s similar to the amount of effort you need when applying for a new job, especially when you’re a new speaker. You do have to put the groundwork and effort in, but public speaking is an incredible asset for your career. If you can, volunteer to be on a program committee. It means you can see what other folks submit and learn a lot about what is and isn’t accepted. Ask conference organisers if they need program committee members. Some will say yes!

Hopefully, we will all get to go to real conferences again soon and get that audience feedback that is so important, along with the post-talk drinks! I hope we’re both there!

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.

LTS Version or Latest Version of Java?

We, the Java Developer Advocates at JetBrains, are building a Spring Boot application. Right at the start of the process (which was yesterday on publish date) we kicked off the New Project wizard and selected Spring Initializr. Everything was fine until that point, we (Trisha, Dalia and myself) were having a nice chat and all in agreement. That was when we got to this screen:
Spring Initializer Settings
We gave it a name, set the location, and then had a quick debate about Maven or Gradle. If you’re interested we chose Maven for this project but will choose Gradle for a different component because we like a bit of variation. That wasn’t the contentious part, that was merely a warm-up exercise as it turned out.

We got down to Project SDK and Java. And this is where I felt like I’d been ported to an episode of Mortal Kombat with Trisha and Dalia playing leading roles. BTW, in case you were wondering (because I was), the Java field is the Language Level. I opted to extract the (mostly) full conversation here because I think it’s really useful to show this transparency of a healthy debate. Also, now I’m listening to this back to extract the transcript, Dalia totally started it. Oh, and then there was this, by way of escalation.

Dalia: Alright, hold on. The version of Java we’re using, do we want to use 11?
Helen: (yes I got this one word in) It’s the latest LTS isn’t it?
Trisha: It is, but 16 is so nice, but 16 is also challenging because 16 it hides the internals of the JDK by default so if you have any other JVM language like Kotlin it doesn’t work that well on 16. Now, since we’re using Spring Boot, Spring is always a little bit behind anyway so Spring supports Java 15, I don’t think it supports Java 16 but if we use Java 16 we can use Records, which is fun. I want to go with 16 and then see what breaks.
Dalia: My opinion is 11 because if you’re in an enterprise scenario, you will not be using 16, you’ll be using 11 because you want to make sure you’re not going to have to upgrade every 6 months.
Trisha: I agree with that. What I would like to do is I would like to showcase what you’re missing, but, here’s the other thing, so we might not even use that many features from Java 12 through 16, what we might want to do though is if we use anything that’s 12 through 16 we’ll just “if you’re using Java 11 this is how you do it”, like Records, because Records can be converted to data classes.
Dalia: When is 17 coming out?
Trisha: September
Dalia: Okay do we feel like we’ll want to upgrade to 17 when it comes out because that’s the main argument for me because then we can upgrade to 17 and that might be around the time we showcase this.
Trisha: So, I would like to show 16 to really help to pull people in the direction of 17. 16 has Records as a standard feature, not a preview feature which will be really helpful for small services.
Dalia: The only thing I’m saying is that if we are recommending “here’s how you start a new service”, then best practice is not to start with a short term release.
Trisha: I know what you’re saying, I think given 17 is coming out in September I think we should be poking people in that direction. We’re talking about new services and if you’re trying to get people to do new services with 11 it’s going to be forever before anyone gets anywhere. So if we go with 16 then we can say “you should be doing this on 17” when it comes out and it’s a full Java 17 application.
Dalia: I agree to disagree, I would have done 11 but I think you have a fair point too.
Trisha: We can revisit this decision if it looks like there’s anything that’s going to be show-stopping. So yes, lots of decisions on the first page!
Dalia: Yes! I think this is a really good topic to create content from how we made these decisions.

And, that is how this blog came to be! Then, we moved onto this page:

Spring Boot Options

And the conversation continued. We discussed which version of Spring we should use given we’ve selected Java 16. That involved some Googling, and we landed on the snapshot release which of course continued to make Dalia pretty nervous (understandably!).

We had a discussion around what our objectives were in terms of who we should be providing feedback for and why. We agreed that sending feedback on all bugs and problems to all software vendors (of course including JetBrains) was paramount, so we try things out and find issues before you all do. We went on to discuss the fact that we didn’t want the tutorial to be immediately out of date and that was another reason to forge ahead with Java 16.

The conversation concluded like this:
Trisha: I’m going to propose we go my way, but, as soon as we lose more than half an hour to a stupid bug then we roll back one thing at a time.
Dalia: Yes! Yes!

Finally, I managed to get a word in and asked how easy it would be to change the version of Spring Boot after we’ve made these selections. Turns out, that’s very easy (just like it is for the SDK).

We all wanted to share this with you because it was a healthy and fun debate. These are great discussions to have and are critical for new projects. Yes, IntelliJ IDEA makes changing this stuff easy after the event, but that doesn’t mean you should just forge ahead without understanding why you want to go down that path.

At the time of writing the poll was very evenly split. My personal view is that this is because both Trisha and Dalia are excellent ambassadors for the Java community, and they were both advocating for what they believed to be the best option for the content we all want to create.

25 Content Creation and Sharing Hacks

The list of resources for ths talk is available here.

Woman working on a laptop

The benefits of creating content are relatively well known, but it’s worth reiterating them before we go on.

  • Cements your knowledge. When you create content on something, it helps ensure you know the subject well.

  • Helps others to learn. Your content might help them with something that they’re unsure about, or it might validate their experience.

  • Participation in a community. When you contribute to a community, you meet people you can learn from and, in turn, can help other people. It also offers you excellent networking opportunities for your career.

What’s not to like?

Image by StartupStockPhotos from Pixabay

A Note About Self-Promotion

Self-promotion is not what content sharing is all about, in my view. In fact, if you google self-promotion you too will probably realise that you’re not keen on it either.

The good news is that you don’t have to be good at self-promotion; you just need to be good at content-promotion. It’s your content that you’re promoting, not you. You also need to be authentic. We are at our most authentic when we accept ourselves and our knowledge, including the gaps in it. When we’re comfortable in our own skins and not seeking approval, that’s when we create authentic content. When we do that, promoting our content feels much more comfortable.

The Hacks

I’ve grouped the hacks into five segments followed by a summary for this blog:

Always Do These

These are the hacks that you should always do when creating and promoting any sort of content. Allow me to explain why.

Follow your dreams sign

Don’t listen to the voices

The voices of self-doubt have one role in this life. They just want to keep you safe and protect you. You might think that sounds great, and thus you should listen to them, but if you do, along with being safe, you’ll also never try anything new or put yourself out there. Those two things could fail, sure, but you might even succeed. The voices are not willing to take that risk, but you can!

Believe in yourself

It is a little cliché, but if you don’t believe in yourself, no one else will. If you don’t create content that you believe in, and you are authentic with, the buy-in from others for that content will not be as strong. Some people struggle with this more than others, but if in doubt, remember that someone will definitely benefit from you creating content – you! I would put good money on the list being longer too.

Image by photosforyou from Pixabay

Enjoy yourself

As humans, we rarely do stuff we don’t want to do unless we’re being paid. Of course, that’s a broad statement because you’re probably thinking, “but, I wash up, I clean the house, and I go food shopping”, none of which are exciting in my book. However, those things are just the daily grind of life that you choose to do to change the surrounding environment, and so you don’t starve. Content creation will infringe on your leisure time, so you need to, at least to some extent, enjoy the majority of the process; otherwise, you just won’t do it, which would be a shame. Do what works for you; today, for me, it’s triple chocolate chip cookies. I have no regrets.

Back to the hacks list

Getting Started

These are the hacks that are useful when you’re getting started creating or promoting any sort of content.

Woman on starting line of race track

No one will read it watch it anyhow

Most people build their network and community as a result of creating content. Be that talks, blogs, videos, or some other form of content. You don’t normally have an extensive social media platform following when you first start creating content, so don’t stress about it; initially, it’s highly likely that no one will read it anyhow! It’s a safe time to get into the mechanical process of creating content and subsequently promoting (I will come on to that) that content. Just crank that handle and find your groove to start with!

Image by Ryan McGuire from Pixabay

Make yourself a platform

This can be a website, or at a minimum, standardise your social media handles where possible. When you create content, you will build a brand of some sort, even if it’s not your intent. People will come to associate you with the type of content that you create. If you have all of that content in one place, that will strengthen your brand and allow you to keep control of your stuff as well. Content will become scattered over time but don’t be afraid to have your own site (even though no one will read or watch it anyhow initially). If front-end web design is not your idea of fun, check out SquareSpace, Wix, or WordPress (there are more). You can also use canonical links to share your content on other platforms as well, such as Medium.

Find the medium that works for you

Fortunately, we’re all different:

  • Some people like reading

  • Some people like watching

  • Some people like listening

  • Some people like a combination of reading, watching and listening

My point is, create content that you’re passionate about and that you care about. It’s fine to exclusively create one type of content if that’s your skill-set.

Create ‘experience-based’ content

No one can argue with your experience. This also negates the argument of “someone’s already created that content”. No one has your experience or our viewpoint – if you don’t create it, no one else can! Experience-based content really helps to validate other people’s experience as well. Do you think it’s too basic or too easy? Nope, we’re not born good at something. We all have to learn it, and basic/easy content is a huge help on that journey.

Regularity beats size

It’s easy to create a huge amount of content for your first few pieces, and then content-creator’s block hits, life throws you a curveball, or you’re just out of enjoyment for the process. You do not need to come at this at full speed. Content creation needs to be well-paced and accepting of the limitations in your schedule (I’ll come on to that too). It’s much better to go a bit smaller and be able to release content on a regular cadence than release War and Peace every six months. It’s also much easier for your readers to consume that way. I think those social media algorithms prefer it too. Yes, I know I’ve bent the rules slightly with this epic blog!

Get yourself a community mentor

I wrote a blog on this which you can check out that has a lot more detail, but the high-level summary is that there are plenty of people in the community who have walked the same path as you and are willing to give you their time to help you on your journey. They are people who want to give you a seat at the table; it would be rude not to sit down.

Don’t overthink what content people want

It’s very easy when you’re creating content to think that you should create content “that the audience wants”. While yes, I can see that point of view, it is highly likely that thinking this way will:

  • Narrow your vision and creativity

  • Reduce your authenticity

  • Stop you from leaning on your own experience

By all means, consider the audience; you wouldn’t create a talk on Java and give it at a .Net conference (probably), but don’t throw away all the things that will make your content great when you’re considering them and their expectations.

Back to the hacks list

Creating Personal Content

These are the hacks that are useful when you’re creating content outside any corporate brand. This might be blogs, videos, podcasts or more. There are lots of options to choose from!

Three hourglasses in a row

Take (or even make) time to create content

Time is all we have, and it’s precious. Consider spending some of it on yourself instead of streaming services, where possible. I appreciate we are all very busy, and recent events may have compounded that, but if you don’t take the time, no one else will. Of course, there are big hitters in this department like dependants, job, and health to consider as well. Also, life will throw you curve balls (and they’ll hurt). However, keep trying to make the time if you can. The rewards are worth it.

Image by Alexandra ❤️A life without animals is not worth living❤️ from Pixabay

Information density is a Good Thing™️

When your audience consumes your information (reads your blog, watches your video, listens to your talk), they do so in different ways. Some will want exactly the information you’re providing and no more, some will have questions and want to go deeper, some will be really fired up and want to know everything about the topic! Because your audience is all different, the best thing you can do to support their learning is to provide information density if you have it. If you referenced other content when you created your materials, or if you can point your audience at more resources, please do so. You can do this with links, QR codes, lists at the end or whatever works for you and the content. This blog from Trisha Gee is a great example of information density!

Consider usability

If your content is not accessible, you exclude part of your audience. Make sure that your content is as accessible as possible, irrespective of the type of content. The World Wide Web group has created some helpful guidelines for written and video content in this regard.

Credit where credit’s due

If you use other people’s images (always with permission), please ensure you credit them appropriately. There are some sites such as Pixabay and Upsplash that have royalty-free images you can use. You don’t even need to credit the artist, but please do. It’s free to be nice, and without them, your content might just be a wall of text.

Try pairing on content

Many of you may have paired on code, but have you ever tried pairing on content? Even if the other person is a friend with some time to give you, get on a call and start a screen share; it’s all the rage these days! I wrote a blog on my experience of pairing on content creation, so I’ll let you dive in on your timescales.

Don’t let language skills hold you back

I get paranoid about this one. However, the truth of the matter is that slightly dodgy grammar, or a typo, is not going to block your content. I also want to mention accents; we all have them, and they’re all beautiful and part of us. If (to my ears) you have an accent, then I’m already in awe of you. Why? Because you speak at least one more language than I do, and you’re delivering content in your second/third/nth language, absolutely amazing. Embrace your awesomeness and skills and create content in whatever language you want to!

Leave reflection time

I benefit a lot from this. Once you’ve created your content as a first pass, take a break. Go for a walk, have a sleep, play with the kids, or tidy up. Just take a break. When you come back to it, you’re much more likely to spot any issues and even tweak it, so it’s even better. That said, don’t leave it so long that you accidentally forget to publish it.

Back to the hacks list

Promoting Personal Content

You don’t need to be good at self-promotion; you need to learn to be comfortable with content-promotion. These hacks focus on getting the content out there. There is a lot of material out there on how to work with social media. It’s outside the scope of my knowledge and this blog, however.

Sparrows talking to each other

Tell people you’re going to do it

This one sounds so obvious, but is frequently neglected because we labour under the illusion that it’s self-promotion, not content-promotion. This one is also especially pertinent to public speaking. If you’re going to give a talk, tell people you’re going to do it! I think many of us feel uncomfortable about this notion, but if you’re speaking about something that you have experience and authenticity in, why would you keep that knowledge to yourself when others might benefit from it? This means sharing your scheduled talks on whatever platforms you’ve selected as your vehicles for content promotion.

Image by suju from Pixabay

Don’t be afraid of feedback

Feedback can be scary, but there are a couple of things it’s worth remembering. For both of them, I am assuming that the feedback is not abusive. If it is, that’s why we have block buttons and code’s of conduct; please do not stand for it. Okay, so when you get feedback (irrespective of how you feel), the first thing to acknowledge is that they’ve consumed your content. That means that they’ve given you the gift of their time. The first thing you can do is say Thank you. That’s it, and it’s that simple. You don’t need to agree with their feedback, you can still grind your teeth, but they have consumed your content. The second point to remember is that you are in control. You can take the feedback on board, or you can disregard it; it’s completely up to you. You can fix that typo, slow down your talk, or use different lighting for your video. It’s up to you. Everyone has an opinion, and some people choose to share them. What you do with those opinions is your call and yours alone.

Use platforms consistently

When I say platforms, I mean things like Twitter, LinkedIn, Facebook, etc (no, I’m not going to link them in this instance). However, you choose to share and promote your content on these platforms is, of course, up to you, but just do so consistently. So if you like to use Twitter exclusively, great, do that. If you like to use Twitter and LinkedIn, great, do that. However, don’t switch around the place without good reason and without notifications. Switching platforms randomly can lose your audience who want to consume your content.

Back to the hacks list

Creating Corporate Content

Perhaps you’ve been asked to create some content alongside your day job for the company that you work for. In that case, here are some hacks that can help you to navigate that, especially if it’s your first time.

A high rise building

Ask about corporate voice / brand

When you write personal content, you can use your own voice and brand, but when you create corporate content, it’s very likely that you’ll have to adhere to whatever the corporate voice and brand guidelines are that already exist. It’s best to know about these upfront. Writing in a style that is not your own is harder than you might think. Consider trying it before you commit to creating content that is not in your style.

Understand expectations (yours and theirs)

You need to find out things like timescales first and foremost. Bear in mind that whatever you do in this domain is in addition to your day job so understanding their expectations is key. You also need to ask yourself if you have the bandwidth for this, it might be in addition to your day job, but that certainly doesn’t mean it should be done out of hours! Set your own boundaries in this regard and communicate them.

Image by Michael Gaida from Pixabay

Learn about the review process

You’ll have stakeholders that want to review your content and indeed should, stakeholders that don’t want to review the content and should, and then stakeholders who want to review everything that they can, even if it’s not their job. I wrote a blog on this too, specifically from my Technical Writing experience. Identify who is in each group and work out how you’re going to work with them. What are their expectations of the content and review cycle? Do they want to review all the content at once or as bite-sized chunks?

Check the promotional strategy

Often in corporations, there are people who promote corporate content as part of their role. Find out if you have these people and understand who is going to be responsible for promoting the content you create. Are they expecting you to share the content you create from your personal social media as well? Are you comfortable with that? It’s best to understand the expectations in this area before you say yes.

History can tell you a lot

Unless you’re in a start-up, the chances are that you’re not the first person to write a post on the corporate blog or be a guest on their podcast. Ask your colleagues what their experience was like, such as expectations, the review cycle, stakeholders and more. Go ahead and extract as much information as you can so that you can make an informed decision.

Back to the hacks list

Summary

So that was a bit of an epic blog! I hope there were some useful snippets of information in there. I hope that at least some of the hacks in here inspire you to go on and create some content on your experience and then share them with the community. Give it a go!

Mobile phone showing imaginary data

If you got this far, I’m thinking of turning this into a publication/book and adding more detail, examples and hacks. If this is something that you’d find useful, please do let me know or leave me a comment!

Pairing, but not as you know it

We’ve all heard of the benefits of pairing when it comes to coding, many of us have done it in our jobs and reaped the rewards, but have you ever paired to write English?

code-with-me.png

The agreement

Last week I suggested that we, Trisha Gee and I, do exactly that. We were both struggling to get into the zone of some written content that needed creating, and I’ve always wanted to try pairing on writing. I’ve benefited myself from pairing on code and, as a sole technical writer in the past, I’ve watched with envy as developers paired on their deliverables as I cracked on with me, myself and I for collaboration. Trisha agreed that we could try it so here’s the honest account of how pair-writing went, and what I learned.

We set aside two hours for the process. We were writing the content in IntelliJ IDEA, so we opted to use the new Code With Me functionality, so we could share our session in real-time with audio and video for the full 2021 remote-pairing experience. First up, we installed the plugin (currently experimental) and then we joined the Code With Me video call.

We spent a few minutes messing about with Code With Me, working out what we could and couldn’t do and then Trisha talked me through the pairing model of a driver and a navigator. In this model, one person drives (types) and one person navigates (thinks and talks). At this point, we both agreed I would drive, and Trisha would navigate because she knew the subject well, and I can type pretty fast on a good day. With the roles assigned, I put on my racing helmet, got into my rally car, and strapped myself in. While I was amusing myself with my fantasy car world, Trisha was creating a Scratch file to dump notes in that she wanted to come back to as she was navigating us around the track.

 

The pairing

Okay, so, we’re off. I was quite nervous about how it would work given I had pushed for it, but I kept up with the musings from Trisha and adopted shorthand where necessary. I surprised myself at how few mistakes I made. I was keen to ensure that what I noted down would be legible and understandable because I would be using my notes to turn the content into customer-facing content later. If I couldn’t do that quickly and easily, then this whole process wouldn’t be worth it. It would still be useful in that we would know that pair-writing doesn’t work, but that would be about it.

I kept an eye on the clock, and I think we were probably chatting for about 35 minutes in total. We were rudely interrupted by a phone call from my solicitor, which I had to take to try and keep my impending (and exceedingly stressful) house move on track. That is the point that we pulled off the race track. I think I’m probably done with that analogy now.

Image by Dimitris Vetsikas from Pixabay

 

ooops.jpg

The mistake

 

Before we finished the pairing session, Trisha was keen to get some inline code working that was being pulled in from another project. She talked me through how to add an attribute for the Asciidoc Plugin so that the code would be pulled in. Unfortunately, it didn’t work, so, after much discussion and bemusement, we decided that the experimental Code With Me plugin might be the problem.

We left that call and hopped on a different video call to troubleshoot. It’s entirely possible that Code With Me was not in any way the problem, and the problem was that the code I was trying to grab hadn’t been pushed, but we’ll just leave that one there!

Image by Craig Steffan from Pixabay

 

keyboard.jpg

The write-up

Skip ahead three days, and it was time to write up the notes from the pairing session. I was apprehensive because I was worried I wouldn’t understand my notes, but I was pleasantly surprised! Of course with a typical code pairing session, you wouldn’t walk away from it with half-baked, non-compiling code, but I was hopeful that my brain could make the notes I’d written previously into effective content; the equivalent of compiling code.

The first thing I did was commit the notes from the pairing session locally. Yes, I could have just deleted them and then used IntelliJ IDEA’s Local History, but I thought I’d go down the commit route for posterity and longer-term tracking. Once I’d committed it, I started hacking up the content. I went paragraph by paragraph reworking my driver notes into useful pros. It took me 30 minutes on the dot. I committed the updated topic and felt extremely pleased with myself. It had worked!

Image by Daniel Agrelo from Pixabay

 

wine-cheese.jpg

The learnings

It’s not just wine and cheese that go exceptionally well together as it turns out! Pairing works for writing too! In fact, it works really well. If you have one person who knows a lot about the subject they might make a great navigator (not exclusively).

You don’t need to have the same experience, or even the same job role, to pair on something; I recommend you try it. I wish I’d done more of this as a Technical Writer, I think it would have been very successful in a number of professional situations where I needed to create the content and didn’t (yet) have much subject knowledge. I will certainly be doing more of it now!

Image by Oldiefan from Pixabay

 

Generating Code with IntelliJ IDEA

One of the super cool things about IntelliJ IDEA is how much code you can generate with minimum effort. Yes, it’s not the 1990s anymore, we’re no longer measured on how many lines of code we generate (thankfully), but you also know that Java has its fair share of boilerplate code.

Well, there’s a shortcut in IntelliJ IDEA that generates a lot of code for you:

  • ⌘N on macOS

  • Alt+Ins on Windows and Linux

These shortcuts load the Generate menu! Here’s a quick tour of where you can use it in Java projects in IntelliJ IDEA. It’s not a complete list; let me know where else we can use it please!

New Java Class

In the Project Window, you can use this shortcut to create a whole host of things which are project and folder specific. If you use the shortcut on your directory that is marked as your sources root (usually src) in a Java project you get the option to create a new Java file (among other things). You’re then asked to select between a Class, Interface, Record (Preview), Enum or Annotation. It’s a speedy way of creating new classes for your project.

Before we move on, a closely related shortcut is the one we use for a new Scratch File. It’s ⌘⇧N on macOS, or Ctrl+Shift+Alt+Ins on Windows/Linux. You can select to create a new Scratch file using ⌘N on macOS, or Alt+Ins on Windows and Linux in the Project Tool window, but it’s worth committing the scratch file shortcut to memory too as it’s handy to be able to dump some code or notes in an area outside your project and share it across IntelliJ IDEA projects.

Constructors

Now that you’ve got your class, you may want to generate a constructor or two. However, before we do that, let’s add a couple of variables to our class:

public class GenerateCode {
   private final String name = "Helen";
   private int age;
   private String mood;
}

We can use the same shortcut to make ourselves a constructor. We get some options here because we’ve got some fields in our class:

generate-constructor.png

IntelliJ IDEA is asking us if we want to pass our fields into our Constructor.

If we select both and click OK we have our Constructor with the parameters passed in.

public class GenerateCode {
   private final String name = "Helen";
   private int age;
   private String mood;

   public GenerateCode(int age, String mood) {
       this.age = age;
       this.mood = mood;
   }
}

Other Class-Based Generate Options

We don’t need to stop there either. There’s a whole host of code that IntelliJ IDEA can generate for us at this stage including:

  • Getter

  • Setter

  • Getter and Setter

  • equals() and hashCode()

  • toString()

  • Override Methods

  • Delegate Methods

  • Test

While we’re here, Java Records are coming and IntelliJ IDEA is ready. Another way you could generate code if you’re not ready to move to Java Records is to use the Generate shortcut to create a new Java record, and then you can convert the Java record to a normal Java class with ⌥⏎ on macOS, or Alt+Enter on Windows and Linux with your caret on the class name.

Implement Methods

When our Java class implements an interface, we need to ensure that we implement that interface’s methods. The Generate menu helps us here too. Let’s say that our code looks like this, and we’re implementing NewInterface:

public class GenerateCode implements NewInterface {
   private final String name = "Helen";
   private int age;
   private String mood;
}

When we use ⌘N on macOS, or Alt+Ins on Windows and Linux this time, we see select a new option call Implement Methods:

implement-methods.png

The keyboard shortcut is ⌃I on macOS, or Ctrl+I on Windows/Linux.

This allows you to generate the code required to implement the methods in the Java interface that we’re implementing with the @Override annotation.

Now IntelliJ IDEA has generated that code for us:

public class GenerateCode implements NewInterface {
   private final String name = "Helen";
   private int age;
   private String mood;

   @Override
   public void doSomething() {
   }

   @Override
   public void goSomewhere() {
   }
}

This also works for overriding methods from superclasses/super abstract classes. 

Add Parameters / Arguments

Another useful trick you so is to use ⌘N on macOS, or Alt+Ins on Windows and Linux when you’re in a dialogue, and you need to add more rows or data. For example, we added a default constructor to our class, but we now want to refactor it to change the signature. Our code currently reflects the default constructor:

public class GenerateCode{
   private final String name = "Helen";
   private int age;
   private String mood;

   public GenerateCode() {
   }
}

Let’s refactor the Constructor with ⌘F6 on macOS, or Ctrl+F6 on Windows/Linux. In the Change Signature dialogue, you can use ⌘N on macOS, or Alt+Ins on Windows/Linux to add a new parameter. This saves you using your mouse to click the little + icon.

This trick works in all the dialogue boxes that require additional lines to be added that I’ve found so far.

Generate Test Methods

Finally, everyone loves a good test and rightly so. We’ve already mentioned that you can use the Generate menu from a Java method to generate a corresponding test class. However, once you’re in the test class, you can use ⌘N on macOS, or Alt+Ins on Windows and Linux again to create much of the boilerplate code you might need, including (for JUnit5 at least):

  • Test Method

  • SetUp Method

  • TearDown Method

  • BeforeClass Method

  • AfterClass Method

If you are working with a different testing framework, your Generate menu will give you other relevant options.

Summary

Java may be a little clunky on the boilerplate side of things, but IntelliJ IDEA takes the heavy lifting out of that to a large extent so along with the shorcut for intention actions, it’s a compelling combination.

What 2020 Taught Me

I’ve never given the word normal that much thought before, but 2020 has made me challenge my perceptions of normal. Normal is just a word used to describe the current social status quo. Normal right now is facemasks, excessive soap, and social distancing. If you’d have mentioned phrases like lockdown, covidiot, or keyworker in 2019, most people would have tilted their head to one side, given you a quizzical look and wondered just how large the wine was you had at lunchtime.

Equally, if you’d have said they’d be a fundraiser to buy Chris Whitty his own ‘next slide’ clicker, that Jonathan Van-Tam would become famous for comparing yoghurts to vaccines, or that Brexit would not be the biggest story of 2020 (in the UK), people would have likely nodded slowly and pretended that they had to leave to take an urgent call.

However, all of this is now entirely normal for me. Along with teachers giving kids grades because exams are cancelled, hugging loved ones through transparent shower curtains, and me waving manically at my webcam several times a day. Normal is a word that describes a constant state of flux. I’ll be using it more thoughtfully in the future. I’ll also be checking if I’m on mute.

These are my top three learnings from 2020.

I’m still a Java fan-girl

I pivoted my career from Technical Writing to Developer Advocacy in 2020 (via Product Owning). I did Java at university, it was a long time ago, but as it turns out, I still rather like it. Unlike the more prepared of my peers, I turned up at Sussex University to study Computer Science with virtually no knowledge beyond how to plug a computer in, and a bet to get a degree that I was determined to win. Retrospectively, I probably could have drunk a little less, and applied myself more, but I was 19 and somewhat lacking in life experience and foresight.

Fast-forward 20+ years, I’m no longer 19, I have some life experience, and occasionally I have foresight. This has meant that as my career comes full circle and back to Java (which, much like me, has changed a lot), I’m finding it much easier to work with the language and apply myself. It’s made me realise how much I love the language; although I think a good portion of that love is also attributed to the invention of IDEs such as IntelliJ IDEA. Wow do they make life easier when it comes to learning to code; I wish they’d been around in the ’90s!

I guess age isn’t all that bad after all (aside from pulling muscles doing mundane tasks around the house which seems to be part of the package). Coming back after a period of evolution is really enjoyable, especially in a role where I can learn and share with others who are on the same journey.

I enjoy speaking at (currently virtual) events

Honestly, before 2020 this terrified me. However, 2020 brought this new normal, which involved speaking from the safety of your dining room table/box room/kitchen/sofa to an audience. I’d never done a conference talk of any sort before except internally at places I worked. I joined the London Java Community, and I started with a 5-minute lightning talk. I got the bug; I got it really bad actually. I was offered the chance to moderate a YouTube panel through work and took it, and this week I’m giving a longer presentation to code nation, and I can’t wait. Oh, I’m also doing a podcast episode in a couple of weeks!

I really enjoy speaking, and I’m looking forward to being able to do it in person, so I can better learn the craft and meet more people. I’m sure that’s a completely different skill-set, but one I look forward to working on.

Time is a gift

2020 gave me the gift of time. It gave me an hour of commuting time back a day (at least), it gave me all my social commitments back (I’m still in mourning for these, but I hope they’ll be back one day), and it meant that the phrase “set the alarm” was a fairly pointless one. The 2020 commute to work could be managed in about 7 minutes providing I didn’t have bed hair.

There was no requirement to go anywhere, in fact, it was mostly against the law to go anywhere except the supermarket, and the one thing that needed to happen (work), felt oddly more manageable as a result. Of course, this is just my experience, for many people the 2020 experience robbed them of time, especially for those with children which I recognise.

Initially, I was a little bit confused with what I should do with all the time that I wasn’t used to having, but gradually I became rather accustomed to it. I have read more books this year than in the past five years combined, I have created myself a platform (this site), I have embarked on learning new things both for fun and in my job, I have crafted house-based gym routines that even the most sadistic gym-goer would be proud of, I have made quilts for friends and colleagues, I have contributed to open source projects, and I’ve started writing regular blogs on a variety of subjects too.

Summary

I know for many that 2020 has been an incredibly tough year. I have definitely had many low points as well, but these are the learnings that I’m taking from the year for myself, and I hope I can build on them in 2021; whatever that looks like.

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.

7 Hacks for Self-Promotion

Participating in, and learning from, a community is tough to do if you don’t put yourself out there in some form. Or more specifically, if you don’t put yourself out there and tell others that you’re there; self-promotion. The conclusion that I’ve come to over recent months is this: Self-promotion is hard.

When I had that realisation a few weeks ago, I did this lightning talk for the fantastic London Java Community. This blog is a follow up to that talk in which I want to give a bit more background, share the most important realisation that has helped me to get more comfortable with the idea of self-promotion, and provide some (7 in fact) hacks to help you get better at self-promotion.

Before we move on, a brief recap:

  • Why is self-promotion hard?

  • Making self-promotion easier

Why is Self-Promotion Hard?

I’m going to change my mind here; maybe it’s not hard, perhaps we just don’t know how to do it. Or rather, we don’t know how to be comfortable with it. We’re often taught that self-promotion is not a favourable personality trait, and as children, we might have been told that we should be seen but not heard. Maybe we’ve been told it’s narcissistic or self-serving to talk about ourselves as well. Whatever the case may be, some of us in my experience find self-promotion hard.

Making Self-Promotion Easier

I’m not going to say “do this, and you’ll be comfortable promoting yourself!”. What I will say is that this realisation has helped me a lot in the sphere of self-promotion. I realised I didn’t want, or indeed, need to promote myself. I wanted to promote my content. Or to put it more succinctly:

It’s not you that you need to promote; it’s your content.

This distinction is what has helped me to be more comfortable with the notion of self-promotion. Promoting content specifically, rather than me, feels much more comfortable and more natural. Okay, it’s not as catchy, but you don’t need to outwardly distinguish self-promotion from content-promotion if you don’t want to.

Don’t think of it as self-promotion, think of it as content-promotion.

So here we go, 7 hacks for content-promotion (of your content)!

7 Hacks for Content Promotion

  1. Make yourself a platform (site/brand)

  2. Get yourself a sponsor

  3. Make the time to create content

  4. Don’t overthink what content people want

  5. Find the medium that works for you

  6. Don’t let English skills hold you back

  7. Enjoy yourself

1. Make yourself a platform (site/brand)

If you can, I recommend building yourself a website. If web development isn’t your idea of fun, that’s fine; there are plenty of WYSIWYG options like SquareSpace and Wix. WordPress has also come a very long way in the last couple of decades and is exceptionally bendable. How often do you look back and think “I wish I had a list of all the cool stuff I’ve done?” I know I do. It’s why I made this site! Put everything on your site – your talks, your blogs, your bio, your CV (if applicable). If you don’t want to have a site to maintain and pay for (hosting), then there are alternatives such as dev.to or Medium (beware the paywall). Of course, there’s YouTube for videos as well.

2. Get yourself a sponsor

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!

3. Make the time to create content

This is easier said than done, but it’s important. We’re all short of time in the day. It doesn’t matter what your commitments are, the vast majority of us have very little time to spare. There are some big hitters in this department like children, health, and jobs that shrink that time down, but it’s important to realise that time is all we have. It’s up to you how you use it. Some people will be able to produce content twice a week or more. Others will find their flow with monthly content. Find what works for you and be prepared to change it without judgement when life throws you a curveball (because it will).

4. Don’t overthink what content people want

We’re all different (thankfully). Just create content that you want to create that you think will help the community. That’s it. You’ll get some hits; you’ll get some misses, don’t sweat it. For example, people love reading about experiences; someone else will be walking the same path as you. If they’re a little bit behind, you’ll show them the way. If they’re walking alongside you, you’ll confirm their experiences and understanding. If they’re ahead of you, they might even look at your content and pause to help you out because they’ve been there.

5. Find the medium that works for you

Some of us like to write. Some of us want to make videos. Some of us like to Tweet. Some of us like to do all three and more. It doesn’t matter. Pick what works for you. Everyone is unique, and we all prefer different mediums for creating content and learning. Don’t fall into the trap that you need to make videos because it’s (still!) 2020. Equally, don’t assume that everyone reads blogs from start to finish. Just do what feels right for you, and you’ll find your groove naturally.

6. Don’t let English skills hold you back

Yes, I like English grammar, and I try not to make spelling mistakes, but that doesn’t mean that my posts are a shining example of perfect English language. Grammar and spelling are two aspects of a much bigger picture – your message! Yes, do create with the best skills that you have, but don’t let grammar or the possibility of a typo in your content stop you from posting something. If you’re uncomfortable, then you could ask someone to proofread content for you as a second pair of eyes, or you could use a tool such as Grammarly to help you out.

7. Enjoy yourself

This one is critical; I probably should have put it first. If you don’t enjoy what you’re doing, you won’t do it. It’s that simple. You need to believe in what you’re doing, enjoy what you’re doing, and get value from what you’re doing. Yes, there are times when I’m stressing about writing a blog because I’ve missed my schedule, or I’m worried about a YouTube live stream, or I’m updating my site while having a grump because I want to be doing something else, but, when it’s all said and done, I love doing what I do!

Summary

There are lots of great blogs out there already on why you should get good at self-promotion, but for me, it boils down to community participation, something that is even harder in the current climate.

In summary:

  • Put your content out there and promote it so that we can read it / listen to it!

  • Join communities and share your experience.

  • Tell others about it and let’s learn from each other.