Ch-ch-ch-ch-changes (in the workplace)

Humans are not known for being amazing at managing change; at least, there’s definitely been plenty of times where I’ve not been amazing at it. I’m guessing if you’re reading this blog post then perhaps change is something that you’ve often pondered as well. We often cope with disruptive or stressful changes in our life with coping mechanisms but they are rarely early. I call them just-in-time coping mechanisms because we don’t usually know how we will react to a change before it happens, even if we can see it coming. It might be a so-called positive change, but those changes are still very capable of causing stress.

I gave this talk a little while back on this subject and this blog post is the summary in case, like me, reading is more your thing. I looked at the challenge of personal change management from two angles, firstly for leaders who are instigating a change and secondly for those who are impacted by a change. I predominantly focused on workplace changes but you can extrapolate many of these ideas to personal changes as well.

Do’s for leaders of a change

Let’s say you’re the one driving the change. Perhaps you’re leading a change to the processes your team use for code reviews, or perhaps you’re leading the whole team. If that sounds familiar, here are my top tips:

  • Be transparent; share as much as you can and share it in a timely fashion. Of course, as a leader, there may be some pieces of knowledge that you can’t share but the vast majority of the time it’s much better to be open and transparent with what you know (and what you don’t know).
  • Include people; share your leadership vision and why. If people know why you’re changing something, they are far more likely to not only help with the change but have a better experience throughout its life cycle.
  • Lift others up; be aware of whatever privilege you have and help others achieve their goals.
  • Give people choice; change is disruptive, maybe this change isn’t for everyone, always give and respect the choices people make.
  • Celebrate people; even those that leave your team; in fact especially those that leave your team! People leaving is not always a sign of a “bad manager” that’s a sweeping generalisation in my experience. Remember that person will still be talking about you and the company they left years after the event – make sure their memories are positive ones.
  • Plan people’s first day and onboarding meticulously; set people up for success. You’ve invested a lot of time and effort in them to get them to this point so set them up for success at each step of the way. First appearances really do matter. Give them a warm welcome.

Photo by Vlad Bagacian on Unsplash

Do’s for those impacted by a change

All of us will find ourselves in this group sooner or later, change is, after all, inevitable. If you’re impacted by a change, irrespective of if you saw that change coming, consider the following tips:

  • Find out more; get in front of it, especially if you didn’t see it coming. It’s vital that you inform yourself and get as much information as you can so you can make decisions as required.
  • Consider if you should cut your losses and move on; sometimes it’s just not worth it. If you’re not sure if it’s for you, give yourself a timescale in which to decide and give some thought as to what you need to find out before you can make an informed decision.
  • Give yourself time and space to the change; remember coping mechanisms are just in time and many things are improved with a good night’s sleep.
  • Don’t be afraid; you got this!

Photo by Sammie Chaffin on Unsplash

Remember!

Finally, here are a few points to remember about change:

  • Change is scary; informing yourself and giving yourself a timescale to respond to that change can help reduce the scariness level.
  • Change is inevitable; you will always be impacted by a change, and sometimes you will be the one driving the change. Try and enjoy it, or even thrive on it.
  • Change can lead to opportunities; sometimes staying put and accepting the change is in your best interests, sometimes it’s not.
  • You control more than you think you do; really you do!

Photo by Miguel Bruna on Unsplash

Five cool features in IntelliJ IDEA

Here are my top five cool features in IntelliJ IDEA. There are of course more than five, but that wouldn’t make a catchy blog title!

  • Management of JDKs
  • Code completion
  • On-demand error highlighting
  • Customization
  • Tight integration

#1 – Management of JDKs

IntelliJ IDEA does a fantastic job of managing your JDKs. You can download new JDKs and configure existing JDKs on your machine with IntelliJ IDEA. I created a tip for this on the IntelliJ IDEA Guide but the short version is – go to your Project Structure with ⌘; (macOS), or Ctrl+Alt+Shift+S (Windows/Linux), to view your Project Structure.

The SDK drop-down shows you all the JDKs that are configured for use with IntelliJ IDEA (assuming you’re using a Java project), then there is an option to Add SDK and finally, IntelliJ IDEA shows you a list of detected SDKs:

The top list outlined in orange is all the JDKs that I’ve configured for use with IntelliJ IDEA. The bottom list outlined in green is the detected SDK – that is all those on your machine that you’ve downloaded but are not yet being used by IntelliJ IDEA. The middle option, Add SDK, outlined in purple is where you can download a new JDK from different vendors to your machine by selecting Download JDK. You can also select JDK to browse to a JDK on your machine that exists but IntelliJ IDEA hasn’t detected. You can also download IntelliJ Platform Plugin SDKs and Android SDKs here.

