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.

IntelliJ IDEA Made me Lazy

cat-2360863_640.jpg

I haven’t always been lazy; it’s a fairly recent addition to my repertoire of skills. And do you know who I blame? I blame IntelliJ IDEA. I used to check that I’d completed a statement correctly, I used to look at javadoc, I used to check I’d closed my parentheses correctly, but now I don’t give things a second glance.

Image by photosforyou from Pixabay

It’s all IntelliJ IDEA’s Fault

No, really, it is. Back when I was a (cough) younger adult, we had to type out all the code, we also thought it was cool to mix drinks that turned into something akin to gorilla snot. Maybe we weren’t that smart, but I am discovering one thing at a rapid rate, IntelliJ IDEA was smarter than me, even 20 years ago (I’d like to say it was a low bar).

I took a long break from coding, about 20 years, in fact. When I left coding, I wrote code in Vi and had memorised that very useful shortcut :wq. IDE’s were around, but in fledgeling forms. Recently I came back to coding, and I walked straight into IntelliJ IDEA’s open arms.

Exhitbit 1 – Statement Completion

Never one to take responsibility for my own actions, I’d like to offer up exhibit one – Statement Completion in IntelliJ IDEA. When you use the combination of Cmd+Shift+Enter, on macOS or Ctrl+Shift+Enter on Windows/Linux, IntelliJ IDEA completes it for you so that it will compile. I don’t even know where the semi-colon button is on my keyboard anymore; I don’t need it. Allow me to demonstrate.

Try this one.

Rubbish right? Naturally, it won’t compile.

auto-complete-statement-post.png

Use Statement Complete and boom, we get this.

IntelliJ IDEA is kind and pops the caret in the right place as part of Statement Complete too. Sure, it’s only a few characters, but there’s a deep-seated comfort in knowing IntelliJ IDEA made it compile. It might not do what you want yet, but that’s your problem, mostly. I recommend you train your fingers to master this one, it will help you sleep at night.

statement-complete-presentation-mode.png

Exhibit 2 – Live Templates

I covered these in detail in this blog, but here’s a quick recap.

for-live-template-pre.png

Remember the days when you had to type the whole `for i` loop out? Well, they’re as dead as the shell-suit fashion of the 1990s.

for-live-template-post.png

After we press return, the Live Template in IntelliJ IDEA does all the boring stuff for us.

Incidentally, you should press Tab to move to the next point that needs your input (the red squiggle).

A few more of my favourites are:

psfs will give you public static final String

And

soutv (in a fori loop will give you System.out.println("i = " + i);)

There's 35 more for you to check out with your beverage of choice! There's no keyboard shortcut for Live Templates; they'll just appear when you summon them by starting to type what you want.

Exhibit 3 – Post-Fix Completion

It seems like the humble dot is extremely powerful in IntelliJ IDEA. It does Basic Completion automatically, but, it also does something very cool in that it can be used to tell IntelliJ IDEA to wrap whatever you just typed in some more code.

We’re just mere humans, we obey the laws of the languages we speak and write (mostly), but thinking is hard. Allow me to demonstrate. We don’t think:

  1. I want to output some text to the console.

  2. I want to write some text.

No. We think:

  1. I want to write some text.
  2. Oh, also, I want to output that text to the console.

This is exactly what Post-Fix Completion does. It builds on live templates, where applicable, and helps your brain to flow in the order of things that it’s probably become accustomed to over the years (many in my case).

Before post-fix completion, the earlier example becomes:

  1. I want to Output some text to the console

    sout.-> System.out.println();

  1. And then I want to write the text to output

    "I wandered lonely as a cloud"

But, with post-fix completion:

  1. I want to write some text.

    "I wandered lonely as a cloud"

  1. Oh, also, I want to output that text to the console

    .sout -> System.out.println("I wandered lonely as a cloud");

