How to Beat Programmer’s Block

My own experiences programming are as a self-employed, generally self-motivated coder, designing software I want to design. If you are an employee writing code implementing someone else’s specifications, this may not be helpful.

For me, programming is usually a creative process. Unless I am fixing small bugs or making minor tweaks, writing software is no different from writing a story, a song, a poem, or drawing a picture. It is an abstract process by which I turn general ideas into something that doesn’t quite approach a true language. There is a purely creative process: coming up with ideas to implement. And there is a less creative, but often just as abstract a process: turning those ideas into little processes that a compiler can understand.

Since writing code is so much like writing anything else, a programmer is prone to “programmer’s block” just as an author of a novel can be afflicted with writer’s block.

Beating programmer’s block while simultaneously staying productive is something easily done as long as you keep these things in mind:

  • When you’re stuck, do something else.
  • It’s easy to do something else if you have more than one project.

It’s really that simple, at least for me. At any given time I have at least a half-dozen “things” I can do that constitute productive behavior.  If I experience programmer’s block when developing one application, I have several others I can go work on for a while. Or, I can write a blog entry or even read a business-related book.

The key is to have more than one thing to do at any given time, so that when project A gets stuck, you can go work on project B for a while.  It’s not hard. And for me, the goal is to take a break without becomming idle.  Sure, vacations and long-term breaks have their place, but with all those people on welfare counting on my taxes, I just can’t relax when I am truly doing nothing so I always have something else I can do when I hit a wall.

ExactFile (Formerly FileCheckMD5) Updated

ExactFile 1.0.0.15 was posted last week. This is, I hope, a “feature complete” beta. The “Create TestFiles Applet” function is finished, making the old FileCheckMD5 program completely obsolete.

The ExactFile web site has been updated with lots of details about the software, including a list of checksum methods currently implemented.

ExactFile is a file integrity verification system I have developed, which works much like md5sum / sha1sum / sfv / fsum / etc., replacing my old program FileCheckMD5. It’s no longer just a MD5 checker. It supports a variety of checksum (hash) algorithms, including MD5, SHA1, CRC32, and others; is multi-threaded; and Unicode complaint. It also includes a simple method for “stamping” your CD-ROM and DVD-ROM deployment folders so that they can be tested (validated) by an end-user just by double-clicking a file on the CD.

How to make sure your web page doesn’t work

1. Hype up your new operating system.

2. Announce that you will have a public beta within a month.

3. When you release the public beta, make sure you tell everyone it will only be available to a limited number of people for one day.

4. Success!

The Windows 7 beta is supposed to be available today. I’ve been trying for a while, but their system is so hammered I can’t get to the page where I’m supposed to get my product key and download link.

Making video demonstrations of software

Just a quick post to tell you about a program I found quite well designed and useful. I always appreciate it when people mention my own software, so I figured I’d do the same.

I decided it was time to create some videos for SwordSearcher Bible Software. I bought a license for Instant Demo, and I’m glad I did.  After a few days of work, I’ve got three videos done.  They aren’t Hollywood productions, but they look and sound good, and give people who don’t like reading manuals or web sites an alternative to learning about my software.  The learning curve for Instant Demo is not very steep, and there are excellent tools for all of the things good software videos need, like highlighting hotspots, tweaking and refining mouse movements and clicks, adjusting delays, and adding audio narration.