The current mantra is, “Everyone should learn to code.” The problem is most people interpret that to mean “Everyone should become a programmer.” Like many professions, programming takes a certain combination of talent and skills that not everyone possesses.
For example, when I (Cal) was younger, I decided I wanted to learn to play the guitar. My parents bought me one, and I started to take lessons. It lasted about four weeks.
I had a guitar. I could hold a guitar. I could strum the strings. I had everything necessary to begin playing the guitar — everything except one important thing: a desire to play the guitar that was strong enough to motivate me to practice.
Physically, yes, I had everything I needed to play the guitar. What I was lacking was passion.
Software development is a lot like playing a musical instrument: The best make it look easy, but only because they’ve had years of practice first. More to the point, software development requires a commitment to learning the basics, then learning how to properly apply the basics, then learning new things based on your experience, then — you get the point.
Passion is a cornerstone of a successful career as a software developer. Passion for creating something. Passion for solving a problem. Passion for adding value to a project or company.
Your Track Record Matters
But while passion will get you started, it will only carry you so far. I (Cal) have a passion for first-person shooter video games. Ever since I played the original Team Fortress, I have been hooked. Most weeks I will log 4+ hours of playing.
That said, I’m not very good at it. I am certainly not good enough to compete professionally. I’m not even good enough to be part of a clan. I love playing, though, even if my KDR is usually not even an integer.
To move to the next level, I would need a track record of success. This is where many people trip up in the world of programming: They think that because they have a passion for software development, they should be able to build a career.
Doctors spend the first few years of their careers working the worst jobs in the profession. They don’t walk off the stage and immediately start performing open-heart surgery. It takes a lot of doing the hard stuff first, things like being the on-call doctor and working the emergency room on the weekends. These are not glamorous jobs. These are not fun jobs. These aren’t even well-paying jobs. However, they give a doctor something they need: a track record. A doctor can point to their time in those jobs and say, “See, I know what I am doing.” Then they can go on to the fun/high-paying part of being a doctor.
Just as a doctor has to prove they can do what they claim they can, software developers have to prove they can solve problems with code. Unlike doctors, though, software developers have a lot of options for how to do that. The easiest option is to get involved in your favorite open-source software program and:
- Check out the repository
- Find a bug you think you can fix
- Write the code
- Submit a pull request
- Go to step one
For more expert career advice, check out the latest issue of Recruiter.com Magazine:
The more you do this, the more complex of a bug you will be able to fix. Soon, you will become a regular contributor and will have a body of work you can reference to prove you can do the job. The second but no less important attribute of this method is that your favorite software project is better off because it has a new contributor adding value.
This kind of work is much more important when you are just starting out than if you have a career you can point to. It is also more difficult to do when you are just starting out. If you have no track record, it will be more difficult to convince project owners to accept your pull requests. Still, the experience you gain will be invaluable.
Being able to show a track record of building useful things is a cornerstone of a successful software development career.
Once you have your software development job and have started your software development career, you need to be able to prove to your current and future employers that you can deliver value.
Most companies do not hire people altruistically. It would be a better world if they did, but the fact of the matter is that companies have to stay in business to keep employing people like you. To stay in business, they have to create something of value for which others will pay money. Therefore, for you to stay employed, you have to deliver something of value to the company.
In the case of software developers, the value we deliver is not the code we write, but the problems we solve for customers. If the code we write does not solve a problem the company can monetize, then it is not valuable.
Once you get a job, and once you get settled in, start looking for ways you can add value to the company and its products. Sometimes, value is created by doing the things nobody else wants to do, like documentation, unit testing, etc. Backfilling these important software development artifacts creates value because not only are you adding to the project, but you are also freeing up developers who know more about the project to work on the problems you are not yet qualified to work on.
Being able to deliver value to the users as well as the company is a cornerstone of a successful software development career.
Every successful software developer has these three things: passion, a track record, and the ability to deliver value.
Yes, everyone should learn to code if they want to, but learning to code is not the same as being a successful software developer. To do that, you need more than a basic understanding of the rules, just like it takes more than being able to hold a guitar to be a successful musician.
Mario Peshev is the CEO of DevriX and the author of 126 Steps to Becoming a Successful Entrepreneur: The Entrepreneurship Fad and the Dark Side of Going Solo. Follow him on Quora, Twitter, and LinkedIn.
Together, Evans and Peshev produce the podcast No BS Engineering: Career Advice for Developers.