When you select Download JDK you can choose your version and vendor and IntelliJ IDEA will download your chosen JDK and configure it with use with IntelliJ IDEA.

#2 – Code Completion

IntelliJ IDEA takes code completion to the next level. There’s Basic Completion, Advanced Completion, Live Templates, Postfix Completion, Statement Completion and more.

Here’s a whirlwind tour for you! Basic completion usually is available by default, but you can also invoke it with ⌃␣ (macOS), or Ctrl+Space (Windows/Linux). Smart completion or type-matching completion is similar to basic completion, but it only shows options for the current context. You can invoke smart completion with ⌃⇧␣ (macOS), or Ctrl+Shift+Space (Windows/Linux).

Live Templates are also a form of code completion that allow you to use abbreviations such as main that IntelliJ IDEA will convert to Java’s main method. There are dozens of live templates, and you can create your own!

Postfix completion is similar to live templates in some respects in that it also uses abbreviations but it helps you avoid backward caret jumps as you craft the code. It also allows you to manipulate existing code as you add the dot and then the abbreviation for the postfix completion you want to use, for example ifn for if null.

Finally, statement completion is one of my favourites because it adds the correct parentheses, braces, and semicolons to my code! The shortcut is ⇧⌘⏎ (macOS), Ctrl+Shift+Enter (Windows/Linux). This is just one you need to try out, granted three key presses is more than one semi-colon but it’s very helpful because it reduces errors in my code. I also find I can quickly use ⇧⏎ (macOS), or Shift+Enter (Windows/Linux) to create a new line – it’s just a syntactically pleasing combination!

#3 – On-Demand Error Highlighting

You can write code and see error highlighting in real-time in IntelliJ IDEA, no more waiting for the compiler; if your code isn’t going to compile, IntelliJ IDEA will tell you about it straight away. I prefer to fix errors as they happen, usually with Quick Intentions which is ⌥⏎ (macOS), Alt+Enter (Windows/Linux). IntelliJ IDEA helpfully gives you a little red light-bulb when there’s an error with your code:


  

Alternatively, you can use F2 to navigate to each error in your Project or use the Problems tool window which is ⌘6 (macOS), or Alt+6 (Windows/Linux) to get an overview of any problems across your project.

If you search the IntelliJ IDEA tip page for “quick intentions” it will give you a flavour of some of the ways it can help.

#4 – Customisation

I would be remiss if I didn’t mention how much I love being able to customise IntelliJ IDEA. Fortunately, it comes packed with sensible default options but equally allows you to customise these over time as you get more familiar with the product. Of course, I don’t use 95% of the customisations but the point is that I can and many people in the community do. That said, the 5% I do use makes my authoring experience a more enjoyable and productive one. The best way to get an idea of what IntelliJ IDEA is capable of in the customisation department is to go to your Settings/Preferences with ⌘, (macOS), or Ctrl+Alt+S (Windows/Linux). You can then browse and view the groupings on the left such as Appearance & Behavior and Editor. My favourites customisation are:

#5 – Tight Integration

I couldn’t come up with a better name for this one, but fundamentally it’s the integration part of the IDE. It’s easy to take this part for granted because IntelliJ IDEA makes it look easy, however integration with tools such as Git, Maven, Gradle, Docker and more in both IntelliJ IDEA Community Edition and IntelliJ IDEA Ultimate.

Having a one-stop shop for all your coding needs really is a productivity boost, plus there’s no more faffing about configuring external tools to work with your coding tool because it’s all neatly integrated!

The Great Resignation – So good I did it twice

Three months ago I left JetBrains because I took an opportunity at MongoDB as a Keynote Storyteller. Today I am returning to JetBrains as a Java Developer Advocate.

But that’s what a probation period is for, right? It’s a chance for the company to check out if you’re a good fit for them and more importantly, for you to check out if they’re a good fit for you. The probation period is a chance to test theories, form hypotheses and have new experiences.

In the last few weeks, while in my probation period at MongoDB, I realised two things. Firstly that it wasn’t a good fit for me, and secondly that I missed the work I was doing at JetBrains and the people I was doing that work with. Plus, life is short; we all have to find our own way.

I consider myself very fortunate, and I’m grateful to my colleagues for welcoming me back to a role where I know I can add value and work with the diverse and talented Java community once again.

I’m looking forward to continuing work on the IntelliJ IDEA Guide, creating videos for our YouTube channel, as well as getting to know the amazing Java community better. Trisha Gee and I are also busy on our book Getting to Know IntelliJ IDEA! I’ll share more updates once I’m re-settled and up to speed!

