Software Idealism, Pragmatism and Elegance

GraceKelly

Often when working on projects there are two opposites types of personalities at work: Idealists versus Pragmatists. Often both sides show great animosity for each other. What’s so problematic about battles between idealists and pragmatists is that great solutions to problems are most often combinations of these two approaches. Results come from elegant combinations of pragmatism and idealism. Dogma is the enemy…
Elegance is our best friend. Now before the Dogmatists (Idealists + Pragmatists) claim the elegance of their respective approaches, lets look at the actual definition of elegance: pleasingly ingenious and simple, related to Latin’s eligere, ‘to choose, or select’. Elegance is choosing or selecting a simple and ingenious solution. Nothing more, nothing less. Idealists over-design, in love with excess flexibility.  Pragmatists under-achieve by rushing to action, in love with excess quantity.
Elegance is in finding a fine middle point between these extremes. How to achieve elegance in software design and implementation is not always intuitive or straight forward. One the the best talks on this topic is Jim Weirich’s from Mountain West Ruby Conference 2008. He skillfully combines the approaches of the noble blue collar pragmatists with the space-age white collar idealists. He advocates a path that does not over-design, or over-implement. He points out that a solution must be appropriate to be elegant.
James Joyce said that great writing comes from Wholeness, Harmony and Radiance. I think he meant understanding the problem, creating the right goals, and selecting or choosing the elegant path to meet those goals.  It sounds easy, but simple is much harder than complicated. If one persists, a certain timeless beauty becomes possible. This feeling transcends elegance, and feels like Grace from the constant struggle of the programmers trade.

Often when working on projects there are two opposites types of personalities at work: Idealists versus Pragmatists. Often both sides show great animosity for each other. What’s so problematic about battles between idealists and pragmatists is that great solutions to problems are most often combinations of these two approaches. Results come from elegant combinations of pragmatism and idealism. Dogma is the enemy…

» Read more: Software Idealism, Pragmatism and Elegance

Falling Down and Getting Back Up Again

It used to be that a high-tech engineer would be fired for being redundant, or if they failed. However, now days engineering groups that are perfectly successful are getting laid off the day they finish products. Getting fired for success is pretty new, since most companies viewed the engineers that understood how their products worked to be assets. At the very least, depriving one’s competitors of talent was worth doing everything possible to keep engineering staff around. That thinking appears to be old fashioned.
Companies are experimenting with all kinds of approaches to staffing. Some fire 5% of their staff yearly. Others have launched on diversity programs. It seems to be fashionable to call these social engineering exercises of the workforce stupid, moral failings of management, or conspiracies. Some simply cite globalization, or executive incentives tied to fabulous piles of stock options.  Folks like Jack Ganssle go on and on, as journalists love to do. Fear mongering sells.
I wonder about this. As a human being, I often make mistakes, blunders, and mis-predictions. In fact, I really only seem to learn the hard way, by making mistakes. The only way I seem to be able to avoid making mistakes to to avoid action. I think most people are fairly familiar with the reality of this human condition. But for some reason, when evaluating these new trends in labor policy, many of us fail to realize the humanity of those making the decisions. Things change, and folks are trying to adapt in the only possible way, acting, failing, trying again.
I do not mean to say that there are not executives with self-serving motives and low character. In fact I have seen some fairly astounding lack of character in managers throughout my career. What I am saying is that to ascribe such faults to the natural course of change in an industry is not rational, it’s emotional. Therefore, the failing is in us engineers, it’s not our employers. Rut-roh…
Why would I say such a thing? Well, the truth is that companies are experimenting with staffing because competition demands it, and they have the power to do so. While we engineers are not as powerful as the executives that decide the fate of many, we are far from powerless. The first thing to do is recognize that the employment game’s rules have changed. The next thing to do is play to the new rules. Eventually we will learn to play the game well. Now that the market for engineering talent is heating up again, here are some ideas that have been working for me:
- Consider yourself a free agent. Serve your employer and give them excellent value. However, the argument that bending over backwards will make the company more loyal to you is silly. Appealing to our sense of corporate loyalty need no longer restrain you; there is no loyalty. Reject all such coercions from managers trying to get even more from you. If someone says you’re less likely to be fired if you work weekends, you’re going to be fired eventually, maybe soon. Best to spend your weekends looking for new work.
- Join local trade and networking groups. By going to the excellent Kickstand networking group here in Boise, I have learned of  new local companies developing LED street lighting, blood tests on silicon chips, wireless power metering, Internet appliances, and media/advertising software. And this is Boise! Get out there and find out what’s going on. Meet the people who might need you, now or in the future.
- Go to demos and specialized group meetings. When I lived in Silicon Valley I saw a demo from Steve Wozniac at Xerox PARC. I grew as an engineer from that demo. I also learned a ton about Internet publishing through my local Drupal group (which just happens to have some real Drupal powerhouses that attend). There are lots of doors that lead to new ideas, products, tools and (dare I say it) adventures. Make sure you’re taking in new stuff all the time, finding new interests and pursuing them.
- Learn from all the people around you. Especially focus on people who do things differently. It is tempting to hang around with those that agree with us. However, the real magic in learning happens when we confront the unfamiliar and threatening new ideas we will not hear about unless we ask. Connect with people and ideas you wouldn’t normally entertain. It just might lead you to the place you’d rather be.
- Take friends in other industries and vocations out to coffee. Ask them what they like and don’t like about what they do. Consider what it is about what they do that you might like. Remember don’t make hunting for work ideas into a status thing. It doesn’t matter if a friend is a CEO or an hourly worker. Don’t always look up the food chain. Meet with folks independent of status or position and consider everything they say. You might just decide you’re more senior than you’d like, as opposed to a frustrated superstar.
These are just a few ideas that have been working for me. There are many more angles on the new economy for us nerds. It could be as simple as writing an app for the iPhone, or as complicated as changing careers to the fine wood boatbuilding you’ve always admired. Anything is possible when you never know what the next day holds. Believe me, falling down and getting back up again is normal and necessary. Only the emotionally stupid fall down and end it there.
- Free Agent Nation, a book about freelancing
- A Whole New Mind, a book about developing ourselves
- Falling Down, a film about an engineer gone wrong
- Happiness book reference

