Dirk BergstromI am a professional computer geek and programmer, available for in-person gigs in Silicon Valley, the closer to Mountain View the better. I consider myself a software "craftsman" rather than an "engineer", in that I strive to produce polished, simple, minimalist, effective and carefully built code, rather than concentrating on explicitly technological solutions. I learned my trade on the job, by working with senior programmers and by reading and trying to emulate the code in successful open source projects.
In 2009/2010 I developed a password safe app for Palm's webOS platform. I put out roughly one release per month between September and February, and at its peak I had about 1500 users (I've since switched to an Android phone, so I'm thinking about porting the codebase to PhoneGap/Sencha Touch). Since the project is open source, you can see the quality of my work first hand: I use version control and bug tracking, and I interact well with users.
Computers are my third career; previously I was a corporate librarian, and before that a bench chemist. To get an overview of the whole story, read my resume.
I believe in...
- Short release cycles
Implement, communicate, improve, iterate. When the cycle is short users spend less time living with bugs and without features, while developers maintain familiarity with the code in question.
- Direct communication with the end user.
It's much easier to build software that delights the user if you can talk to them.
- Avoiding expedient solutions
The long-term effects of short-term solutions are debilitating to morale and productivity. "Right, now." versus "Right now!".
- "Reality-based" prioritization & planning
Decisions based on data from metrics & instrumentation.
- Source control, bug tracking, code reviews, coding standards and
"Best practices" don't guarantee the best product, but it's damned hard to build anything worthwhile if you skimp on them.
I would love to learn...
The glorious cross-platform world of the future isn't here yet, so I want to learn a native mobile toolkit. I'm uncomfortable with Apple's walled garden, and much as I like webOS, Android is the only other serious player.
The concept of TDD never worked for me (in large part because I never had a detailed spec to work from), but the different slant of BDD seems like it could be a better fit.
- "Cloud computing"
I've worked with a VMware ESX cluster, and it gave me a lot of ideas I'd like to explore. Plus it never hurts to be buzzword compliant.
- Lisp, Haskell, Clojure, Erlang, etc.
Working within a radically different language paradigm would expand my brain.
I'm not interested in...
The language, standard library and much of the userbase worship at the altar of expediency.
- C / C++
Memory management and bit-bashing are exactly the sort of difficult, fussy and tedious work that computers were designed to save us from.
- Financial, Medical, HR or other legally sensitive data
I find Sarbanes-Oxley, HIPAA and the looming threat of humorless government investigators stifling.
I'll let Cory Doctorow explain why.
- A management position
I've been a manager (a fairly good one, I'm told) but I am more interested in hands-on work now. This will likely change later in my career.