Let’s do this!

Small plant growing in someone's hands

It’s not just me, is it?

The 35 Stages of Creating a Conference Talk

You may well have heard of the five stages of grief, well in this blog post we’re going to cover the 5 stages of creating a conference talk. And then 30 more.

Before these five stages comes a crucial first step. It’s the one where you see a conference CFP, and you’re already at least 1.5 gin & tonics in because it’s 7 pm on a Saturday (or Tuesday, whatever). Before you know what has happened, you’ve come up with a suitably smart-sounding talk title and abstract, and you’ve submitted it grinning to yourself at your play on words. Then you get on with your evening and forget about it. You forget about it until, with a bit of luck, you get an email six weeks later that says something like, “Congratulations! Your talk has been accepted at <insert conference name here>.”

You cast your mind back to that Saturday night, but your memory is hazy. Still, it seems like a good idea, all you have to do is write the talk; the idea was the hard part! So you graciously accept the invite because it’s eight weeks away and then… read on.

Actual timelines may vary – not to be used as a project management tool unless you’re me.

Stage one – Denial

T-8 weeks, I bury my head in the sand and pretend that I didn’t just say yes to a conference that’s in eight weeks for a talk that I haven’t yet written.

Stage two – Anger

T-7 weeks, I start asking myself questions such as:

  • Why did I say yes to this? What was I thinking?!
  • This is stupid; I don’t want to do this/I can’t do this!
  • I’m never submitting to a CFP again, ever.

Stage three – Bargaining

T-6 weeks, I wonder what the impact would be on my sanity and brand might be if I email the conference and say something like:

I’m sorry I can no longer make the conference because <insert suitable excuse here that clearly isn’t even true>

Don’t do this. It’s okay to think it though!

Stage four – Depression

T-5 weeks, I can’t lie, it’s not right. I have backed myself into a corner and now I have to write this (stupid) talk.

Stage five – Acceptance

T-4 weeks, FINE I’ll write the talk! This is usually when I start writing the talk itself rather than just putting notes together. However, there’s more to acceptance than meets the eye. For me this step can be broken down into 30 separate steps (yes, 30)!

  1. Write content
  2. Decide content is crap
  3. Write different content
  4. Realise initial content wasn’t that crap
  5. Tweak content
  6. Decide whole talk is crap
  7. Briefly revisit stage three
  8. Force self to write more talk
  9. Decide whole talk is crap
  10. Give talk to brick wall
  11. Consider talk might not be crap
  12. Rework talk
  13. Decide whole talk is crap
  14. Give talk to friendly face
  15. Accept whole talk isn’t crap, mostly
  16. Incorporate feedback
  17. Realise talk doesn’t match the brief you submitted
  18. Decide brief was crap, revisit stage two
  19. Overhaul talk and make it pretty
  20. Give talk to more friendly faces
  21. Incorporate feedback
  22. Practice talk
  23. Practice talk
  24. Practice talk
  25. Practice talk
  26. Practice talk
  27. Practice talk
  28. Give talk
  29. Decide whole talk wasn’t crap
  30. Vow never to do this again, until the next time

It’s not just me, is it? Hope to see you there!

MongoDB

mongod, mongo, mongosh, mongos, what now?

As you might know, I joined MongoDB last month as a Keynote Storyteller, and, as you might expect, in order to work on the keynotes it’s important that I understand the world of MongoDB to the best of my ability.

As I progressed through my technical onboarding, I became aware that I was following some instructions without really understanding why. There is always a time and a place for this approach but this wasn’t it. In particular, I realised I didn’t exactly know when I would write these to my terminal:

  • mongod
  • mongo
  • mongosh
  • mongos

Yes, I know there are many more like mongodump, snigger, but I want to focus on these four first because they are the ones that I found myself using the most in my technical onboarding.

What is MongoDB?

This is as good a place to start as any. If I ask you what is MongoDB you’ll probably say “It’s a Database, Helen!” And you’d be right, but this is an excellent time for me to point out that it’s So Much More than just a database.

This is a good time to introduce MongoDB Atlas into the equation. MongoDB Atlas is a MongoDB database as a service and it has a ton of cool services that you can check out at your own pace with a free tier.

I’m starting here because the rest of this post makes references to MongoDB terminology. You will need a MongoDB cluster which itself is made up of multiple database servers of which one will be primary and the rest secondary (replicas). This means that if your primary server is unavailable/unreachable, your data can still be accessed. Your cluster also has clients that can connect to it and manipulate your data. Now, down to business.

mongod

