Posts tagged: PROGRAMMING

What makes a good developer?

(Somebody on Quora asked about “traits that the best programmers seem to have”. Here’s what I said.)

Breadth of understanding. They are not dogmatic. They have used (at least in passing) more than one language, framework, operating system – and understand the strong points of each.

Communication skills. They can explain their decisions. They can write code reviews. They can discuss their code.

Understanding that engineering is about tradeoffs. There is never an absolute “best” answer; there are always many choices each with their own sets of pros and cons.

dpaste.com spot check

Once in a while I look at a sampling of recent dpaste activity. Partly I do it so I’m not totally out of touch with what my site contains. Partly I do it because it’s just interesting.

And I do it to confirm that the site is actually used by people who want to share code snippets, not just spambots who fire their cannons into every porthole.

I just sampled 10 random items from the last week. Happily, no spam. Here’s what I saw:

The story of dpaste.com 2.0

Eight years ago, I launched a simple pastebin site written in Django.

In those early Django days I spent a lot of time in the #django IRC channel. I thought we should have a pastebin that knew how to correctly colorize our code, and which was written in our framework to boot. So I wrote one. Eventually its URL ended up in the channel topic, then in the Django source code itself.

Over the years, changes have been minimal. I switched from a Javascript-powered colorizer to Pygments. I added an API. I fixed things that broke. Mostly I just kept it running and usable. (I’ll also note that many excellent new pastebins were created in those years as well.)

Creativity and Constraint

O’Reilly Media recently asked in their “Programming Today” newsletter:

For many old-school software engineers, developing code has always been as much an art as a science. But as the industry focuses more on practices such as Test-Driven Development, and Patterns become the lingua franca of programming, is there any room left for real creativity in coding? Or, has it become an exercise in cookie-cutter production, putting together components in new ways, but without any real room for individual style? Share your thoughts with us…

Branching and merging in real life

At work I still mostly use Subversion for version control. Its main selling points: stable, performs as expected, integrates nicely with Trac, holds all our old stuff (legacy inertia).

Note that “pain-free branching and merging” is not on that list. (And don’t give me the old “branching is cheap in svn!” line. It’s not about the branching, it’s about the merging.) A couple years ago I started also using Mercurial and plan to eventually replace svn with it entirely. The aspect of Mercurial that made my life better recently is its support for branching and merging.