Most of us are familiar with this stage. If you fail to
master the technical, then programming probably isn’t the right career for you.
The technical stage is where we’re exposed to the
fundamentals of programming and computer science. This is where you’re tirelessly
eating up whatever you’re being taught at college or boot camp.
Some concepts you’re likely to master before moving on from
this stage include:
·
operating systems
·
networking
·
computer architecture
·
distributed systems
·
databases
·
data structures and algorithms.
The technical stage is only the first step. It doesn’t make
you a successful programmer. It’s barely enough to land a good job in most
cases.
You probably patted yourself on the back and rushed to
purchase some celebratory ice cream.
Your successes were good enough for a college/boot camp
graduate back then. You are now a developer working or trying to join a
company. Assembling an if statement simply won’t cut it.
Professionals need certain skills and abilities that can
only be gained through experience working in a dev team. This stuff simply
isn’t taught in college.
“Hang on! What’s the difference between my Introduction to
Java 104 and writing code for Google?”
I’m glad you asked. There’re two crucial differences.
Successful
programmers are not a one-man-show
- Source: https://unsplash.com/photos/-xTBn1YBrTE
Chances are good you were mostly coding alone during
Introduction to Java 104. The probability of you being a lone wolf is even
higher if you were teaching yourself using platforms like Code Academy and W3
Schools.
That was great. Doing everything on your own from beginning
to end is a good way of understanding how it all works.
However, you won’t be working alone in most organisations. You’ll
be part of a team, the size of which will depend on the company.
This means you now need to be comfortable working with a
diverse list of people.
The skillset required for working in a team and coding in
your basement are two different things. Professional programming requires competencies
you’ll only pick up on the job.
Successful
programmers and amateurs don’t have similar goals
Writing code that actually works was probably the only goal
behind your programming efforts during the technical stage.
“Does it run without displaying errors? Does it perform
every function I want it to perform?”
If the answer to these questions was “yes,” you were
probably satisfied. Mission accomplished. Who cared if your variable names were
borderline nonsensical?
In organisations, writing code that runs is not the only end
goal.
You need to consider factors such as:
·
reliability
·
scalability
·
maintainability
·
reusability.
Like with everything under craftsmanship, successful
programmers only pick up these skills at work. Failure to master these concepts
will limit your growth as a software developer.
If your app crashes the moment 200 people try using it, you
haven’t done a good job. If the next programmer cannot make head or tail of
your code three years later, you’ve messed up.
Leadership
Relax. I’m not talking about leading a department of fifty
people, or yelling at Joe from the database team to get his act together.
Everyone from a mid-level engineer to the newest intern can
exhibit certain leadership characteristics. In fact, I believe it’s impossible
to be a successful programmer without leadership qualities.
Leadership qualities can both be taught and gained with
experience on the job.
The three leadership characteristics that differentiate a
successful programmer from a mediocre one include:
·
communication
·
initiative
·
mentoring.
Successful
programmers are good communicators
It goes without saying, but communication skills are
important in any profession. Whether it’s verbal communication, writing, or
presentations, you need to bring you’re a-game to the table.
The story of someone complaining about their superior genius
not being recognised while the mediocre are praised is all too common. A major
reason behind this phenomenon is a lack of communication.
Imagine you’ve done exceedingly well at the technical and
craftsmanship stages. You are now a master in your field, and you’re brimming
with all these ideas.
You won’t get far without the ability to properly
communicate these ideas to peers, managers, and customers.
Successful
programmers take initiative
You’re at work and a problem has arisen. Maybe a bug has
been discovered in the software.
If you know how to fix it, go ahead and do just that.
Do you have a suggestion to improve the product? Speak up.
People will always appreciate someone who can take
initiative. It proves to everyone, especially your managers, they don’t need to
babysit you.
Successful
programmers are mentors
Practice makes perfect. And repetition is one of the best
forms of practice.
Believe it or not, teaching someone else is a useful repetition
technique.
Think about it. To be able to explain an idea to someone
else, you first need to grasp it yourself. And the more you explain the
concept, the better you understand it.
In addition, seeing someone you’ve helped master the ropes
succeed can be fulfilling to you as a human being.