From my archives, 2016/07/29:

This week has been hectic, and today was particularly busy. I found that there were tasks, problems, and other people’s schedules that I had to mentally juggle. I knew what I had to accomplish, but the bits and pieces were difficult to optimize in a way that satisfied me. Often I discovered the optimal solution when I was already down another, less optimal path. Clarity arrived too late.

Conventional wisdom states to change your plan as issues arise, since the best path is probably different as a result of these issues. The problem is that when it’s a particularly hectic day, issues are discovered at every turn. I have tried to adjust my plans as soon as something new came in, but I believe that today it resulted in half-assembled, less-than-ideal paths.

At the same time, blind action is clearly not the solution. A day full of busy work with no positive outcomes can hardly be described as productive. At best, you get lucky. At worst, you cost your team and organization valuable resources without any return.

Perhaps the best way to achieve clarity is a two-pronged approach. On one hand, one should practice strategic thinking and modifying memory regularly so that complex plans can be assessed with greater accuracy and fluency. On the other hand, recognize when these strategic and memory skills aren’t strong enough at that particular moment, and work with a combination of regular planning and pure execution.

For instance, instead of modifying plans on the fly whenever new issues arise, simply tally up the issues received in any given hour. During this hour, proceed as originally planned. At the end of each hour, take a good look at the collected issues, and carefully craft an updated plan that takes these new issues into account. Once that is done, proceed to the next hour.

This is the only one new strategy; I’m sure that there are some other techniques that can be tried out. For instance, multiple good paths with different goals can be identified at the start of the day, and work can be performed for all of these without concerning oneself with inevitable blocking problems.

The ultimate goal is to have the ability to hold massively complex mental models for executable action plans while being able to deliberately and confidently modify this plan in a robust way whenever new issues arise. Gaining the ability to do this takes discipline and experience, but I am willing to put in the work to acquire it.

Of course, it could simply be that I’m not being patient with myself and that I failed to take time to regularly reflect. I definitely felt like I was doing nothing but taking action. Perhaps my doctor’s breathing exercises can help here.

Okay, time for some action steps. I will investigate techniques for improving strategic and decisive thinking. I will also figure out how other successful people manage to lead complex organizations and consistently make enormous decisions correctly. And finally, it may be time to make regular meditation happen again.

Small Talk

There’s a certain default template that typical (American) small talk follows: name, place of origin, college/university, occupation, drilling deeper. Even when I read Reddit or watch The Art of Manliness videos, the conversation topics are pretty standard. There’s a certain sense of comfort that comes with this template — both parties are familiar with these topics, and both can rattle off the answers “like a real human being” without too much mental strain. That may be why the template is so attractive and irresistible.

Here’s a fun strategy for turning this interaction on its head. Instead of launching into this template after asking for each others’ names, one might suggest to the other that no one should mention the typical items in the template — no talk of work, school, or origin. These topics are completely off-limits until later in the conversation. At this point, let the other party know that real creativity is needed to get this moving, and that the goal is to truly know each other better, rather than hear a set of standard forgettable facts. Suggest that they bring up things about themselves that are truly memorable, such as unique triumphs, substantial failures, and incredible comebacks. Ask them about what is surprising about them, and this could be a skill, an experience, or a little known fact. See if they can teach something about an unfamiliar topic. When a shared experience or interest comes up (again, unrelated to one of the template topics), revel in this discovery and help each other open up and share more.

This naturally brings up this possible problem: what if the other party does not wish to go along with it? The simplest way to rectify this issue is to leave gracefully. If they somehow still wish to continue this conversation, it’s a little harder (since you effectively took the default topics off the table) — but still doable. The venue and event is a great starting place, since that is a shared experience. Discuss similar events and your intentions to attend others like it. When a natural exit from the conversation is found, graciously thank the conversation partner and move on.

While it is important to have a goal for each conversation, it is equally important to remember that conversations must always have reciprocal value exchange. Hounding someone because you need a deal, a job, or some other urgent need is a poor way to execute a conversation. If something of value can be provided in return, then the other party will be more receptive to requests during a conversation. Your value could simply be the novel way that you approach and have conversations with strangers, which can be refreshing and entertaining. The best conversationalists add to a discussion only when the other party is receptive, and are patient and curious whenever the other party needs to have their say. I believe that striking the right balance and providing value is the way to attain goals in social situations.

On Programming

From my archives, 2016/03/05:

Today’s introspection will focus on my approach to programming. I should note that I’ve only been working at a software job for about half a year, so a lot of this will undoubtedly change. In fact, at my level of experience, change is necessary.

I have unfortunately had to write code very hastily in response to tight time constraints. This has resulted in code that is challenging to maintain and difficult to adapt to particular needs.

I will try my best to do the following from this point forward:

Firstly, I will conceptualize and outline my coding projects, starting from desired input and desired output and filling in required blocks. Each block will then be analyzed to see if those need to be broken down into still more blocks. This has been challenging before; since I didn’t have a lot of practice with scripting before (particularly in Python), I had a very tenuous grasp of what’s possible, what’s expected due to established conventions, and what kinds of code architecture is the easiest to follow. Now that I have some degree of practice under my belt, I believe that I’m at a stage where I can reasonably create decent programming outlines.

Secondly, I will properly modularize my code. Each plotting event will have its own method or function, each repeated instance will have its own class, and I will have no more than 2 nested loops in any one code module. Modularity means that new functionality can be easily added or modified, and individual modules can even be called all by themselves if needed.

And finally, I will keep in mind the user experience. I should try to make the tools I develop to be easy to use. If possible, the user should not have to open up the script’s text file and make modifications to be able to reasonably use the script. Furthermore, the documentation and help files should make the purpose and usage of the script perfectly clear.