...: Marsh Chatter
A Definition: 3 Levels of Programming Knowledge
In my work with information technology, I see 3 levels of programming knowledge. Sure there might be some blurry lines amongst the levels and even many sub-levels in each, but these generalizations help me understand who someone is and how to work with them in business.
I arrange the levels as an upside-down pyramid for 2 reasons; as you move down each level 1) there are less people in each role and 2) there is more "pressure or responsibility". An upside down pyramid is a good metaphor for this arrangement, in that if the first level people don't do their job the entire pyramid crashes. If the second level people don't do their job, only the third level people are affected.
So let's see what those levels are...
Third level - Get the Job Done
Best represented by the person who just wants to get a solution to their question - these people are everyday people using a computer. There are a lot of them. They don't want to know about the how or why... they just want it to work. These people are your family members, your co-workers in business, and your employers & customers. These people think second levelers are "Wizards".
Second level - Build and They Will Come
Best represented by most developers today. They are interested in and tasked with building the applications used by the third level. The second level people are interested in best case and speed for programs using the tools available to them (e.g. the how). These people may or may not have Computer Science (CS) degrees and in fact... many do not. They are people who have significant high level programming knowledge gained over time from work experience (OJT), reading books, or in programming courses. These people know they are not "Wizards".
First level - Beyond The Curtain
Best represented by the programmers who know the bits & bytes. They work at the deeper levels of programming and their work creates the tools used by the second level. They know the "why" of code. They have Computer Science (CS) degrees and probably more advanced architecture, operating systems, and other degrees - usually at the doctorate level. These people "are Wizards".
Where do I fit?
I am definitely a second level. My one experience of working with Assembler was enough to steer me in a different direction. Working with our higher level developer tools, I can create things and teach those at the second & third levels how to expand their knowledge and abilities. I primarily learn from the work of my peers at the second level and those at the first level.
Learning from Third Levelers?
People at the third level have a way of expanding my teaching abilities... the same way that children surprise adults. No, I am not calling those at the third level… children - in fact, those at higher levels usually "humble" those at lower levels. We may think we know more - but those around us… adjust our thinking!