background preloader

What makes a great developer

Facebook Twitter

Human Factors and Web Engineering’s Intersection. Given my recent (and apparently insatiable appetite) for studying the contexts, interface(s), and success and failure modes between man and machine, it’s not a surprise that I’ve been flying head-on into the field of Human Factors.

Human Factors and Web Engineering’s Intersection

Sub-disciplines include Cognitive Engineering and Human-Computer Interaction (HCI). It would appear to me that there isn’t one facet of the field of web engineering that can’t be informed by the results of human factors research and ought to be part of anyone’s education in Operations at the very least. How we make decisions, how we operate under multiple goal conflicts (think time pressure and outage escalation), concerns for designing controls and displays, even organizational resilience has foundations in Human Factors, and I think has just as much to do with our field as Computer Science and Distributed Systems.

Preface, Human Factors for EngineersI am not a human factors expert. Www.amazon.com/Unwritten-Laws-Engineering-Revised-Updated/dp/0791801624. How to be a Programmer: A Short, Comprehensive, and Personal Summary. Debugging is the cornerstone of being a programmer.

How to be a Programmer: A Short, Comprehensive, and Personal Summary

The first meaning of the verb to debug is to remove errors, but the meaning that really matters is to see into the execution of a program by examining it. A programmer that cannot debug effectively is blind. Idealists that think design, or analysis, or complexity theory, or whatnot, are more fundamental are not working programmers. The working programmer does not live in an ideal world. Even if you are perfect, your are surrounded by and must interact with code written by major software companies, organizations like GNU, and your colleagues.

Debugging is about the running of programs, not programs themselves. To get visibility into the execution of a program you must be able to execute the code and observe something about it. The common ways of looking into the ‘innards’ of an executing program can be categorized as: Some beginners fear debugging when it requires modifying code. How to Debug by Splitting the Problem Space. (1) Jason Rubenstein's answer to What should you learn during your first job as a software engineer at a startup. (1) Jason Rubenstein's answer to What qualities make a good startup engineer. If you call out bad code, make sure it's bad first - Naildrivin' ❺ So, someone shared some code on Github and some classic developer snark rolled in.

If you call out bad code, make sure it's bad first - Naildrivin' ❺

And then there were some apologies about it. I saw those snarky tweets when they came through, clicked to the Github project, didn’t understand what the issue was, and went back to work. Now, I’m all for bad projects and bad code being called out. Our industry produces some shitty code, and a general lack of craftsmanship can kill business, or even people. So bad code needs to be pointed out. No, it’s not. I think we can evaluate a project based on three criteria: should it exist at all? Should it exist at all? Replace is a command line app, which is something near to my heart. The Golden Rule of Programming. There is one particular issue that seems to be the root of most bugs in software programs.

The Golden Rule of Programming

I see it over and over and over. Like most programmers, it has caused me heartburn since the day I started programming. So I have worked hard to make sure that my code never breaks my golden rule. What did the *really* successful programmers do differently. This is a follow-up to the lengthy "Do you want to be doing this at 50" discussion that we've been having here on HN for the past week.

What did the *really* successful programmers do differently

For those of you who might have missed it: As someone who is definitely on the path to be developing software for the rest of his life, I'm somewhat concerned. There are many anecdotes of programmers in their 50s having a pretty bad time, and yet there are real examples out there of programmers who have done phenomenally well: they've made a difference, they're well known and respected AND they've been financially successful as well. I'm thinking of (contemporary) programmers of the caliber of John Carmack, Rich Hickey, Peter Norvig, Jeff Dean.. What Makes a Great Developer? What makes a truly great developer?

What Makes a Great Developer?

Some might say a positive attitude. Some might say a high-sugar, high-caffeine, high-bacon diet. Hallmarks of a Great Developer - Test Guide. If you ask me, I'll tell you a great developer Plans before coding A great developer takes the time to plan an approach before designing or coding.

Hallmarks of a Great Developer - Test Guide

A great developer knows that the time required to do so will be more than paid back by the time saved by getting it more right the first time. Bad developer ≠ novice developer. My post on the nature of programming seems to have struck a nerve.

Bad developer ≠ novice developer

Many commenters pondered what makes a developer great. “Ka” thought that: “You [are] not born [a] good or great programmer, you become one with time and study and hard work. At the beginning, everybody is a bad programmer.”