Programming into a language, not in it.
I came across this concept in Code Complete 2 and it resonates deeply with me. A language is just a mean towards a goal (e.g. communication). Regardless it is a human language to connect human, or programming language to instruct computers. Without knowing what the end purpose is, we can hardly assign any meaning to the process.
In the meantime, same as any other tools in life, it comes with constraints and limitations. If we simply programming “in” the language, we are guaranteed to be bound by the limitations of the language and stuck at the implementation details. In order not to lose sight, we should always stay close to the problem we’re aiming to solve. After all, if the problem isn’t worth solving, why are we bother spending time on it at all.
The same idea applies to job as well. Lots of jobs are filled with mundane tasks and not designed for intellectual growth. When I first enter the workplace, I have no idea about what a job is. I told myself that as long as I am willing to grow, the rest will follow. However, that is simply not true. Later I realized that I set the expectation too high on a job. There might be some job full of excitement and challenges, but that’s not for ordinary people. Dream job, if there is any, doesn’t come easy.
If we can’t control what we are asked to do in a job, what else can we do? Complaining about the system is broken? Fuck no, this is the least useful thing to do in life. Finding another job? It still feels like gambling though. Until recently, inspired by above quote, another option pops into my mind. It is simply taking a step back and thinking very hard about our goals first, then fitting the goal into the job. They don’t need to align perfectly, in fact, most of time they don’t. But the priority is clear. I got to admit that this is easy to say than done due to all the ambiguities to deal with when setting goals, but it’s a necessary step to redefine what a job actually means in our life.