Falling_down

It used to be that a high-tech engineer would be fired for being redundant, or if they failed. However, now days engineering groups that are perfectly successful are getting laid off the day they finish products. Getting fired for success is pretty new, since most companies viewed the engineers that understood how their products worked to be assets. At the very least, depriving one’s competitors of talent was worth doing everything possible to keep engineering staff around. That thinking appears to be old fashioned.

» Read more: Falling Down and Getting Back Up Again

Cribbage Multiplayer iPhone App Review

la_class_submarine

My sister’s in-laws like to visit her home during Thanksgiving.  I don’t blame them, she’s a fabulous cook and host (ess). These occasions stuck in my mind. When my brother-in-law’s family broke out a cribbage board and played into the night, it looked like a ton of fun. But I never learned to play.
Recently I discovered that cribbage is a favorite of the US Navy’s submarine service. This little bit of trivia (thank you Wikipedia) made me think of learning cribbage again. So I downloaded an iPhone app (my preferred solution to almost any problem) and set to work.
My choice was Cribbage Multiplayer.  I absolutely love this app.  It had directions for me to get started and was very intuitive to play.  At the bottom of the screen it prompted me for the next move, so I really don’t have to remember every rule to play easily.  The app allows me to play against the computer, or to use it to play with another.
I think the iPhone app my be good for submariners, if they are allowed such luxuries.  I had a chance to visit the Guardfish once (an amazing evening courtesy of the XO of the Guardfish in 1983).  I can understand how much a cribbage board could brighten a very long cruise.  My thought is that the Navy should issue iPod Touches to the crew of all submarines and include Cribbage Multiplayer.  If I had the means, I would make it so.

My sister’s in-laws like to visit her home during Thanksgiving.  I don’t blame them, she’s a fabulous cook and host (ess). These occasions stuck in my mind. When my brother-in-law’s family broke out a cribbage board and played into the night, it looked like a ton of fun. But I never learned to play. » Read more: Cribbage Multiplayer iPhone App Review

What is Relaxed Control?

Mary_Poppins

Last night at Kickstand, one of the panelists (Steve Nipper, I think) mentioned David Allen’s GTD.  Sometimes I struggle with the description of why GTD is important, and I thought the panelist struggled much the same way I do (my impression, disclaimers apply).  Upon reflection, I think the concept that doesn’t get mentioned in a recommendation of GTD is Relaxed Control.
I think the thing that made Relaxed Control hard for me to find was that I thought I already knew what it was.  In other words, I read the book, I read about Relaxed Control, I decided that Relaxed Control is what I wanted, and off I went to do do do.
But as I have struggled over the years to implement GTD, and achieve RC, I’ve been forced to look at the concept more carefully.  What does it mean?  When working on the How of GTD, we need to have the clearest possible conception of the What, the Relaxed Control we seek, as our guide.
One of the best ways to explain Relaxed Control (abbreviated RC, and pronounced ‘Rock’), is to define what it isn’t.  After all, one can be very busy, and yet relaxed, focused and in the flow of things.  We can also be very busy and Out Of Control (OOC, pronounced ‘Awk!’).  My definition of Relaxed Control is not-OOC (pronounced ‘Nawk’).
Being a nerd myself, a problem I’ve had implementing GTD is holding onto it too tightly.  The tighter I squeeze, the more painful details slip out of my hands, and paradoxically the closer to OOC I go (think, Admiral Boom).  A Chinese general once remarked that “perfection is the enemy of good enough”, which seems apropos to my situation.
So now I focus on Good Enough in my GTD (GEGTD, unpronounceable at this point, acronyms apparently not my strong suit).  These days Mary Poppins is as much an inspiration as David Allen.  That said, spit spot, off I go…

Last night at Kickstand, one of the panelists (Steve Nipper, I think) mentioned David Allen’s GTD. Sometimes I struggle with the description of why GTD is important, and I thought the panelist struggled much the same way I do (my impression, disclaimers apply). Upon reflection, I think the concept that doesn’t get mentioned in a recommendation of GTD is Relaxed Control.

» Read more: What is Relaxed Control?

Phil Bolger: An Open Mind

ply_yawl_sail_plan

I have not been writing, nor reading for that matter, over the last several months. So I was excited to have Santa bring me a copy of Phil Bolgers’s Boats with an Open Mind.  Spending the last few days leafing through the work of Phil Bolger reminds me that design is not a job for wimps, or for folks afraid to have strong opinions.

» Read more: Phil Bolger: An Open Mind