Q&A on “The Complete Software Developer’s Career Guide”

Key Takeaways

“The Complete Software Developer’s Career Guide” was written for all levels of software developers to answer most of the most common questions software developer have, regarding getting starting, getting a job, learning technical skills, succeeding in the workplace and advancing their careers.

The technical skills a software developer must possess to succeed in today’s software development environment are immense, but fortunately, there are plenty of resources out there to learn them.

Not all developers should start their own companies, because the risks and lack of stability is not something everyone is comfortable with, but just about all software developers can benefit greatly from working on side projects.

Today, more than ever in the software development world, teamwork is critically important.

The best way to advance your career as a software developer is to become useful, by creating value in your team and outside of your team and to learn how to build a personal brand and market yourself.

The Complete Software Developer’s Career Guide answers questions that new and experienced developers often have in advancing their careers. Topics covered vary from learning technical skills, getting a job, and dealing with managers, to doing side projects or starting your own company.

InfoQ readers can download an extract of the Complete Software Developer’s Career Guide.

InfoQ interviewed John Sonmez about the technical skills that software developers need to master and how to develop them, if software developers should start their own company or do side projects, how DevOps is impacting the role of developers, what developers can do to work effectively with testers and vice versa, and which are the do’s and dont’s for developers if they want to advance their career.

InfoQ: Why did you write this book?

John Sonmez: The software development industry is confusing – especially for developers just starting out with their careers.

It’s not very obvious how to get started as a software developer.

Should you go to college, go to a bootcamp, learn on your own, and what do you study, how do you study?

And when you “finish” studying, how do you get a job?

And when you get a job, how do you get a raise, how to do you succeed, what more do you need to know?

Constantly software developers familiar with my blog and YouTube channel would ask me these questions, and I realized I had no where to point them to.

I wrote the “Complete Software Developer’s Career Guide” because I couldn’t find one comprehensive source or guide to answer all these questions and to help a software developer to be successful in their career.

I wanted to answer just about every question that new and experienced developers had about their careers in software development and I wanted to do it all in one place.

InfoQ: For whom is this book intended?

Sonmez: Really, the book is intended for software developers at any level – and I would imagine a good deal of non-software developer would benefit from the general career advice in it as well.

I wrote the book in such a way that each chapter is small, concise and stands on its own.

I did this so that the entire book would be accessible to you no matter what stage of your career you are in as a software developer. You can read the whole book or just the chapters that are relevant to the struggles you are currently facing.

The idea is that “The Complete Software Developer’s Career Guide” is a book that you can use to get started in software development and continue to utilize throughout your career.

I wanted to create an evergreen book that would have lasting value.

InfoQ: What are the technical skills that software developers need to master?

Sonmez: The problem is there are far too many to list.

I mean if you want to be a web developer, think of all the things you need to know.

First, you need to know some programming language, then you need to know HTML and CSS so that you can make the actual user interface of a web application.

You need to know JavaScript to make the front-end interactive – possibly a JavaScript framework.

You need to understand the web itself and how data flows over the internet: HTTP protocol, statelessness, web servers, clients, browsers.

And that’s just the tip of the iceberg.

You’ll want to work on a team with other developers, so you’ll need to understand some kind of source control system.

How to check in and check out code, merge, branch, etc.

You’ll need to know about build system and continuous integration.

And I sure hope you are testing the code you wrote, so you’ll definitely need to know about testing and most likely unit-testing.

Oh, and let’s not forget about the software development life-cycle and Agile or Scrum.

And while we are at it, I suppose you should know SQL and how databases work, since you’ll most likely need to store some data …

Yeah, it’s a lot. It can be overwhelming.

Again, another reason I wrote the book; I wanted to catalogue all of these things in one place, so that any developer could see what they need to know and get at least a gist of all these concepts, without being totally confused or overwhelmed.

I’m not saying it’s not a challenge to develop some of these skills, but the hard part today is knowing what to learn, rather than learning itself.

Today there are a ton of resources out there for learning just about any technical skill you can think of – in fact, a good number of these resources are completely free.

The hard part is knowing what skills you need to learn and knowing about those skills to know where to look to develop those skills.

I find that people do really well finding their way when you give them a map and a compass and show them how to use them.

InfoQ: Why should software developers start their own company?

Sonmez: Honestly, most shouldn’t.

Entrepreneurship is not for everyone.

