I’ve spent most of my professional life as a software engineer, and software engineering has definitely changed my personality. Much of it has informed my other pursuits in amazingly positive ways, but some of it has the potential to be a trap.
Helpful Geek Traits:
- The ability to divide and conquer seemingly monolithic projects.
- Agile cycle of sensible iterations and constant refactoring.
- Being detail-oriented and schedule-oriented.
- Being self-troubleshooting and able to write my own tools.
- Empathy (yes, empathy) – being able to approach a domain on its own terms rather than trying to impose my own framework in some Procrustian fit.
- Understanding the value of simplicity – “When you figure out what you want to say, you don’t have to put a lot of marks on the page.” This is as true in class design as it is in life drawing.
- Recognizing that the coupled traits of persistence and honesty are far more important than any God-given talent.
Unhelpful Geek Traits:
- Panic mode of constant firefighting. Aggressively looking for things to go wrong. Paranoia.
- Excessive nitpicking over edge cases and other things that are important in programming but irrelevent in real life, like a missing semicolon. It’s like fixating on a speck of dirt in the grout between kitchen tiles.
- Being lord of my own little domain and fearing to venture outside my comfort zone. I never, ever thought this would apply to me, but now that I have finally aquired depth as a developer, it’s surprisingly difficult to tackle new disciplines at which I have zero experience – surprisingly difficult to risk falling flat on my face.
Both helpful and unhelpful:
- Geek stubbornness – chasing after a bug till you squash it, damn it. This is usually a good trait, but it’s sometimes gotten me locked in cubbyholes and fixated on the wrong thing. There are times when it’s important to abandon a side battle in order to focus on the war.
- Unrealistic assessment of difficulty and risk. I don’t think I pursue difficulty for its own sake, or create complexity for the sake of creating complexity, but I do almost always tackle bigger projects bigger than I’m capable of at the time. This is because ANY programming project looks intimidating and impossible until you jump in. So I’ve become immune to fear, in a certain sense, and that’s not always a good thing.