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

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....

TECHNOLOGY HAS EMBRACED US WE SHOULD RECIPROCATE

    IF THIS IS TRUE THEN WE NEED MORE PROGRAMMERS ( ELSE ) WE MAY NEVER REACH OUR POTENTIAL.  Computers are affecting almost all aspects of our lives. With the development in the information technology and the computer being in the forefront of all information technology, it is important for contemporary human beings to become IT literate. Modern man can not afford to ignore the numerous computer applications in various aspects of human activities.   Many seem to think that computers control human life but what would you really do without computers in this 21st century? Our life revolve around them, we drive them , they drive us.. Man created Computers and Never will computer create man , NEVER EVER ,atleat not a human being
A TRIAL AN ERROR. I think of #programming as a way of art, more of an art in it self. Let's take for an instance in the start-ups world. Start up world is made up of two things. People and code. People write the code and the code make the people rich. Sometimes we think we need extraordinary ideas to make a break through but wait, you have already stamped yourself with the first problem. You don't need an extraordinary idea to make a break through you just need a simple idea and you yourself make it extraordinary. But all i can say, enthusiasm plays a big role, for with enthusiasm you have won half the battle, for with enthusiasm there is love, and where there is love great things are born from within. Back to my #programming way of art. #Programming to me is art. Yes #programming is made up of code, yes code whatever the programming language it is. But out of code comes art, and out of art a masterpiece itself. The secret of a great #programmer, is this, no degree, no dipl...