I enjoyed reading “beginners and experts” blog post by Ned Batchelder:
Go ahead and take a few minutes to read through that post.
After reading this post I found this paragraph to be a key statement:
The difference between beginners and experts is that experts are familiar with that frustration. They encounter it all the time, as they deal with new unfamiliar technologies, or a thorny bug, or just when they are too tired to tackle the problem before them. They know the frustration is because they are facing a challenging problem. They know it isn’t a reflection of their self-worth or abilities. Experts know the feeling will pass, and they have techniques for dealing with the frustration.
The understanding from this excerpt is that experts are those who have much more experience and are thus used to the ups and downs of the job. But I want to look at this claim from a different light. Instead of beginners and experts I like to think the distinction should be around goal oriented vs process oriented.
I feel that beginners can tend to be more goal oriented while the experts lean towards being process oriented. My definition of goal oriented vs process oriented are,
- Goal oriented : are folks who strive and fight and move for the sake of attaining a goal. 
- Process Oriented: are folks who strive and fight and move because they’re looking to improve. 
“Both of these people will achieve their goals, but unlike process oriented people, goal oriented people run the risk of getting to a goal and then sitting there, happily resting on their laurels.” 
I recently read the book “The Practicing Mind” which talks a great deal about becoming process oriented over goal oriented. I’m starting to look at things a lot from the perspective of goal vs process oriented.
From Ned’s post:
When beginners get frustrated, they can start to worry that they are not cut out for software, or they are dumb, or that everyone else gets it and they don’t.
This sounds like the descriptions of people in a goal oriented state of mind. Any challenges or hurdles can disorient you. Being uber goal oriented can cause anxiety surrounding the task you’re working on. The goal oriented engineer might be thinking how can “I just close this ticket”, “merge this PR”, “find this bug”, etc. All of these are important indicators of progress, but when the action of closing a JIRA ticket is disconnected from the original intention of tracking the status of a ticket / effectiveness of team practices then I think goal orientedness will be more problematic than helpful.
The process oriented individual attains goals because their process will take them in that direction. Without a goal there is no process. Expert engineers are engineers that have developed good processes. When they encounter a bug they stop and think about the problem at hand. They don’t just change something from “i < limit” to “i <= limit” and pray it works. Instead they carefully examine the gaps in their understanding and the results being output by their code. They have a mental toolbox and flow for the application space they’re in. And if they happen to be in a new field they work with deliberate slowness so as to develop better process and intuition.
The book “The Practicing Mind” gives a good breakdown of the two modes of thinking and how to shift yourself to a process oriented direction. A few takeaways I’d highlight to being more process oriented from this book are,
- Being present minded in what you are doing
- Understanding that goals are rudders to the destination, not the end destination
- Patience - “quiet persistence”
- Being diligent in your craft, sometimes practicing with deliberate slowness
- Accepting that there is no such thing as perfection
It’s important to have the right balance of goal orientedness vs process orientedness for the right contexts. You’ll have to choose the right mode for your own scenarios. But when it comes it comes to having a long, successful career in building good software, being more process oriented will give greater mileage.