https://prog21.dadgum.com/80.html
programming in the
twenty-first century
It's not about technology for its own sake. It's about being able to
implement your ideas.
Advice to Aimless, Excited Programmers
I occasionally see messages like this from aimless, excited
programmers:
Hey everyone! I just learned Erlang/Haskell/Python, and now I'm
looking for a big project to write in it. If you've got ideas,
let me know!
or
I love Linux and open source and want to contribute to the
community by starting a project. What's an important program that
only runs under Windows that you'd love to have a Linux version
of?
The wrong-way-aroundness of these requests always puzzles me. The key
criteria is a programing language or an operating system or a
software license. There's nothing about solving a problem or overall
usefulness or any relevant connection between the application and the
interests of the original poster. Would you trust a music notation
program developed by a non-musician? A Photoshop clone written by
someone who has never used Photoshop professionally? But I don't want
to dwell on the negative side of this.
Here's my advice to people who make these queries:
Stop and think about all of your personal interests and solve a
simple problem related to one of them. For example, I practice guitar
by playing along to a drum machine, but I wish I could have human
elements added to drum loops, like auto-fills and occasional
variations and so on. What would it take to do that? I could start by
writing a simple drum sequencing program--one without a GUI--and see
how it went. I also take a lot of photographs, and I could use a
tagging scheme that isn't tied to a do-everything program like Adobe
Lightroom. That's simple enough that I could create a minimal
solution in an afternoon.
The two keys: (1) keep it simple, (2) make it something you'd
actually use.
Once you've got something working, then build a series of improved
versions. Don't create pressure by making a version suitable for
public distribution, just take a long look at the existing
application, and make it better. Can I build an HTML 5 front end to
my photo tagger?
If you keep this up for a couple of iterations, then you'll wind up
an expert. An expert in a small, tightly-defined, maybe only relevant
to you problem domain, yes, but an expert nonetheless. There's a very
interesting side effect to becoming an expert: you can start
experimenting with improvements and features that would have
previously looked daunting or impossible. And those are the kind of
improvements and features that might all of a sudden make your
program appealing to a larger audience.
permalink September 23, 2010
previously
* Erlang vs. Unintentionally Purely Functional Python
* Common Sense, Part 1
* Personal Programming
* Stop the Vertical Tab Madness
* One Small Step Toward Reducing Programming Language Complexity
archives
twitter / mail
I'm James Hague, a recovering programmer who has been designing video
games since the 1980s. Programming Without Being Obsessed With
Programming and Organizational Skills Beat Algorithmic Wizardry are
good starting points. For the older stuff, try the 2012 Retrospective
.
Where are the comments?