There is a trend with my posts about software design where I write a lot about how it is a creative process. This is largely because for years, software design was considered to be busy work, and I take extreme issue with that philosophy. I find producing consistently effective software designs to be a very difficult task, and I deeply respect those who are good at it. I also find that those who are good at it have in common that they are all inspired workers.
For me, inspiration is absolutely critical to effectively designing elegant software, and for that reason, I place a high level of importance on my ability to consistently find inspiration. Of course, this can, at times, be nearly impossible. Maybe I’m having a bad day, or I’m distracted because of other things happening in my life that are taking psychological priority. Who knows — maybe I’m just burned out. The net effect is the same: in these mindsets, I am an ineffective engineer. That does not mean that I can’t complete user stories or fix bugs in this mindset. I still retain the intellectual ability to come up with a solution, but it probably won’t be on you want to maintain. This is an important distinction that I think could use a lot more recognition in our industry: an uninspired engineer is an ineffective engineer. If this is true, then an engineer who is regularly uninspired has a big problem on their hands.
If you’re like me, you should constantly be evaluating whether you’re in an adequately inspired state of mind to be able to design elegant solutions to your problems. If you’re finding it difficult to articulate your solution, get up from your computer. Read a book, or look into the distance and take a breather. Get something to drink and listen to some music. Do your best to take your mind completely off of software in general. This is an extremely important trait of consistently effective engineers: knowing how to maximize the amount of time that they’re inspired, and knowing how to walk the fuck away when they’re not.