Just coming to my little corner of the Internet automatically pushes you up the path to Nerdvana. In a world of turmoil and angst I want this to be an area of calm contemplation.
I've come to the conclusion that there are steps to Programming/Design Enlightenment. As you go through them life becomes significantly less aggravating. The key is empathy. Empathy with other programmers and empathy with the end users.
If you can be enlightened it's fair to assume you can also have an endarkened attitude. I've met a few who have inhabited this stage and I'm at a loss at how to get them out of it.
These can be technically competent and experienced people, who have spent years in the industry. They have a general dislike of other programmers and users. They hide code and leave a trail of poorly engineered projects behind them. Often they leave a job just before the end, leaving the customer to pick up the pieces. This isn't random, they leave before they are found out. I won't waste too much effort on this group.
Everything is shiny an new, you're wearing a suit made of Arduinos and you program for fun!
Hold onto that exuberance and add focus to get to the next stage.
You've a got a few successful projects under your belt and you are king of the world!! If everyone works like you they'll be just as successful. The following statements will be heard here.
"Methodology xxx is the best way to program"
"Way of running a project xxx (Agile) is the only way to successfully run a project"
"such and such a tool/function is evil/terrible and people who use it are awful too"
When Jon came up with LCOD, and we started using and honing it in practice, I couldn't understand why everybody didn't use it. I thought we had given the secret of pain free programming to the world, it was kind of rude of everyone not to take the gift. It was a time of disenchantment and frustration.
For me, age showed me the exit sign from this stage.
2 People Oriented
The realisation that everyone is different and it's brilliant is one of the best parts of this stage.
The person who busts your code all the time is not a pain in the bum, but a fantastic testing resource.
Customer feedback becomes a huge asset and not a personal insult about your design.
Techniques, processes and methodologies can be employed strategically, offering most benefit for the buck.
I think this quote from Fab sums it up nicely
"I tell them, those are two very different ways of doing it try to understand our reasoning and pick the one that resonates the most with you and your team. Stick with it…. until it no longer serves you
The key is understanding why we are suggesting one way or the other"
And perhaps one of the keys to enlightenment is understanding