Competitive/Collaborative Programming Class

ICPC Computer Programming Contest Prep

Problem Solving in Computer Science

Spring 2022 -- CSC 2700 Section 01 (1216 Patrick Taylor, 6:30 PM - 8:20 PM)



Frustration

Some projects/products end because time or resources come to an end. Many others continue until we give up. I posit that we give up because the perceived value of another improvement iteration is less than the presumed cost.

Each time we try to improve a product/project/document, we encounter difficulty. This difficulty translates into frustration. When the possible improvement is less than the expected pain (increase in frustration), we tend to stop.

Every incremental effort at enhancing something is bound to increase frustration (no pain, no gain). At the end of each iteration, change can be seen (hopefully). If the change is positive, it will offset (relieve) some of the accumulated frustration.

A goal comes with an amount of frustration that is acceptable. As work continues, frustration builds. As progress is observed, frustration is released. The cycle ends when the expectation of more progress is overwhelmed by the accumulated frustration (its closeness to the threshold for the project).

This is just the way it is. I do not know of any way to avert this cycle. The goal comes with its own criteria that sets its frustration limit. The only thing I know how to alter is the actual accumulation of frustration. Frustration comes from the effort to improve the document/project and from the tools used to try and make those improvements.

The tools are critical. Every time you use a tool, it adds to the accumulated frustration because it is not perfect. The better the tool for the purpose and the easier it is to use, the less frustration is added to the accumulation.

Tools require practice to become easy and natural to use. Most tools can be used for a number of different purposes. The tool is better suited for some tasks then others. Using the best tool at each step can reduce the frustration that is accumulated. Of course, obtaining and mastering many tools takes time and effort. Your goal of being better has to be important enough to you to set a very high frustration limit for you to master a lot of different tools.

Practice with a tool can make it easier use and can allow you to learn additional uses for the tool.

Eventually you will discover a need that is not easily solved with any of tools you have access to. Sometimes it is possible and/or practical to acquire and use another tools. Other times it is not.

Some people have an another option. Instead of merely using tools, some people are able to create new tools and/or modify existing tools for new uses. I believe that these people are very valuable. The ability to modify or create tools can be extremely useful. The real value in this is that the modification/creation of tools can allow a product to be improved with a reduced amount of frustration.

Mastering existing tools and learning new tools is a requirement of this field. Being able to augment your abilities with modified or custom created tools will set you apart from your colleagues. Being able to make tools is another step above using tools