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.
As readers of this blog probably know, in 2005 I embarked on an ill-fated voyage to create a native Mac version of my Bible software. I was unable to complete my quest and disappointed several of my users who had already switched to Mac and were hoping I would be able to give them SwordSearcher on their own platform.
Well, nothing has changed with regard to development — I won’t be resuming work on the Mac version of SwordSearcher in the foreseeable future as all of the reasons I suspended work on that project still stand — but I received an email from a long-time SwordSearcher user who wanted to share his success at using SwordSearcher on his Mac with Crossover. Here’s an excerpt:
“And I’m pleased to announce it WORKS! And it actually integrates so well, I wouldn’t even know I was using a mixed setup of Windows and Apple, they BOTH seem native mode in operation, and I use them at the same time.”
Complete details have been posted on the SwordSearcher Mac website.
Additional thought: do software compatibility layers like Crossover for Mac and WINE for Linux make native development irrelevant?
Well, certainly not irrelevant in every case. But in my case, it certainly reduces the need to expend development energy targeting multiple platforms when Linux and Mac already have excellent “emulation” alternatives. (And yes, I know WINE is not an emulator!) A single developer like myself, on a project as complex as SwordSearcher, is better off focusing on doing the best on Windows — where almost all the customers are — rather than trying to spend time writing multiple versions of the software, or worse, using cross-platform development tools that invariably result in a “lowest common denominator” feel for the application. And with WINE and Crossover Mac, a viable solution already exists that allows me to continue to focus my efforts on one platform.
Most micro-ISVs use a serial number/registration code system to allow end users to unlock or activate their purchase. The problem most of us have run into is that a few days or weeks after our software is released, someone has developed a keygen, a crack, or has leaked a serial number across the internet.
There are several possible solutions to this problem. You could license a system like Armadillo/Software Passport or ASProtect, or you could distribute a separate full version as a download for your paying customers. Each option has advantages and disadvantages. What I am going to show you is a way to keep “rolling your own” license key system while making working cracks harder for crackers to produce, and working keygens a thing of the past.
Continue reading Implementing a Partial Serial Number Verification System in Delphi