No, mongod is not some kind of database deity. In fact, it’s usually pronounced mongo-dee and it’s the MongoDB daemon, also known as the server for MongoDB. If you don’t start your server you have no cluster and then, well, you got nothing. You run mongod to start your server.

The MongoDB server listens for connections from clients on port 27017, and stores data in the /data/db directory when you use mongod. However, you can start your MongoDB server with different parameters if required:

mongod -–port 12345 --dbpath /srv/mongodb/

That said, MongoDB Atlas runs mongod for you, so you don’t need to run the server yourself. It’s just useful to know from an architectural perspective at this stage especially as it might pop up in training.

The MongoDB daemon process that you start with mongod (or that MongoDB Atlas starts for you) manages your data access and any requests you might make such as add this, query that, or change that.

Documentation and helpful links:

mongo and mongosh

So what is mongo? It’s the shell, it’s the client, it’s a javascript interface that you can use to interact with the MongoDB server (mongod). For example:

mongo --host mongodb0.example.com:27017

However, as of June 2020, it was superseded by the new Mongo Shell, called, wait for it, mongosh! Bold for emphasis, it genuinely took me more than a few seconds to realise why it was called mongosh – you’re welcome. mongosh has improved syntax highlighting, command history and logging in case you were wondering! For example:

mongosh --host mongodb0.example.com:27017

When should you use mongo or mongosh? If you are able, you should run mongosh when you want to interact or change the data. Of course, if you prefer you can still use mongo but you won’t get the new features introduced in the newer MongoDB shell (mongosh). Don’t forget that the shell, whichever you use, is just a way to communicate with your database cluster.

Documentation and helpful links:

mongos

So that’s the daemon, or server, for MongoDB covered and two client options, that just leaves mongos for this blog post. This does not spin up multiple MongoDB clients, sadly. It’s just a proxy that sits between the client application (mongo/mongosh) and a sharded database cluster, that is multiple mongod replica sets.

It’s what your clients (mongo or mongosh) interact with when you run queries against sharded data. It does not replace your database server, it is in addition to. You need to point it at your replica sets, for example:

mongos --configdb cfg/127.0.0.1:27017

Now your first question should be why do I even need a proxy between my client and server just because my data is sharded? That is an excellent question! You need mongos to route the queries and any write operations to the shard(s) as required.

The mongos proxy is a map that your client can use to query or make changes in your cluster when your data is sharded. This in-between proxy is required because your cluster doesn’t know which shard(s) that data exists on, but the mongos proxy does. It also knows which shard to insert data into, if that’s your requirement.

Documentation and helpful links:

Putting it all together

This blog post has been a deliberately simplistic viewpoint to illustrate the components, however, I like to know what’s going on beneath various abstractions which is why I wrote it. That said, do remember that MongoDB Atlas manages this for you!

In summary, from the CLI, run mongod to start your MongoDB server for your cluster in a training environment. Note that in the real world (which again MongoDB Atlas manages for you), you would need to run at least three mongod instances. You should never run just one in a production environment. You can then use either the legacy mongo or the newer mongosh shell commands to interact with your cluster.

If your data is sharded you will need to additionally run at least one mongos process to ensure that your queries are routed to the right shard(s). Again I’m talking about a training environment here rather than a production environment!

I got one of the real MongoDB developer advocates (thanks Mark) to help me draw a diagram for you:

Diagram of the commands as architecture

Finally, for those of you wondering where you can get your hands on some MongoDB training, go check out MongoDB Basics and see where your learning journey takes you.

And that is mongod, mongo, mongosh, and mongos!

 

2021 All Wrapped Up

Well, here we are again. 2021 is almost over, and as usual, I have no idea where it went. I know I’ve worked hard and achieved a lot, but time seems to go very fast lately.

I read a lot of books