I would love if more software developers became entrepreneurs and started their own companies – and I would love to help them do it – but the hard truth is that for most people freedom is a burden.

It’s much easier to be told what to do than to figure out what you need to do and bear the entire burden of responsibility on your own shoulders.

With that said, the benefits of striking out on your own are enormous.

And I’m not just talking about risks versus rewards.

There’s an intangible benefit and feeling of accomplishment in knowing that you made your own way in life and that you figured things out for yourself – created something of enough value that people are willing to pay you for it.

InfoQ: What about doing side projects?

Sonmez: This one I can recommend wholeheartedly for ALL software developers.

Side projects are valuable for many different reasons.

One of the biggest reasons is that working on a side-project is a great way to gain valuable experience and use new technologies you might not be exposed to at work.

It’s a great way to increase your experience well beyond what you would achieve in the same amount of time, workly solely at a regular job.

Plus a side project often gets you exposure to the elements of software development you might not be used to dealing with.

Many side-projects become full time jobs or end up creating a very impressive line to put on your resume, which says that you are serious about your work and that you are passionate as well, willing to put in hours into your craft on your own.

And there is also the chance of making some money from the whole ordeal – which could be life changing, or at the very least, life enhancing.

InfoQ: How is DevOps impacting the role of developers?

Sonmez: DevOps is blurring the line between software development and infrastructure or IT teams.

In the past, software developers wrote code and that was their primary responsibility. They didn’t really need to know how the code was going to be deployed or anything about the servers it was being deployed on.

But, as practices like Agile and continuous integration became more popular, this kind of siloed working had to change, so DevOps was born.

This means that developers need to not just understand how to write code but how to package, deploy and maintain the code when it’s deployed in the wild.

Not all of these skills are new to developers, as many developer are familiar with setting up and configuring servers and deploying code, but there might be some difficulties for the purist programmer who just wants to write code.

At the least, developers today should invest some time learning about the operating system and servers their code will be deployed on, how the builder system and continuous integration works and how to analyze and troubleshoot production issues.

InfoQ: What can developers do to work effectively with testers, and vice versa?

Sonmez: The biggest thing is to understand the testing process and the intention of it and to focus on communication.

Agile has helped with this by viewing the entire team as a single purposed team who is responsible for ultimately creating and shipping the software.

So, developers need to embrace this mindset and realize that everyone is in this together.

It may seem like testers are just trying to break your code – and some of them are – but, the bigger picture is that everyone is working together to create a quality product.

The biggest breakdowns I see in working together with testers and vice-versa, is assuming things and acting in passive aggressive ways, rather than communicating directly and overtly.

It’s much more efficient to work together to determine why something is broken and quickly fix it than it is to file a bug report, send the bug report to a developer who can’t reproduce the problem, who eventually sends it back to QA, and so on and so on until the bug if finally fixed and retested.

Sometimes five minutes of communication can save hours or days of work and eliminate unwarranted hostility.

We are all on the same team, we all have the same mission.

There is no us versus them.

InfoQ: What are the do’s and dont’s for developers who want to advance their career?

Sonmez: Ultimately, advancing your career comes down to two main things:

1. Being as useful as possible.
2. Getting the exposure, so people know how useful you are.

Unfortunately, both of these things are easier said than done.

Being as useful as possible means being effective yourself by learning how to write good code and how to solve problems efficiently – essentially developing your technical skills – but, it also means much more than that.

The most useful developer is one who makes the other developers and the rest of the team more useful.

Often this involves taking on responsibility and ownership. This means being a leader and learning how to communicate effectively with others as well as how to persuade them to join in your efforts.

Ultimately a developer – or anyone – who provides the most value to the most people, will in turn receive the most value.

Zig Ziglar said it best when he claimed “You can have everything in life you want, if you will just help other people get what they want.”

Now, just being valuable and providing value alone is not enough, because you could be the most valuable gem in the world, but if you are buried under rock and earth, you’ll never shine.

“Shining” is all about learning to market yourself and build your personal brand and reputation.

You have to get noticed – and the most successful software developers make sure they do.

This doesn’t mean you have to be arrogant and excessively brag about your accomplishments or skills to anyone who will listen.

But, it does mean that you have to actively manage your career and personal brand and work on building a name for yourself and reputation.

You need exposure, whether in the workplace or to the world at large – preferably both.

Some great ways to do this are ways which also provide value to others.