5 types of programmers: which one are you?
There are many different types of programmers who develop software. Or is it computer programming? Or is it encoding? These are all labels or boxes that we use to classify people and their abilities. Just like we distinguish between testers, coders, managers, architects, designers, CLO, etc., only these are much more obvious. So what exactly makes an encoder an encoder or a programmer a programmer? We can use them interchangeably to mean the same thing, but from an external perspective, I like to think of them as badges or stripes. Something that you earn with time, patience, wisdom and experience.
Some people simply have certain qualities that make them good, bad, better, or worse than the other person. To simply determine what they could be, I propose five boxes or labels.
- The user of the tool
- The hacker
- The programmer
- The architect
The user of the tool is the least experienced of all. You have enough knowledge to poke around tools like Visual Studio 2005 and assemble a GUI by simply dragging and dropping widgets onto a form. For someone who does not know better, because it produces results that often seem convincing (caused by the efforts of the tool and not by their own actions), they think very highly of it and / or its constructions. Why the term construction and not production or development? Well, it doesn’t really develop anything. Build things with the use of increasingly sophisticated tools. A good management that has clues or knows the technology will see past this, but unfortunately (or fortunately for the best programmers in the world) it still finds its place. This is the worst kind of software developer. When something under the hood breaks or he / she needs to modify his behavior to do something substantial, forget about it.
Languages of choice: Would it really matter? It’s all gibberish
Choice software: Each and every one of the RAD tools that provide rapid development of clicky interfaces
The hacker has gone beyond the notion of expecting the tools to do all the work for him. Has basic or rudimentary developmental skills. Has no knowledge of compiled languages, but understands scripting languages well enough to put bits and pieces together. Generally, you can copy and paste scripts and modify variables and functions. Usually you don’t understand the big picture of something’s development, but you can hack into something that is given to you hopefully. It trolls the web and forums for code snippets to do what it wants and assembles them.
Choice software: Simple text editors, maybe text editors that provide syntax highlighting
The programmer has a good understanding of what it is to code and write software. It does not depend so much on the tools as on your own understanding of the languages. He is not as concerned about the tools he needs as he realizes that the tools are not going to do the work for him. However, this oversight prevents you from realizing the benefits that a more experienced programmer can provide. This unfamiliarity with tools and libraries; As a result of limited exposure and experience in a broader field, it casts a shadow over larger project environments that require versioning, many developers, and larger environments. You are just not familiar with it. Similarly, although you are a capable programmer, you don’t necessarily think about how others will use what you write, and as such you don’t really fit into the team-building environment. He is a skilled “lone programmer”. He may have skills, but no one can work with him because he doesn’t think above or below the line of code he writes.
Languages of choice: C ++, Java, C #, Visual Basic
The developer is an experienced programmer who understands that software development involves much more than the lines of code that make it up. They have a much better understanding of software design concepts and principles than the programmer, and they think of a problem in its entirety. While you have a good understanding of this problem and are open to looking at it from most angles, you don’t necessarily understand the entire domain to which it applies. With seasoned programming skills, you don’t rely on tools, but instead use them to increase productivity.
Languages of choice: You generally prefer managed code over unmanaged code, as you realize the increased productivity that comes with it.
Choice software: The highly developed IDEs; anything that provides intelligence, syntax highlighting, code snippets, templates, formatting, etc.
The architect is the crème of the crop. He is a skilled software developer with over ten years of experience to his credit. You have gone far beyond the technical aspect of software development and understanding good solution design. You can go into an enterprise domain and connect the dots that people within the domain couldn’t. Drawing on many years of experience of what works and what doesn’t, he is often hired as a consultant for his valuable experience.
This much broader, yet specialized skill set puts you in high demand. When a company wants to bring in the big shots and call in a consultant. This is the boy.
Languages of choice: Programming was left to his youth, his consulting services force him to write very few lines of code.
Choice software: Modeling tools, metric tools, and tools for comparison purposes.
What kind of programmers have you met or worked with in your life?