There are 46 types of Post-Fix Completion in IntelliJ IDEA 2020.2. That’s a lot of time saved in your day and a lot of language-based syntactic-sugar for your thinking-brain. Other cool examples include:

assert to create an assertion based on a boolean expression, for example:
is2020OverYet.assert

Becomes

assert value;

My favourite code construct, the humble for (and fori loops):

String[] monthsLeftIn2020 = {"November", "December"}
monthsLeftIn2020.for

Becomes

String[] monthsLeftIn2020 = {"November", "December"};
for (String months : monthsLeftIn2020) {

}

Lastly, this one is pretty cool. I like var and this is one way that IntelliJ IDEA takes the notion of var to make your life just a little easier. You can use .var to ask IntelliJ IDEA to declare something that you’ve created as the correct explicit variable type. Let’s look at the String.var portion of this:

void speed2020Up(Magic magic) {
   magic instanceof String.var
}

Using .var asks IntelliJ IDEA to put the variable type in for us, it’s a boolean because that’s what instanceof returns.

void speed2020Up(Magic magic) {
   boolean b = magic instanceof String;
}

You will also have the option to use the var type for real at this point if you want to. Now, var is fabulous, but Java is still a statically typed language. If you, as a human-being (presumably), can’t figure out what type it is, please don’t use var as the variable type. Using .var is geat, but declaring something as type var is a big no-no if the type of the expression is not quickly decipherable. Gift your fellow humans (right now, we all need it) by stating the type that it evaluates to when all is said and done. They’ll thank you for it and you’ll help them sleep better at night.

Exhibit 4 – Smart Completion

With IntelliJ IDEA you get Basic Completion out of the box, but Smart Completion is just an extra finger tap away by using Ctrl+Shift+Space. Smart Completion not only analyses what could be correct, but it takes it one step further and looks at the context of the surrounding code to make the right decision. If IntelliJ IDEA can determine the appropriate type for the right-hand side of an assignment statement, initiating a variable, a return statement, arguments of a method call and more, it will filter the list to just that. To show you the power of Smart Completion, I’ll show it to you alongside basic completion for comparison.

First up, we’ll invoke Basic Completion (no ‘dot’ so it won’t come up automatically in this case). Note that I have a space after new.

HashMap hashMap = new

basic-completion-hashmap.png

With basic completion we get a whole list of options, some valid, some not so much.

smart-completion-hashmap.png

But, with Smart Completion, we get a much shorter, more relevant list.

Okay, let’s look at a return statement next.

basic-completion-return-statement.png

With basic completion.

smart-completion-return-statement.png

And with smart completion.

You get the idea, it's very useful! Here is the keyboard shortcut that you need:

smart-completion-shortcuts.png

Did Your IDE Make You Lazy Too?

There’s a lot of advantages to being lazy. It affords you more time for yourself, and your loved ones for a start. However, it’s more than that, being a developer isn’t all about writing code; there’s also:

  • Thinking / flow time
  • Working out what your code needs to do
  • Asking questions / Answering questions
  • Mentoring others / Being mentored yourself
  • So much more!

Being lazy isn’t a bad thing, it’s an efficiency gain that allows me to focus on the things that matter, which isn’t checking my parentheses are correct or remembering to put a semi-colon after my statement. No, it’s taking time for myself and those around me. Sure, it’s IntelliJ IDEA’s fault, but I am happy that we’re here!

My First Hacktoberfest (2020)

I took part in Hacktoberfest this year for the first time. I had a lot of upfront expectations and beliefs. One of these was bang on the money, the rest were so far from the mark it’s a little embarrassing.

What I thought at the start of Hacktoberfest

  • that the process would all be easy

  • that finding a repo to help with would be easy

  • that I would only take me a few hours

  • that I would learn stuff

Hacktoberfest Controversy