First up, books! I got through a fair number of books in 2021. Here’s the list, along with why you should read them too.

  • The Timeless Way of Building was arguably one of my favourite books this year. It was one of those books that managed to take my gut feeling about several “house-y things” and tell me why I felt the way I did. This book is for you, even if you’re not particularly interested in architecture. It might ignite a passion in you, as it did me, and give you a whole new way of viewing your house and home.
  • Predictably Irrational is the perfect book if you’re looking for an insight into your brain. You might not like what you find out, however. It’s changed how I view my behaviours, and I’d like to think it made me more self-aware. Then again.
  • A Mind of its Own is a fascinating read about our self-delusions. It’s not entirely comfortable, especially when you realise you’ve been kidding yourself all these years (and probably will continue to do so).
  • Yes please was a delightful read. I often think it’s easy to look at famous people and miss all the hard work that went in before seeing them on stage/tv. This book is brutally honest and open; it made me laugh and cry in the same sitting.
  • Woman & Power is for you if you’ve ever wondered (and frankly you should) about the roots of misogyny; this book is a must-read. It’s enlightening and depressing all in one. Read this book, then ask yourself how much longer must we wait?
  • Show Your Work is about learning to step out from the shadows. Also, since we’re here, please remember that good work does not speak for itself. You’ve been lied to. This book is an excellent read for everyone who wants to show their work professionally or personally.
  • Everybody Writes was such a good book. We’re not born good at writing, but we can learn and improve. So read this book if you do any writing and embrace TUFD (The Ugly First Draft)!
  • Thinking in Systems: A Primer was a book that I didn’t have any expectations of. I’ve found it quite hard going at times, but it will completely change and re-frame how you look at the world. I have a much better understanding of why things happen now and perhaps the smallest of grasps on the systems around me and their impact. This book will reframe your view of the world and add a lot of understanding to the systems you interact with.
  • Easy Peasy Puppy Squeezy is my current read. Of course, this means that soon we will become puppy parents. This book is doing an excellent job of training me to look after the family addition. I’m pretty sure it’s going to eat my shoes, books, post and anything else I accidentally leave at its height. Of course, it’s all going to be my fault when it does because they are “legal chew toys”!

I moved house

A lot has changed since we bought our old house back in 2014. We have both changed jobs and moved to remote working in part due to the type of job and in part due to the pandemic. We embarked on the journey of moving house in September 2020, had an offer accepted on our old house in November 2020 and moved in our new house in March 2021. It was four months of packing, stress, anxiety and then happiness. I don’t intend to repeat it any time soon, but I have no regrets about doing it. If you also moved house in the pandemic, remote high-five coming your way! One day I’ll manage to finish unpacking, today is not that day, tomorrow doesn’t look good either.

I changed jobs

2021 was a year of change! After almost 18 months at JetBrains, I accepted a role at MongoDB as a Keynote Storyteller. I’ve been there three weeks now, and it’s been a whirlwind already! I spent my first week in New York, which was awesome because I met my new team members in person, something that isn’t a given with remote working. Covid-19 brand Omicron has since ramped up, so I’m very grateful to be home now with good memories and lots to do!

Of course, this also meant that I got on a long haul flight for the first time in over two years. That part was stressful; the outbound and inbound requirements and resulting paperwork for Covid-19 took time and effort, probably because I checked it at least 8 times both ways.

Related to this, I also managed to move beyond the free tier for my Amazon S3 bucket of blog post images. This means that there was a lot of traffic to my site. Four thousand of you in fact came to check out my blog post for my last day at JetBrains. Can I get a hug, please?

I migrated my website

I’ve been procrastinating about this since February 2020. My site was hosted on SquareSpace and I was quite convinced that I didn’t know enough front-end web development to move it to WordPress, despite also recognising that I wanted it on WordPress because it’s a lot more configurable and cheaper. I was also struggling with my blogs as I tend to write them in markdown in IntelliJ IDEA and SquareSpace is not great at supporting markdown. So this festive holiday I decided to just bite the bullet and get on with it. After 2 days and only one exceptionally large gin when I misconfigured something and lost a bunch of stuff (no I didn’t have a backup and yes I should have had a backup) – welcome to my new WordPress site! I still need to untangle my blog post categories and tags, perhaps I’ll do that now. Also, it’s amazing the lengths I will go to to avoid writing my new talk. 

I’m co-authoring two books

I can finally announce that I’m working on a book with Trisha Gee called Getting To Know IntelliJ IDEA! I’m going to put this blog post down in a bit and work on it some more. It’s an absolute pleasure to work alongside Trisha and continue to advocate for users with the product. I still love working with IntelliJ IDEA even though I no longer work at JetBrains; there are not many products I can say that about!

But wait, there’s more! I can also share because it’s now public that I’m working with Daniel Terhorst-North on his book Software Faster. Daniel has a wonderful way of looking at life and the challenges throughout it. I’m honoured to be a part of this project and learn from Daniel. The book list above includes recommendations from Daniel too.

Summary

In summary, it’s been a year of change and growth. It’s been jam-packed, which is how I like it. As I look to 2022, I’m excited about contributing to MongoDB World 2022, book prospects, and continuing to share what I hope will be great content with the community. In addition, I’m building out a new talk that I’m excited about! I should probably apologise now for the shameless use of David Bowie lyrics. Right, time to chill a bottle of bubbly for the New Year!

It’s My Last Day at JetBrains

I’m leaving my role as a Java Developer Advocate at JetBrains today, Friday 3rd December 2021. I start my next adventure soon, but before I do, I want to recognise those I’ve worked with as well as my achievements!

