Developer, Heal Thyself!

I was reading the Letters to a New Developer blog and ran across mooreds’ post about the surprising number of programmers who can’t program.

Unless you’re just chasing a paycheck, why in the name of Holy Grace Murray Hopper would you apply for a position in a field like software development without having at least a code-monkey’s level of programming ability? Even if you pass the interview, jumping into this career unprepared is a fantastic prescription for embarrassment and short employment. It’s also a recipe for disaster as web sites and systems are compromised on a daily basis because of critical bugs in their interfaces and architectures (poor developer oversight by management contributes heavily to this issue as well).

I’ve often interviewed candidates for application development positions and I can confirm that some of the applicants were surprisingly lacking in critical areas. A database application developer didn’t know what a primary key was or the importance of referential integrity. An ASP.NET developer couldn’t configure a web.config file to display detailed error information. One applicant bailed when I asked him his very first technical question. I thought he had stage fright so I encouraged him to give himself a chance and keep going. He didn’t get any better.

So, what are some potential reasons why someone would attempt to enter the field with little or no ability?

A1: They Don’t Know They Lack Programming Ability

I’ve run into some really skilled self-taught programmers. A formal computer science or computer engineering degree isn’t necessary for all programming positions. But self-teaching of any kind has at least two common pitfalls:

  • Not acquiring a firm foundation in core concepts.
  • Not learning the required vocabulary so you can speak coherently to others in the field.

How do I know this? I was a self-taught programmer.

I had been writing code as a hobbyist for years but my high school didn’t have a computing department and only offered a single course in BASIC, which I already knew. I liked the teacher but I don’t think she wrote very much code and I had a definite “big fish, little pond” dynamic working for me. I did get to pair up with a high school crush in the class (Hi, Karen!) but her opinion that I was some kind of genius didn’t help my self-assessment.

The Internet, with its mind-boggling programming resources, access to experts and code–oh, so much code–didn’t yet exist. I didn’t attend or even know of any programming user groups in my area so I pretty much just happily coded in my own little universe.

When I graduated high school and applied to a local university’s engineering department, I was able to skip algebra, trigonometry and English composition because of my entrance exam scores. The computer science department also had an entrance exam for leap-frogging the basic courses.

“No problem,” thought I. “I’m an experienced programmer. I’ve written tons of programs. I’ve even typed in programs from computer magazines and modified them.”

The day of the test I was still pretty confident. Things were going great until about ten minutes in when my Starship Coderprise was hit by a devastating broadside from a Big-O Notation heavy cruiser:

Write the pseudo-code for three common sorting algorithms and compare and contrast their relative performance, focusing specifically on speed, memory usage and efficiency, as the number of elements to be sorted increases.

My ship never recovered and I blew the exam.

I wasn’t thrilled at the time but failing the exam was actually a good thing. I signed up for the fundamentals classes, filled in the gaps in my knowledge and created a strong foundation for later study. That entrance exam was for me what testing is for an application: find the bug and find it as quickly as possible in the development cycle to minimize the harm and expense of the defect. If I had signed up for higher level classes, I might have had several months of playing catch-up while trying to learn new material or I might have failed the courses completely rather than just failing an entrance exam.

My problem was related to the Dunning-Kruger effect, a cognitive bias that causes you to overestimate your skill within a knowledge domain because of your lack of experience within that domain. A shorter way of describing this is, you don’t know how much you don’t know. This psychological quirk is discussed in depth all over the web so I won’t spend any time on it here.

But I was just a high school student living la vida nerd-o and programming for fun. How might an adult not know they can’t even pass FizzBuzz, an extremely simple programming exercise?

A2: They Are Looking for a Shortcut

I don’t listen to my radio very often driving in to work. I have a Bluetooth-enabled deck and a mobile phone plus I hate most commercials. Even with as little play as my radio gets, I still constantly hear commercials promising to turn anyone into a coder in six months. Here’s a taste. I wrote this one but it’s very similar:

