Bridging the gap between competence and proficiency

Do you know what the difference between competence and proficiency is?

That sounds like a trick question, because the words seem to mean the same thing. But the subtle distinction between them is critically important.

Competence means having enough experience and knowledge to get stuff done; proficiency involves knowing why you are doing something in a certain way, and how it fits into the big picture. In other words, a proficient practitioner is always a competent practitioner, but the opposite may not be true.

The Dreyfus Model of Skill Acquisition covers this topic in great detail. Although its title sounds a bit academic, the paper is very approachable—and it has an amazing cover page that will make you feel like you’re reading a secret Illuminati cable that you found in some hidden library in a haunted house:

Figure 1. Cover page from “A Five-Stage Model of the Mental Activities Involved in Directed Skill Acquisition” by Dreyfus, Stuart E.; Dreyfus, Hubert L. (February 1980). Washington, DC: Storming Media.

I recommend reading the original source material for a great overview of the path from beginner to expert. But in this article, I will focus on the bottleneck for most software developers I’ve known: crossing the divide from competence to proficiency.

So first, let’s establish a working definition of competence as just meaning “I know how to do stuff”—it’s an oversimplification, but it’s close enough for our needs. It’s fair to say that no matter what kind of occupation you work in, knowing how to do stuff is pretty important. If you are a programmer, learning how to do stuff is a huge part of your work:

  • I need to know how to use revision control
  • I need to know how to use a consistent coding style
  • I need to know how to set up a continuous integration server
  • I need to know how to query a database
  • I need to know how to implement a responsive layout
  • I need to know how to work with a service API

And don’t get me wrong: Knowing how to do stuff, and a lot of it, is critically important. Don’t stop working on that, or you’ll soon find yourself out a job.

Source: The traits of a proficient programmer – O’Reilly Media

Categories: Uncategorized

Related Posts

Uncategorized

Django 2.0 alpha 1 released | Weblog | Django

Django 2.0 alpha 1 is now available. It represents the first stage in the 2.0 release cycle and is an opportunity for you to try out the changes coming in Django 2.0. Django 2.0 has Read more…

Uncategorized

Becoming a 10x Data Scientist – Algorithmia

Borrowing tips and tricks from software developers, learn how to create a more productive workflow on the journey to becoming a 10X Data Scientist. Source: Becoming a 10x Data Scientist – Algorithmia Related PostsTrey Causey Read more…

Uncategorized

Announcing Rust 1.20 – The Rust Programming Language Blog

curl https://sh.rustup.rs -sSf | sh rustup update stable Source: Announcing Rust 1.20 – The Rust Programming Language Blog Related PostsIn Defense of C++Principles for C programming – Drew DeVault’s BlogVulnerability announced: update your Git clientsVulnerability Read more…