My Team

First and most importantly, my team. Trisha Gee leads the team and is my sponsor, mentor and friend. I have learned an incredible amount from her, including being kinder to myself and how to prioritise my efforts. Trisha also steered me towards public speaking and has been my biggest cheerleader in that department. Working alongside Trisha has been an incredible opportunity and privilege that I’ll cherish forever.

I can remember being incredibly excited when I first met Mala Gupta. I was totally in awe of her, and I still am. Mala embraced what I brought to the table; the skills and the fears. Mala challenged me on several occasions in the kindest way possible. I’m forever thankful to her for that. It’s because of what Mala has taught me and the feedback she’s given me that I push myself even further out of my comfort zone, repeatedly!

Dalia Abo Sheasha helped me to recognise that it wasn’t just me who struggled with code at times – everyone does. She also taught me how to walk away and come back to something troubling me, something I have often struggled with. Dalia always treated me as her equal on the Java front, despite my lack of real-world experience. She always let me find my own way when we were solving a problem and patiently listened to all my thoughts. Dalia is the reason I’m more confident writing code than I’ve ever been.

Community

The Java community have been incredibly helpful and supportive throughout my time at JetBrains. If you’ve read any of my blogs, watched any of my videos or tuned in to a live stream – thank you!

To those of you who collaborated with me on projects, are lurking in my Twitter inbox, sent me some messages of support and encouragement, gave me a platform, supported me through a new process, offered me opportunities, chatted with me in any number of Slack organisations(!), or connected me with even more amazing people – thank you!

Achievements

I’ve done a lot at JetBrains; here’s a whirlwind tour! Of course, I can’t list everything, but I’ve hand-picked my favourite highlights from my time at JetBrains.

  • Straight after I started in August-September I wrote ten blogs for the JetBrains Technology day for Java.

JetBrains Technology Day for Java

foojay Multiple Carets Blog

  • December is not only Christmas, but I also crafted this 3 Ways to Refactor Your Code in IntelliJ IDEA, one of my favourite blogs. December also was home to this screencast on the New Project Wizard in IntelliJ IDEA – my top-performing video!
  • Phew, here comes January! I stepped back from the public content creation and focussed on creating content for the IntelliJ Guide. I also started drafting my new talk Writing Code is Easy, Being a Great Developer is Hard.
  • In February, we held our IntelliJ IDEA Conference to celebrate IntelliJ IDEA turning 20!

IntelliJ IDEA Guide

JLove Conference

  • July was home to was more talk preparation and conference efforts, including being part of the program committee for Devoxx UK.
  • As I look at August I’m reminded that for the past year I’ve produced the vast majority of the tip tweets you see on the IntelliJ IDEA Twitter handle – that’s me!
  • In September, I hosted one of our Coffee Club episodes – Staying Ahead of the Curve and I started crafting what has become Helen’s Take On videos.
  • I’m not sure what happened in October, but mostly it was more video recording and conferences!
  • I spoke at Devoxx UK in early November.

Devoxx UK Conference

And since then, I’ve been wrapping up my time at JetBrains, culminating in the blog post that you’re now reading!

Summary

I’m very fond of the 16 months I spent at JetBrains, and I’m honoured to have worked with some of the smartest people I know. Beyond my immediate team, I got to work in the broader team full of talented developer advocates who never hesitated to help me or answer my endless questions.

To name check but a few… Marco – thank you for all the Spring and Spring Boot help, I learned so much from you. Paul – thank you for listening to me as I brought the IntelliJ IDEA Guide to life, I could not have done it without you (and I’m sorry for beating on Gatsby so much). Maarten for bailing me out of my Git holes on more than one occasion and generally being an all round sane voice! Rachel for teaching me some fundamentals that had totally passed me by and also for being a lovely friendly person to chat to right from the start. Nafiul for teaching me more about audio than I thought there was to know and demoing it. Shengyou for helping me to understand our broader audiences and for working so tirelessly on translations. Khalid for helping me on my website and co-authoring a blog with me. Matt for being my buddy in the UK when a rant was required about something country-specific! Yann for helping me to understand aspects of the plugin ecosystem. And finally, Hadi, firstly because he’ll be upset if I don’t mention him, but more importantly, for being super supportive at all times. I haven’t name-checked everyone (sorry), but in summary, you’re all awesome and I’ve loved working with you!

It’s been a really enjoyable time, and as I move on to my next adventure, I have great memories of this role and for all those I interacted with directly and indirectly.

Three Ingredients for Great Content