It never occurred to me that Hacktoberfest could be a force for bad. I appreciate that might sound naive, but when this blog post was published I was shocked. I read it over and over, trying to make sense of it. I mean, sure, it made sense, now it had been brought to my attention, but in my world, it wasn’t a thing. I simply hadn’t given it any thought. It was eye-opening.

I started questioning myself. I was excited to be participating in Hacktoberfest, but it really made me question if I was doing the right thing. That blog post triggered a change in the rules for Hacktoberfest from Digital Ocean. Repositories then became opt-in to Hacktoberfest which I fervently hope did address the problems highlighted in the earlier blog.

My Experience

So after a somewhat bumpy start and angst, I decided I would still participate in Hacktoberfest because I hoped I would not only add value, but I would also learn stuff. And I like learning stuff!

Job 1 – Find a Repository to Contribute to

Easy right? Nope, not even close. I tried two primary routes here, I browsed the repositories labelled hacktoberfest for hours at a time, there were hundreds. I would whittle them down to Java repositories, then documentation (where I was confident I could add value) and then either the bug would already be assigned to someone, or there would be comments indicating that someone wanted to pick it up. I moved on.

I wasn’t having much luck with this approach, so I considered meetups. This was vaguely successful, but it wasn’t enough. I was painfully out of my depth, and I knew it. I felt like the places I could add value were so small and, even if they existed, I couldn’t find them. I felt utterly defeated.

So we’re now into the second week of October, and all I’d achieved was to get stressed about whether I was doing the right thing participating and, even if I was doing the right thing, I couldn’t find a suitable repository and issue. It wasn’t going great.

Job 2 – Find a different way to achieve Job 1

I’ll be honest, I had a few G&Ts and wondered how on earth I was going to get myself out of my Pit of Doom™️. Then it occurred to me that I had a very obvious option to me that I had not explored. I needed to ask for help. I was incredibly fortunate in many ways in that I had made some contacts in the OSS world before Hacktoberfest 2020. I reached out to a connection and said that I was stuck and I was struggling.

And that’s when my fortune changed. They directed me to a repository where I could add value and a bug too that wasn’t assigned. It was a completely different experience. To be honest, I didn’t realise how little I knew, even then! I took their advice and read the readme. I proceeded to fork the repo, and then clone it into IntelliJ IDEA (obviously). Somehow (still couldn’t tell you how), I managed to run Docker despite knowing nothing about it, and I got the documentation bug fixed up and tested. Go me! I made a PR on the original repo to pull my changes in, and it got accepted. Mind Blown. I never thought I’d make it that far, but I did. I wouldn’t have achieved any of that without help.

I made a couple more PRs using the same repository and Hacktoberfest 2020 is now in the bag. But, I don’t feel as elated as I thought I would. I haven’t been able to put my finger on why, after all, Hacktoberfest has been incredible for my learning. I used it as an opportunity to learn more about the fork-ing, the cloning, the Docker-ing, the PR-ing, the rebasing-of-the-upstream-repo-ing. I probably made too many verbs there, sorry. That was all new to me, and I loved and am grateful for it. I’m annoyed that I waited until Hacktoberfest to do it mind you. I learned so much stuff and, best of all, I’m now a maintainer to that repository. What a fricking honour; I intend to continue to grow and contribute to it outside of the fence of Hacktoberfest.

Takeaways

I was asked on this session what I would tell my younger self next time around for Hacktoberfest. This is my answer (now I’m not under the pressure of a YouTube live stream!):

Do Nots

  • Do not wait until “Preptember” to get ready to contribute to Open Source Software. Do it all year round if you want to.

  • Do not wait until “Hacktober” to offer to contribute to Open Source Software. It was a catalyst for me, yes, absolutely, but I regret waiting.

  • Do not give it all up in “Postvember” (I’m struggling here). Give back. I intend to.

Dos

  • Do attend meetups throughout the year and get to know people. They will be your guiding light throughout the process.

  • Find people who are passionate about it, get to know them and ask them how you can help.

  • Do share your story and your experience. It might help others.