DEV Community

loading...
Cover image for Becoming An Intermediate Developer

Becoming An Intermediate Developer

James Hickey
Software Architect & Senior Developer | Microsoft MVP
Originally published at yourdevcareer.com Updated on ・5 min read

In a previous article, I looked at a way to map out the various stages of your software development career:

Next, I went over some tips for junior software developers:

Today, I wanted to keep trucking along through the various stages of what I see as an overall view of the software developer's career.

Some Notes Before Beginning

Again, these stages do not necessarily correspond to job titles. They are measures of a developer's skills, knowledge and overall competency.

They do change depending on what field you are in - Web, IOT, Data Analytics, etc.

While specific tools, technologies and even architectural patterns may differ, the general principles apply broadly.

The #1 Indicator Of Being An Intermediate Developer

I want to start by looking at a more reflective metric that can help you gauge whether you are near or at this stage in your career.

This is by no means a "sure" metric. But I think it's one that most intermediate developers have and will experience.

I suspect most of you guys/gals who are more experienced will agree 😊.

So...what is it?

Are you curious?

Here it is!

Intermediate developers usually have a mental urge or "pull" to believe that they actually know everything they need to know.

Perhaps they feel like their views on how to best architect a system are "complete."

Perhaps they feel like Javascript is the only programming language they ever need and ever want.

Whatever it is, there is some degree of feeling like you've "found" the silver bullet. That your current view is finally "the one."

Is It Bad?

No, this isn't a bad feeling. It doesn't mean that they are arrogant or mean.

It just happens 🤷‍♂️.

It's a part of your journey of growth as a developer.

Puberty For Your Career

To put it into very understandable terms:

The intermediate stage is like stepping into puberty for your career.

Teens tend to begin believing that they know better than their parents.

They tend to experiment and be bold about what they believe.

They begin to tread a path of their own.

This is the intermediate developer. He/she is starting to think for themselves.

And that's awesome! It means they have accumulated enough knowledge and experience to be "connecting the dots" and thinking about things like design patterns, best practices, etc. in unique and creative ways.

They are beginning to "break the rules" as it were.

Much like Jazz music "breaks the rules" of conventional music theory, the intermediate developer is playing around by thinking-outside-the-box.


P.S. This article is originally from YourDevCareer.com where you can check out more articles and resources to help accelerate your career growth!


Some Traits

Let's look at how an Intermediate developer has taken the Junior developer skills and knowledge to the next level.

And of course, there are some "new" things that intermediate developers will need to learn and become experienced in!

  • They now have a very good grasp of how to connect different systems together (APIs, modules, packages, etc.)
  • They should have a good understanding of how to implement a viable system
    • For web developers, this might include things like :
      • MVC, MVVM, etc.
      • Refactorings
      • OOP principles
      • Other paradigms like functional programming
      • Application deployment
      • Able to own features
      • Beginning to lead communications with clients from time-to-time
    • For database developers, it might include:
      • Replication
      • Indexing
      • Sharding
      • Performance tuning
      • Advanced querying (CTEs, window functions, Apply, etc.)
      • Other paradigms like NoSQL, Key/value based DBs, distributed DBs, etc.
  • Considered a valuable contributor to the team
  • Competent with tooling (IDEs, other dev tools, etc.)
  • Beginning to habitually use:
    • Design patterns
    • Code smells 💩 and refactorings
  • Etc.

Some Advice

Alright - the fun part!

Are you looking to becoming an intermediate developer? Or perhaps you feel like you might already be somewhere around this stage?

Here are a few tips that I think will really help if you are around this stage in your career:

Get On A High Visibility Project

This isn't so you can become famous. It's so:

  1. You can gain experience fast by being on an important or high-value project
  2. You can become known in your org as someone who gets things done well

If you can build experience and be known in your org (that's not fame, it's visibility), then you will begin to get traction when new opportunities come up.

Jump On The Hard Stuff

Similar to the previous point, you won't learn unless your comfort zone is pushed.

And, you will be seen as someone who attacks the important stuff in your company or community.

This will build trust, reputation and confidence.

Find A Mentor

This can't be overstated. You can't do it alone.

You need someone to throw ideas off of and be able to learn from. Especially at this stage.

You need to realize that you are prone to the "puberty" traits mentioned at the beginning of this article.

Mentors can help make sure you don't take certain ideas or experiments too far and can reel you back in if needed.