Creating content can be a daunting prospect. It might be a blog post, a video, a talk, a presentation or something like a Twitter thread. However, I’ve found that considering just three things can help to crystallise your ideas and help make your content amazing.

  • Your Experience 🎓

  • Your Audience 👥

  • Your Goal 🥅

Let me explain.

Photo by Artem Maltsev on Unsplash

Photo by Artem Maltsev on Unsplash


Your Experience 🎓

Often people are reluctant to create content, citing something like it’s all been done before. No, it hasn’t; no one has created the content you want to create with your experience, knowledge, and approach. Besides, even if they have, it needs saying again, because no one was listening. Your experience is unique. No one else has it, and that is why your content needs to be created.

The other statement that I hear a lot is I don’t know enough about it to create content on it. It’s as though we get to a certain point in our learning and then conveniently forget that we were all beginners at some point. We then extrapolate this and decide that creating content with our limited knowledge isn’t worthwhile because everyone knows more than us. How crazy is that? Everyone is on a journey of learning and exploration; that’s life.

So it hasn’t all been done before, and content of all experience levels is helpful and valuable. When you create content, think about your experience (not your lack of). Here are some questions you can consider for your experience:

  • What resources did you use when you learned the thing? Sharing resources you found useful will help others.
  • What did you struggle with? Sharing your struggles is very helpful as many other learners will also struggle with the same thing you did.
  • What was unique about your experience? We all have different learning experiences. Sharing your specific hints and tips is really useful for other learners.

Your Audience 👥

Your audience are the people that will benefit from consuming the content that you’re going to create. It’s especially important to consider them if they are a group of people who are paying for your content (such as a conference). Consider their needs and requirements, but not to the detriment of your skills and experience. What I mean by that is don’t try and create content on something you’re not knowledgeable or comfortable with just because that’s what the audience wants. That’s not your audience! In addition, if you create content for an audience that is too far from your knowledge and experience, you risk not being authentic, which will hinder you on your content creation journey.

Remember that your audience are just like you. They have learning goals and aspirations, and they want to learn too. That’s why they are consuming your content. So here are some questions you can consider for your audience:

  • What are the learning goals and experiences of your audience?
  • What will help the audience to achieve their goals with your content?
  • What can you share with the audience by way of signposts for additional learning?

Your Goal 🥅

The goal for your content is arguably the most simple of the three parts of my content framework, but it’s also the one that you probably will have to remind yourself of the most. What is the goal of the content you want to create? Here are some questions to ask yourself:

  • What do you want your audience to take away from consuming your content?
  • What kind of platform is most helpful for your content goal? A blog post, a video, a talk, a Twitter thread?
  • Is this content part of a bigger story you want to tell over time, and thus you have many smaller goals? If so, how will you represent that through content signposts?

So, Why Not You?

Each time you create content, consider your experience, the goals of your audience, and the goal of your content. Go ahead and create awesome content! Here are some resources for content creation that I’ve enjoyed and learned from:

How can you stay ahead of the curve as a developer?

Some days I feel like I’m sprinting down the tracks being chased by a high speed freight train that is labelled something like “changes in technology”. I can’t stop and change direction, and I have no choice but to eat on the run. Other days I’m staring at some shiny gem of technology in front of my face, and it’s glinting with iridescent beauty in the light. On those days, nothing else matters, not even the oncoming freight train. I want that shiny thing.

So how do we juggle these seemingly opposing needs?

Grabbing the shiny thing

We’ve all been there, staring at the beautiful gem dangling in front of our faces, drawing us in with its whispers of encouragement and beauty as well as its promises of how it will solve all of our problems. We just want to reach out, grab it, and study it. Nothing else matters. Of course, to do that, we have to make the space and time to learn about it. If we choose to do this, we are (at least to some people) staying ahead of the curve. To other people we are wasting our time and resources. As with anything in our industry, there is a compromise to be had with the ever useful saying of it depends. Let’s dig a little deeper.


Image by Colin Behrens from Pixabay

Image by Colin Behrens from Pixabay

Technology moves fast, we all know that, so how do we temper ourselves when it comes to the next big shiny thing, and, how do we stay ahead of the curve? Do we even need to temper ourselves or stay ahead of the curve? And whose curve is it anyway? It’s interesting that grabbing the next shiny thing has a negative connotation, and staying ahead of the curve has a positive one. I think that they’re tightly coupled; grabbing the shiny thing is often the precursor to staying ahead of the curve. Of course, if the shiny thing turns out to be ours, or the industry’s, kryptonite, you need to be able to drop it as fast as you grabbed it.

Being able to pivot our focus of intrigue quickly and efficiently is definitely a superpower.

