Written during my senior year, while considering my career path after graduation.


I often find myself applying what I’ve learned in CS courses to my life. We all move toward certain goals or values we wish to reach in life. My ultimate goal, my objective function, has not yet been clearly defined, and it will probably continue to change. So how can I best structure my career to reach that ultimate goal from where I currently stand?

Depending on what I value most, I can define the objective function I want to optimize in life and the loss function I want to minimize. From there, I can determine what my next step should be. For example, if I set money as my ultimate goal, then I would explore a career path that maximizes financial gain. I would analyze the prerequisites for success in that career and compare them with my current situation, measuring the “error” between my goals and reality, and taking steps to reduce that gap. If stability is what I value most, then I would look for ways to sustain a stable career over the long term. But even “stability” can mean many different things, so it’s important to define it sharply and concretely. This involves determining which parameters best describe my current situation and understanding how they interact with one another. In the end, the key to building a meaningful career is deciding which values I choose to weight more heavily. That’s why I believe the first step is to understand who I am and what I truly care about.

Finding the optimal path toward a goal can be seen as a graph search problem. In such a graph, we can define a search problem that finds a path from one node to another, like BFS or DFS. Similarly, a career path can also be viewed as a search problem. One can become a specialist, delving deeply into a single direction, or a generalist, exploring a broader range of experiences. Should I focus first on depth or breadth? At this stage of my life, is it better to go deep or to go wide?

This dilemma can also be interpreted through the lens of reinforcement learning, specifically, the balance between exploration and exploitation. Choosing the next action based on what I already know is exploitation, while seeking new information is exploration. In everyday terms, choosing a favorite restaurant I already know is good would be exploitation, while trying an unknown one to discover something new would be exploration. There’s always a trade-off between the two, and it’s important to make that choice wisely depending on the situation.

Now, as I approach graduation, the weight of these choices feels heavier than ever. I constantly ask myself what the best decision might be right now. Should I dig deeper into my current area of interest, or explore a few different paths? Should my decisions be shaped by my past experiences, my surroundings, and the culture I belong to, or should I break away from that inertia and venture into an unfamiliar world? Every choice involves trade-offs. There are countless examples of people who’ve gone before me, but their circumstances differ from mine, and in the end, it all depends on me.

When it comes to choices, I don’t believe it’s possible to know in the moment whether a decision is “right.” There are no absolute answers in life. It’s up to me to make each decision the right one in hindsight. If I can narrow down my options and choose among the top candidates, I’d say that’s already a pretty good decision. I often compare this process to Beam Search or Top-K Sampling in AI. So it’s wise to gather information in advance and prune the branches early. To prepare, rather than panic, when a decision point arrives. Of course, unexpected paths can also lead me to new experiences and values I couldn’t have imagined. This way of thinking feels similar to approximating an intractable problem: life itself being a problem too complex to solve exactly.

Even with all this reflection, life often flows in ways I don’t expect. Computer Science offers clarity and proof. But life does not, and that’s what makes it difficult.