Learning is an unavoidable experience that while being perceived as controllable, quite often isn’t. This by itself I don’t consider a problem, the problem emits from the perceived abilities of those who are learning.
There was a study done in the 1980’s by Hubert and Stuart Dreyfus on a Construct Theory called the Dreyfus Model. The Dreyfus Model suggests that there are 5 stages that a person goes through in the process of learning. Novice, Advanced Beginner, Competent, Proficient, and Expert. Most people will agree it takes a minimum of 10,000 hours of work to advance from novice to expert. The problem comes from people that are in-between advanced beginner and competent.
When someone is in-between advanced beginner and competent, they have just enough knowledge to be dangerous, and yet not enough knowledge/experience to really do any complex problem solving. The problem is, a certain percent of these people see their improvements and think they are experts. Of course the problem with thinking your an expert is, you probably aren’t. An expert doesn’t think to them selves how amazing they are, and how they are an expert, they just are an expert. What’s even worse is most of these people also realize that the majority of society aren’t experts, and will behave in accordance to the delusion that they are superior.
In reality, they aren’t an expert, they are just an advanced beginner behaving like everyone other than them are beginners. This just pisses people off.
The most common place to observe people like this is college. In college, students gain a large amount (or at least, reasonable amount) of knowledge in a fairly short amount of time. Often times not having any experience in their field before college. On top of that, they will usually be 17-20 upon entrance, which is when they are naturally arrogant. Even more than that, they are in a class room full of other novices or advanced beginners. This just makes it easier to assume they are the experts, and the people around them are the ‘noobs’, when in reality they are all ‘noobs’.
There’s yet another problem with the advanced beginner/novice though. That is, they can’t know what they don’t know. An obvious statement, however, a statement that they don’t seem to understand. Often times, someone who is fairly new in a field will try to shoot down an idea that they think they understand, but don’t. Why don’t they understand? Because they don’t have the experience/knowledge to understand it. It’d be unreasonable to expect them to understand it, but often times they will expect themselves to understand it.
So, how do you fix this? Easy, force all of the students to work on a *reasonably* complex online open source project (or if it is a field where there aren’t open source projects, make it some sort of community research project). What happens in an environment like this, is there is always a decent number of experts/people who are proficient that the student will be in close contact with and will be forced to work with. Working with an expert is a very humbling task, and it makes it nearly impossible for a student to presume they are experts when they aren’t.
How is this applicable to us developers as a whole? As I said in my blog post The Violin Effect, the software industry is constantly expanding, and as a result, we are forced to learn a vast amount of new technologies, ideologies, and methodologies, as well as a large amount of us developers are in college. It is very easy for us to presume while learning something new that we are experts in an area that we aren’t.
Do your fellow developers a favor, and ask your self before you act, are you really an expert in this area? Are you shooting down an idea you don’t fully grasp? Does the person you’re talking to understand this subject more than you? Do us all a favor and ask yourself these questions before acting as though you are an expert that fully grasps the subject at hand and is better at this subject than anyone else participating in the current project.
(On a side note, I have been busy lately, however, I will write on my language design series when I get a chance.)