Assignment 1: Software development difficulties

Reflect on your software development experience. Oftentimes it is lots of fun, but at times it can be frustrating.

1. Think of a time when some problem took you a lot of effort. Be specific: choose concrete incidents that you remember, rather than describing a general type of problem. It should not be trivially solvable by an existing technique or tool, nor merely due to your ignorance or inexperience. (But, some tools can help you more rapidly learn facts or overcome inexperience.)

Write 1/2 to 2/3 page discussing the problem. Give it a descriptive title. Write about the same amount of text on each of the following (number paragraphs in your writeup):

  1. Describe the problem in sufficient technical detail for others to understand why it was difficult. The topic sentence (that is, the first sentence) should be an informative summary or description of the problem.
  2. Describe what methodologies and/or tools you used. Be specific about ways in which they were helpful and ways in which they fell short.
  3. Search for a tool or methodology that would solve your problem.
    • If one exists, you have learned something valuable, but don't write up that problem; start over at the beginning and choose a different problem to write up. (Note that sometimes a tool may claim to solve your problem, but it might only help part of it.)
    • If no tool exists that solves your problem, then describe the tool that comes closest to solving your problem, and explain how it falls short.
  4. Propose a tool that would solve your problem. It might be similar to, or completely different from, the one that you described above. Describe how it would work (this should not be magical, but should be implementable). Think about the challenges of building and deploying such a tool. Why do you think no one has built it already?

2. Do the same thing, but with a different problem and solutions. Choose two problems that are different from one another; for example, they shouldn't both be about any one activity/topic, such as requirements, coding, testing, debugging, performance, documentation, etc.

3. At the end of the document:

Submit a two-page PDF file. Use a font size of 10 or 11 points, and standard margins (1 inch).

This assignment will reward careful thought about interesting problems and issues. Please introspect deeply and thoughtfully. Doing so will help you in this class, and beyond.

Tips

The most common reason for low grades on this assignment is lack of specificity. Don't let this happen to you!

Another common problem is unsupported claims. Support every claim that you make. For example, don't just say "Current techniques are not mature enough to do it," without explaining why.