Skip to main content



     A recent meme running on programming sites across the Web is a generally humorous discussion of the attributes of bad programmers. If we put aside the humor — everyone has a war story here — in my experience, bad programmers fall into two main categories: the dim and the reckless. The dim ones generally have a small skill and are unaware of its limitations. They generally avoid deep technical conversations, but when they do speak, they often greatly overreach in the estimation of what they're capable of doing or what they know. Curiously, I regularly receive article manuscripts from these folks ("Want an article on building your own DBMS in less than 100 lines of JavaScript?") and it's difficult to respond courteously to the proposals, so I often beg off by simply citing that the pieces are not what we're looking for.


       The other group, the reckless, consists of those who have the skills but don't have the discipline. They are the cowboy programmers of yore. They code according to their own desires, do nothing to integrate their work with that of others, scrimp on basic discipline, and cause work for other team members. Fortunately, this model is dying out (somewhat too slowly) as IT becomes aware that their cost is rarely ever offset by their benefits.


      I guess you could add a third grouping of folks, the jerks, who wield their roles so poorly that they drag down the entire team. They often come from one of the other two previous groups, but have been given enough responsibility that they can make life miserable for others. The only solution when faced with them is to hope that they eventually are let go or to leave yourself.

The Good Guys

To happier topics: Good programmers are, I believe, the core of the profession. They are competent, desire the right outcomes, and strive to contribute to the team. They frequently have well-defined skills, a good understanding of development disciplines, and are open to new approaches as long as the material can be integrated with what they already know. They write solid code, although only occasionally does it show a truly imaginative solution. More commonly, when faced with a difficult problem, they will lapse into quick and dirty hacking. They block themselves from greatness by not having the curiosity or know-how at their command to be more than they are. That is, they refine their skills principally by continued application, not by learning new technologies — unless required to do so by job demands. Such programmers are at risk of slipping into the lower grouping by letting their skills atrophy. I discussed several examples of this in my previous editorial on coding from within the echo chamber.


Really good programmers have another dimension to them: They carry an abiding passion for programming. They like to solve challenging problems and they like to solve them well. They are not satisfied with writing one more CRUD app. They want the magical work that is hard and requires extended effort to bring to fruition. If they can't find this satisfaction in the workplace, they find it in personal projects or by contributing to open-source projects. They frequently test new technologies, try out new languages, explore new tools, and read about programming. D


The next tier up — the final tier — consists of great programmers who have supernormal gifts that enable them to do easily what good programmers find difficult. Due to my work in the press, I've met more than my share of these talents, although I've not had the opportunity to work with many of them. To my eye, the traits that most stand out are three in number: an excellent memory, a conspicuously wide knowledge of programming techniques and the judgment to know when to apply which, and a deep ability to relate details to the larger picture. The last trait — being capable of quickly shifting registers from the large picture to small details and back again — relies on the strong memory and operates on an almost automatic basis. There is an effortlessness to it, which makes them particularly good architects.


There's one discipline they all share as well, which appears only in varying degrees in the earlier levels: Without exception, they possess a very deep and intimate knowledge of their tools. Be it the editor, the compiler, or the framework, they know the ins and outs of its features and they navigate efficiently. They use a much wider array of features because they know exactly how the tools work.
Knowledge of tools, coupled with an extensive, tested palette of programming techniques, and the ability to remember large amounts of the code base, while relating low-level details to the whole with unconscious ease — these are the traits I see most often in great programmers. And they're the skills I continue to aspire to in my work.
The Greats

Comments

Popular posts from this blog

Why you should learn to type

Computers are getting more and more  used in our life's more than never before.. from the desktop computers sitting in the chiefs office to schools , to hospitals just to mention a few, if you want to get a head of the game then learn effective typing skills! Learning to touch-type is one of the most valuable skills you’ll ever learn. If you want to increase your productivity and have more success, bite the bullet and learn to type properly now! I know this won’t be a popular topic, but it’s true: If you want to be a better secretary, designer,receptionist , developer, chief, manager, whatever… Learn To Touch Type! If you’re a team leader, get everyone on your team to learn to type. It will be the best short-term skills investment you can make.
Why you should learn to type The bottom line is this – if you type with one or two fingers of each hand, the average person can probably manage 40-60 wpm (words per minute). If you learn to touch-type, you can increase that speed to 60-100…

Why Learn Computer Science

Computer science is one of the most amazing art forms in the world. Notonly is it incredibly expressive — allowing for an infinite number of combinations of words, images, and ideas —but when done well, it producesa functional and useful product that can entertain and inform the masses.

  When most people think of computer science,they generally envision programming.Often, they assume that the field is full of people who sit alone at their computers all day, staring at large screens and drinking coffee. In reality, computer science is an engaging and collaborative activity that includes far more than the ones and zeros for which it has become famous. 

The art of computer science often starts with a problem that needs to be solved. Maybe there is too much information produced by a study for one human to be able to sort through it all in a lifetime. Perhaps an elderly person finds it hard to physically connect with long-distance relatives. There might even be an organization that needs to…

Epic Sites With Breathtaking Stock Photos You Can Use For Free on any project

It can be insanely hard to find high quality, free stock photos for personal and commercial use. A growing number of awesome websites have amazing photos you can use for your work for free. I’ve curated a list of the most epic sites that have great stock images you can use for different purposes. You have probably bookmarked a few of these already. Most of the photos you will find on these sites are free from copyright restrictions or licensed under creative commons public domain dedication. You can copy, modify, distribute and use for even for commercial purposes, all without asking permission. However, some photos may require attribution. 1. Pixabay: Free high quality images. 2. Pexels: Best free photos in one place. 3. All The Free Stock: Free stock images, icons, and videos. 4. Visual Hunt: High quality free photos in one place. 5. Splashbase: Search & discover free, hi res photos & videos. 6. Startup Stock Photos: Free photos for startups, bloggers and everyone. 7. Jay M…