When I first learned to program computers I could easily immerse myself in what Mihaly Csikszentmihalyi calls a flow state of “concentration or complete absorption with the activity at hand”. The circumstances were right. “To achieve a flow state, a balance must be struck between the challenge of the task and the skill of the performer. If the task is too easy or too difficult, flow cannot occur. Both skill level and challenge level must be matched and high; if skill and challenge are low and matched, then apathy results.”
For years there was an ample supply of technical problems that matched my skill level, and I pushed for more. I could have continued on that path, except my priorities changed. I became less interested in pursuing deeper technical challenges and more interested in how I could help other people in my work. That attitude is somewhat atypical among software engineers, but for me it was a return to first values. I come from a family of people who help other people – doctors, teachers, social workers.
The change in priorities meant I had to change my definition of what constitutes an optimal experience, to one that focused on the interpersonal. Mentoring, teaching, leading, communicating. Optimal experiences doing those things are rarer than technical problems are; but the interpersonal has also been more broadly engaging. I have to bring more of my whole self into my work, rather than focusing solely on the intellectual. That’s been a challenge in its own right, but I’ve been glad for it.