Grabbing the shiny thing and subsequently staying ahead of the curve with our knowledge of it both allude to knowing more about that thing than most people. That can bring advantages to our career in a number of ways.

Of course, if we grab all the shiny things, we may find that we don’t know much about anything and are actively behind the curve, but let’s talk about that curve in more detail.

What does it mean to be ahead of the curve?

An excellent question and one I had to look up after drawing several bell curves on my notebook and coming up blank. All it really means is doing something faster than other people. Well, gee, that’s nice and broad!

Do you need to stay ahead of the curve?

Well, it depends. Many successful careers have been formed without grabbing any shiny thing or being ahead of any curve. We don’t need to know the latest and greatest technology to succeed, we can carve out a very successful role for ourselves specialising in technology that has been and gone. If that’s your happy place, you go for it!

However, many of us like shiny things, so I’m going to concentrate on how you can stay ahead of the curve in development specifically.

Whose curve is it anyway?

Technically it’s ours. It’s our learning journey as we’ve identified it. It’s the notion that if we’re ahead of the curve, we’re in the top x percentage of people that know about the thing. It’s where many of us aspire to be for a thing because:

  • we’re scared of being left behind
  • we’re scared of not knowing something
  • we’re scared of being the least informed person in the room

Our need to stay ahead of the curve is, at least in part, driven by fears. However, there are other drivers that apply a different force. Sometimes we aspire to be ahead of the curve in a thing because:

  • we want to earn more money
  • we want to retire early from the rat race
  • we want to be deemed successful by some metric
  • we get our kicks from the latest technology and enjoy learning it – “oooh look, shiny!”

These are all valid fears and valid motivators. There are many more you may have as well.

How do you know which shiny thing to pick?

We don’t. Well, we probably have an inkling, it’s potentially the one that will solve our problems. However, we cannot possibly examine them all and thus stay ahead of the curve in all our interactions and knowledge. That’s just crazy talk. So we need to pick our shiny thing wisely, especially in technology. Choose where we want to be ahead of the majority and focus on that with laser accuracy. We will need to focus our firepower, but we can always pivot direction as the winds change and the shiny thing we were ahead on falls out of technology favor.


crab-new-thing.png

Then we have a choice, stick with the shiny thing we chose, or jump to the next shiny thing we want to be ahead of the curve on. Which brings me on to my next point…

How do you stay ahead of the curve?

The clichè answer is, of course, with great difficulty. However, let’s break it down because there are some very real and tangible things we can do. These are the ones that work for me, your list may be longer or shorter.

We can often fit these around our existing schedule. We can:

  • Read blog posts
  • Watch videos
  • Listen to talks

All of these things are passive. Yes they take time but they’re passive. If we give them our time (instead of feeding our smart-phone addiction, maybe that’s just me), we pick up quite a few nuggets of useful information that will keep us ahead of the oncoming freight train. However, there’s more.

There are some more active tasks that we can do that will require more time from you, but arguably bring more tangible reward in terms of our understanding of the thing. We can:

  • Play with the thing
  • Create content
  • blog posts
  • videos
  • talks

All of these things are active. They require us to take the knowledge that we’ve learned and apply it to something in the real world. Playing with the thing is the first step. Questions such as:

  • What problems does it solve?
  • Whose life does it make easier (assuming it does)?
  • Where could it be applied in our world?
  • What are the competitors?
  • Where can it not be applied/does not work?

… will help you to poke it with a stick and come up with some thoughts about the thing you’ve been learning about. Creating content about the thing is, at least in my experience, one of the best ways to get ahead of the curve on that thing. It helps me to cement the knowledge in my mind, and it has the added bonus that it might help someone else in the community who is learning about the thing. For example, they might not want to be ahead of the curve on the thing, but they do want to learn about it and use it in their day to day.

How do you find the time to stay ahead of the curve?

Now, like anything that is vying for our time, it needs careful prioritisation and resources. We cannot expect to stay ahead of the curve in any of the things if we don’t make time for learning and give ourselves the opportunity. Of course all our time is very squeezed, but we can look for learning opportunities in both our professional and personal life.

Many employees are happy for us to spend a portion of our professional time learning about some new shiny thing, especially if it might benefit them longer term. This is a privilege, and we don’t all have it, but many companies are waking up to the fact that we need time to learn in a number of areas and failure to allow them time to do this will be detrimental to their workforce and potentially the company’s products.

We can also use our personal time for this endeavour. Should you? Only you can answer that one. If it personally benefits us and our career, perhaps that’s a strong use case. It’s a path well trodden that can bring substantial rewards.

Ultimately it’s up to us, our choice of shiny thing, and our schedule. We have got this!

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!