This might be someone on your team at work.

It could be someone in the community.

It doesn't have to be an explicit contract. But, it could!

You just need to find someone (or more likely some people) you trust and who you can throw your questions and ideas at!

Also, ask this person(s) for resources, tips, projects or even just stories that helped them get where they are.

P.s. Steve Smith, an accomplished and respected architect + trainer, has a great formal coaching/mentoring service he provides called DevBetter. Check it out if you want to really accelerate in your dev career!

Keep Learning!

Like the title says - you need to keep reading and testing out new ideas and concepts. Keep learning! Don't stop!

Thoughts?

Do you have any more tips?

What did you find helped the most when you were at this stage?

Leave lots of comments for everyone else to benefit from!

Keep In Touch

Don't forget to connect with me on:

You can also find me at my web site www.jamesmichaelhickey.com.

Navigating Your Software Development Career Newsletter

An e-mail newsletter that will help you level-up in your career as a software developer! Ever wonder:

✔ What are the general stages of a software developer?
✔ How do I know which stage I'm at? How do I get to the next stage?
✔ What is a tech leader and how do I become one?
✔ Is there someone willing to walk with me and answer my questions?

Sound interesting? Join the community!

Discussion (10)

Collapse
gcdcoder profile image
Gustavo Castillo

"The intermediate stage is like stepping into puberty for your career."

Love this quote 🤟

Collapse
jamesmh profile image
James Hickey Author

Thanks man! 👍

Collapse
glenmccallumcan profile image
Glen McCallum

Always, always claim the hardest ticket in the sprint! It is usually the most valuable to the company and you get the most visibility to higher ups.

Collapse
jamesmh profile image
James Hickey Author

Word. 🤜🤛

Collapse
steelwolf180 profile image
Max Ong Zong Bao

Awesome article :) Guess I'm having my puberty for the 2nd time. Jokes aside really good advice on tackling important projects and the hard stuff.

Collapse
jamesmh profile image
James Hickey Author

Thanks Max!

Collapse
diogomgbrito profile image
Diogo Brito

"Intermediate developers usually have a mental urge or "pull" to believe that they actually know everything they need to know."

I was wondering if I was feelling like that, this quote made it clear! I was afraid to be the only one feeling like that, glad I'm not 😄

Collapse
helenanders26 profile image
Helen Anderson

This was such a great read, and all so true. Just like teenagers testing boundaries and thinking they know best, intermediates have a lot of confidence in the processes and projects they have delivered.

Do you feel there that seniors have less of this confidence once they are aware of all the things they don't know?

Collapse
jamesmh profile image
James Hickey Author

Thanks Helen!

Speaking from my own experience, which is similar to many others from reading, etc. on the topic, there's a point where you become confident due to the real-world experience that you've had and because you've built an expertise in some niche area, yet humbled because you know that there's always a better way to do things or just more to learn.

But then, even the expertise that's there is still subject to change!

I believe a big part of being in a "real" senior role is that you are able to effectively mentor people and learn new things quickly. Pre-requisites for that are being humble, able to listen well, not shove your ideas down people's throats, able to guide people and point them in the right direction, etc.

Intermediate devs will tend to focus on the areas that they are getting good at.

Whereas, seniors will have a very wide breadth of knowledge (in addition to an in-depth knowledge of some specialized area) so they understand that, for example, non-relational databases are great for solving problems X,Y,Z but that relational databases are good for dealing with A,B,C.

With seniors, in general, there's more of a grasp of the foundational principles that enable them to understand foreign topics much quicker and easier by discovering where those principles are "inside" those topics.

For example, NoSQL can be confusing and overwhelming when first looking at it. But, at the end of the day, all you really need to know is that you're just saving JSON objects. It's basically like taking a relational DB and saying "I need this to be really fast so let's turn off all the extra stuff (transactions, integrity, blah blah) and just shove JSON into a table."

Once the intermediate has established some expertise, he needs to come back out of that pit and start gaining wider more general knowledge (which sounds weird, but it's true). I think that after "mastering" (in a sense) one area, it's easier to now look at more general topics and be able to gauge what's important to know about each of those topics. And when needed, you can dive into that.

That was long 😜. Good question!

Collapse
austinstanding profile image
Austin Standing

Great article! You not only answered the questions that have been on my mind this week, but you gave me some next steps.