How To Stay Current In Software Engineering
Tags: career, management, leadership, productivity
Published: 2020-05-14 15:11:40

### Getting the company to sponsor your learning time

During the last five years as Director of Architecture, contributors' career development has been one of my goals and focus. Along the path, one question has popped up as a constant:

> How do you stay up to date?

When I was a child, I had a friend whose father was a doctor. This man - in his mid-40s - was always attending conferences and studying at home. Medicine is in an infinite, ever-changing topic which we - as humanity - are still researching and learning. 

Are all professions like this? Well, I believe that software engineering is similar in that aspect. I would even ask whether it is more challenging to keep up to date than medicine, given the number of companies relying on or selling technology nowadays.

## Constraints
* Time - this precious limited resource - is definitively a natural limitation when we want to stay current.
* Paralysis Analysis from infinite branches of which should be the next topic to pick.
* Ignorance about what topics or trends are going on in the industry.
* Fear of failure at doing something new.

## Try this Strategy
We are going to solve the time, and paralysis analysis challenges first. 
Get a pen and paper. Lay it horizontally. If you are a digital-only person, then clone [this Google Sheet](https://docs.google.com/spreadsheets/d/1YIPquntxyJhq9OXZxceLOloeFTee-BKlhnQ5vcmoPDo/edit?usp=sharing).

* Divide the paper into four columns.
* In the first column, write a list of all topics and trends you would like to learn or invest some time on. I know it can be unlimited. So stick to ten items. We will call this our "Personal Agenda."
* In the second column, write down your company's goals. If you don't know or you are not sure, talk to your boss. It is a good sign for your boss. It shows your interest and an opportunity for him/her to fulfill his/her duties as a manager.
* In the next column, write down your boss's goals. Ask your boss, "What problem are you trying to solve in the short term? What keeps you awake at night?"
* In the last column, write down the goals your boss has set for you this year.
* From your Personal Agenda, from top to bottom, try to match your interest with an item in the other columns. If you found a match, circle your interest. Keep going across your list.
* On a new paper, extract the items you mark as matches, noting down what goal corresponds to.
* If you have more than one item, it is time to set priorities. Next to each item, note down your preference as in 1,2,3.
* Looking at the goals (company, boss, etc.), note down the priorities (1,2,3)
* Pick the top 2 priorities from your work's goals.

Most probably, you expected to read we should be picking our top choice. Here comes the trick. Time is a limited asset. Chances are, you already spend:
* thirty percent sleeping,
* thirty percent at work,
* five percent commuting,
* another ten percent eating,
* and - if you are lucky - you get the remaining twenty-five percent to play with the kids, relax, read, you name it.

So if you are going to spend any portion of your precious twenty-five percent, you go ahead and pick from your "personal agenda". If this is you, feel free to jump to the Resources section down below.

## Go for it
If you are still here, then here is the tactic. Your mission is to get your boss buy-in to allocate some percentage of your work hours to learn. Ideally, you want to aim at **twenty percent** of your work time with the caveat that some weeks it might not be possible.

Our next step is to prepare our proposal. You don't need slides or a document. Nevertheless, it is a good idea to write down your pitch. Make sure to include:
* the known goal,
* what are you going to invest time on,
* why is this relevant to the target,
* how many weekly hours you plan to invest, what artifact - lunch and learn, presentation, proof of concept - will you be delivering at the end,
* and a due date.

## Why is this a win-win-win proposal? 
No matter which work-related goal you pick, you know your boss is already interested in achieving it as it is most probably part of his goals as well. 

We could argue you may have picked one item which is not on your manager's top priority or at least not in the short term. That is why you will present two options for him/her to choose from. 

Be prepared to get less time allocation than you asked. Once you complete this round, granted you had proved value, your manager will be more inclined to match your request. 

If the discussion does not go as planned, it is an indication you may not be clear on your boss' goals. So take your loss and use the opportunity to gain clarity on the topic. You can regroup and come back in a couple of weeks. 

If high stakes are on the play and no time can be spared on learning, then it is better to park this item and jump into understanding where and how you can collaborate solving the urgency your boss just shared with you.

## Deliver value
While it is always exciting to play with a new toy, remember your investment must return value to the business.

Like any hypothesis, the outcome can undoubtedly refute the premise. For example, 

"After doing the research, this technology is not a good fit to solve problem X. The tradeoffs on quality are higher than…."

Make sure to share with peers as soon as you have a draft. They will provide perspectives, their experiences, or questions that will help you improve your conclusions.

Don't forget to document and publish your research so future individuals can access, learn, update if something has changed, or at least avoiding duplicating the effort. You can find some inspiration or adopt the [ADR (Architecture Decision Record) template](https://github.com/joelparkerhenderson/architecture_decision_record/blob/master/adr_template_by_michael_nygard.md).

## Writers Block
Just like writers face anxiety in front of an empty page, you might feel uneasy before coding or playing with a new library.

This fear of failure is pretty standard. Remind yourself everybody can learn new libraries, frameworks, languages, etc. It takes time, sometimes more than others. Nobody is born with Functional Programming skills. (Although I have a friend that seems to be unnaturally fluent at it). So yes, you will fail, it will not compile, you will get errors until you don't.

My advice is two-fold. First, give it a try. Second, search for help even you are afraid of asking a silly question. Ask your tech lead, a peer, your manager, in a forum, stackoverflow. You can create a fake account if you want to remain anonymous.

## Resources

Finally, we come to a more manageable challenge to overcome. What if I have no idea what the trends are out there.

Here is how I do it:

* **Podcasts** are a great source as every installment they touch on different topics. I consider podcasts my primary source of knowing "what is out there". Currently, I try to listen to: React Round Up, Real Talk Javascript, Scaling Software Teams, Software Engineering Daily, Shop Talk, Syntax, Front End Happy Hour, Full Stack Radio, Indie Hackers, Codepen Radio. React Podcast.
* **Twitter** is where I pick up news and conferences I did not know about. People retweet those who are references in a topic, so you start picking up the names and mentally modeling some kind of ever-growing social graph.
* **Reddit, Medium, and Dev.to** are where I pick some interesting popular conversations or articles about topics.
* **Spectrum Chats and Slack** specific workspaces or communities is where I ask specific questions about a topic I'm working on researching.
* **StackOverflow** used to be the place where I would ask most of the questions. Later on, it became a destination to return value to the community, trying to answer questions.
* **Youtube channels and Conferences** (recorded or purely online) are a great source to get a quick update on a specific topic.
* **Paid Services** - such as Egghead.io, FrontEnd Masters, Pluralsright, SafariBooksOnline - are not strictly needed, but it is my favorite place to go once I know what topic I want to go deep in. I know I will get curated content that a writer already spent a significant amount of time putting together, thinking about how to explain and illustrate it, what examples to use, etc. It saves me from looping or getting stuck.
* [**Github Trends**](https://github.com/trending) is where I can see what projects are getting popular in specific languages.

If you like this article, you can [follow me on twitter](https://twitter.com/sesteva?lang=en) as I continue to document my thoughts and findings.