Are you sick of your dead-end job? Are you tired of long hours, boring work and low pay? Want a job in the HIGH TECH industry with a great company, full benefits and a paycheck that will give you a double hernia? Then you want GREAT SUCCESS CODING BOOTCAMP! That’s right! GSCB will train you to be a FULL STACK developer in the booming world of IT. Forget those other schools that only teach QUARTER STACK or HALF STACK programming! Would you be satisfied with only a half stack or quarter stack of pancakes? Of course not, YOU’RE F*CKING HUNGRY…FOR SUCCESS! Did we mention that our training program is lightning fast? IT’S INCREDIBLY FAST! If you had signed up when this commercial started, you’d already be a FULL STACK DEVELOPER. What about tuition? GSCB’s tuition fees are LOW! LOW! LOW! They take all major credit cards, the GI Bill, money orders, Bitcoin, WeChat Pay, real estate, gold teeth and unwanted children. Personal checks not accepted. APPLY TODAY! Your future is waiting!

Full disclosure: I have never attended a coding bootcamp and I don’t know anyone–nor have I worked with anyone–who has. That fact alone is significant.

This moldy lure is nothing new. I heard this same type of commercial starting in the late nineties when they were directed at people looking to break into the IT field as system and network administrators. You’d pay some company a large sum to basically feed you the bare minimum you’d need to pass the Microsoft certification exams, or worse, they’d simply ask you to memorize questions that had been directly lifted from the exams by previous students. Even if you passed the exam, you were little more than a parody of an actual administrator. The name given to these unfortunate people was “paper engineer” because although they had the certifications, they lacked the actual knowledge and ability to manage computer systems and networks.

These sketchy “cert” mills promised the world and preyed on ignorant and/or desperate people, particularly soldiers who were leaving the military and needed to find civilian work. What these companies were really after was unrestricted access to that sweet, sweet GI Bill money.

I figured these hucksters would eventually get around to promising a fast track for software development. And I don’t fault anyone seeking to improve their lot in life and no one deserves to be preyed on by these vultures. But there are some hard CONSTs in life:

The more things change the more they stay the same.
If it sounds too good to be true, it usually is.
Anything worth having is worth working for.

Most people don’t just wake up one day and think they’d like to be a software developer. After a hard blow to the head you might wake up speaking Mandarin but I’ve never heard of someone waking up from a coma and suddenly knowing JavaScript. They typically just start coding as a hobby and decide they like it enough to turn it into a career. The Internet now has massive, free, programming and development resources which makes it even less likely that someone hasn’t been exposed to the concept of programming if they had even a passing interest. And if you don’t, you really need to ask yourself why you want in. If your answer is just a big paycheck (and that’s not even a certainty) then you’re no more suited to development than you would be for any other career. Unless you’re planning to hot potato out of your first development position into management to avoid coding duties (and you will not be a popular manager due to your ignorance there as well), the money won’t be enough to sustain you.

The field of programming is vast and not unlike the medical field. Just as there are many different specializations in medicine, so too are there in development. A school that promises to teach you everything you need to know to be a skilled, competent programmer in six months (or six weeks) is probably lying to you.

I also suspect students are being told, “Development is simple. If you have any questions or need source code, just hit up Google or Stack Overflow.” This is horrible advice. You do not want to become a “cut-and-paste, compiler-driven” programmer–even code monkeys laugh at them.

The Internet has lowered the barrier to entry in the software development field, but it isn’t that low. Knowledge and aptitude are still very much required–If this job’s for you, you’ll do the necessary work.

It might be an unpopular opinion right now given the zeitgeist but not everyone can do anything and not all are:

©, 2019. Unauthorized use and/or duplication of this material without express and written permission from this site’s author and/or owner is strictly prohibited. Excerpts and links may be used, provided that full and clear credit is given to with appropriate and specific direction to the original content.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s