DEV Community

Cover image for Always Be Learning
Corey McCarty
Corey McCarty

Posted on • Originally published at coreydmccarty.dev on

Always Be Learning

Cover image by undraw.co

It's a recurring theme among tech communities to reflect and offer advice to the newcomers. I find that near me that it always comes back to this one thing.

"""ALWAYS BE LEARNING""". 
while not dead:   
    learn(). 
Enter fullscreen mode Exit fullscreen mode

In the software industry it seems that you are either terribly overworked or underworked. Both of these scenarios can bring difficulty to our learning process

Being overworked makes you rush around from task to task making the same decisions without room for enrichment. You will likely find lots of things along the way that you wish you knew more about, but just don't have the time to dedicate for learning without using your personal/home/family time. If you do this long enough then you will get a great deal of work done, but not learn anything outside of the things that you broke while trying to keep from breaking deadlines.

Being underworked means that you probably aren't coming across so many things that you need to learn. With a lacking work load you likely have figured out all of the difficulties that face you on any given day, and mostly fill your time with some mix of different social medias (reddit, facebook, twitter, youtube, slack, discord, twitch, or whatever). Going through day after day without any challenge can actually be miserable (regardless of how nice it sounds if you're in the previous camp).

def always(thing='bar'):     
   print( f'Raise the {thing}' )
Enter fullscreen mode Exit fullscreen mode

Regardless of which side you might find yourself in today, I'd like to challenge you to reclaim a bit of your time and direction. The end goal isn't to deliver that thing that your boss is asking for, but to advance your career and continue to learn more. Most managers aren't going to give you direction to go off and learn something new or to take the time and really get to know the framework that your current project is using. Most managers want you to continue delivering the most benefit to the company/team in the shortest amount of time possible. But, most of the managers that I've come across are really interested in having you be able to take on new bits that nobody on the team is comfortable with or having more people on the team to actually know the deeper parts of the infrastructure in order to prevent issues.

OWN YOUR ADVANCEMENT

Active pursuit of betterment is required in our ever changing field; in other words "if you aren't moving forward then you're moving backward." But it is really difficult to judge ability without a comparison and context. My first 5 years in the industry were largely spent performing what most people would consider support activities. I elicited change requirements from clients, made changes to implement these changes that, and deployed changes in test levels and production. A good deal of debugging occurred with client issues, but my explanations of these activities typically fail to persuade someone to hire me as a developer. All of those first years were spent in a group of very skilled developers and while I learned a great deal during that time, I remained the most junior member. It wasn't until I joined a new team and was able to gain the context to compare my skill set to others that were different from my own that I gained the ability to explain these things. Looking at our own advancement through the lens of life is my overall goal with this series.

In the last year or so I decided to learn Javascript, and wound up making myself a resume that would populate from data file. This all stemmed from my acquisition of a .dev domain. I wound up needing to learn about dns configuration, github pages, node js, and alot of frontend design things that I hadn't touched in years. I would come to learn about JamStack and eventually wind up with a blog site using 11ty static site generator and replicating that into the Dev.to community. These things all kind of snowballed from the idea of owning a domain and figuring out what to do with it.

What to learn?

I read SO many different posts about what people are learning or people asking what they should learn. This isn't a one size fits all thing. Everyone has different interests and every area has different needs. I have been developing some tricks (read as getting pointers from others and figuring out which ones work for me) and I'll share these with you (tl;dr the answer is lists). I keep a spread in my bullet journal for 'Professional Goals' and my current lists are below.

But how do you figure out what should go on the list? I add things to the list (with top priority) that my current projects use and I don't already know/understand. The next group of things comes from the communities that I'm in and the things that they speak well about. The last group of things that I add to the list are things that are on job listings that I find interesting. When you are doing this last part you should make sure to look at listings in your desired physical areas and fields of work. Different areas and industries can have drastically different technology stacks and standards, and it's important to keep your skills relevant to your current and potential work.

Side One

Resources

Places to learn that I don't remember off the top of my head

  • Hacker Rank
  • Leet Code
  • Codepen.io
  • Repl.it

I also frequently use Java API documentation, W3Schools, learnxinyminutes.com, and stack overflow

Things to Research

Things that I've heard the name of and don't even know what they are (If anyone wants to define these then feel free). I'll mark things off of this list once I can at least explain what it is and what makes it good/helpful and hopefully when it should be used.

  • [] TOGAF
  • [] RWD
  • [] ElasticSearch
  • [] Cucumber
  • [] Kafka
  • [] CockRoachDB
  • [] Reactive Programming / Even Streaming
  • [] PKS
  • [] Pivotal Geode
  • [] Gemfire

Side Two: Things to Learn

I'll mark these things off once I would be comfortable enough to work on them (regardless of how much research I may need while I would do so)

Languages

  • [] Go
  • [] Rust
  • [] Lua
  • [] Kotlin

Frameworks

  • [] Node JS
  • [] Angular JS
  • [] Flask Python
  • [x] Spring Java
  • [] Junit

Technology

  • [] Docker
  • [] Kubernetes
  • [] Pivotal Cloud Foundry
  • [] PKS
  • [x] Jenkins

Processes / Principles

  • [x] IOC
  • [x] AOP
  • [] TDD

This post is part of a series about life, community, and learning.

Top comments (0)