How to be a Great Software Developer?
What is the most in-demand job opportunity across any profession?
Software Development.
Why?
One of the main reasons is that you don’t need to start in a software discipline per se but you can end up doing it as your career.
For instance, many people I know- including myself- did not start off in a Computer Science program or with formal IT education.
And yet, I would rank these people in the same “high-performer” category as those that did take formal learning classes.
And vice-versa; I’ve seen the same.
When I was in University, I built websites while I worked on my Business degree.
This was the gateway into this wondrously, creative and imaginative world where all I would ever need was be a computer.
The work fit my schedule and I learned an incredible amount about new technology.
But don’t be fooled: getting a job in Software Development can be easy, but keeping the job, developing a career, and becoming a great Software Developer are two totally different things.
Knowing what you need to get there is half the battle.
So what do you need to make this happen?
Be a Problem Solver
Are you the type of person who enjoys solving problems when they arise?
You know- the little quirks and oddities of why a particular “thing” seems to break on the 39th time- Every.
Single.
Time.
Without fail?
Then you are already on your way because Software Development is all about Problem Solving.
Where some eschew the unknown, a Great Software Developer dives in to trying to figure out what is wrong.
Don’t know the SDK?
Learn it.
Don’t understand the business logic?
Sit down and have someone explain it to you.
Don’t know who wrote this last piece of code?
Find them, buy them a beverage, and learn from them.
At the core of any software task is the question – “What problem are we trying to solve?” –
if you can identify with the how of problem solving and of unraveling all of life’s hidden mysteries while never uttering the words – “It can’t be done” – then you are on your way.
Respect Thy Peers
It’s sad that software development is typically stereotyped as individuals working in a corner, not talking to each other, grunting through their daily routine.
You could apply this to any profession.
I can count the projects on my hand that I worked on where I was an Army of One; but I would need a spreadsheet to count the number of projects where I have worked with a team in either the capacity as a leader or a contributor.
Contractors work on tasks and jobs as Armies of One; YOU are building a career- to do that you need to identify with those you are working with and learn to work with them.
Everyone has a different personality and level of commitment than you but that does not negate their contributions to your project.
I’m always asked how people should progress through their career – “How do I become a Tech or Team Lead?”, “What’s the magic formula?”.
It’s easier to say than to do: respect your peers- today you are leading them, tomorrow they might be leading you; don’t humiliate failure- insulate it- learn from your mistakes and move forward; ask for help when you need it- you can’t do it all on your own and neither can they.
In all these interactions it’s about how you interact with your team, your peers.
Anyone can be a great team leader/contributor when things are going perfectly, but if you can navigate the bad just as well as the good, that’s a different breed altogether.
Programming Chops
There are a lot of development platforms out there to learn – you can’t learn them all – but you can learn the concepts that allow you to move from one language to another.
If you can understand the concepts, the pieces, the core tenants of programming – then when you start to move from platform to platform- everything will start to become that much easier.
When interviewing for junior positions I move immediately to what the candidate has done outside of school – side projects, apps that only saw their inner circle saw, a website for a ma and pa store.
Those are the chops I want – that’s the experience and the drive to continually learn more and grow your skillset that can take you from graduate to career.
In short, you want to be a Rockstar, Ninja or Programming Wizard?
Go learn one language and focus solely on that.
You want to be something more?
Go out of the box and learn new technologies, understand concepts such as debugging, performance analysis, and source control.
You nail those things and you are on right path.
Become a Great Developer
Technical abilities are lowest on the list – that must be a mistake right?
No.
Good Software Developers focus on their technical abilities and get hired to perform x amount of pre-defined tasks on an ongoing basis.
Great Software Developers showcase their skills as a problem solver, leader, and team player- demonstrating what they know and what they have the ability to create.
Great Software Developers aren’t given tasks to finish: they are given problems to solve, teams to lead, and platforms to learn.
Great Software Developers don’t dabble in the unknown- they live there, they thrive on it, they make something happen- but most importantly, they don’t rely on their technical skills to make it happen, they rely on their entire toolset.
The question you now need to ask yourself is whether you want to be good or great?