Tuesday, April 29, 2014

Software Development vs. Problem Solving

You have to think in terms of both 'tangible' and 'intangible' for either software development or problem-solving.

The ultimate goal of software development is business problem-solving, there is much more needs to be done to frame the business issue and then provide methods which can be used for problem solving.

Before determining if you need a solution, you should decide if there is a problem. In software, the focus should be on understanding and satisfying your users, which is a problem in the psychological sense, but not in the mathematical one, and cannot be addressed with rules/heuristics. The problems that do come up during programming can leverage a set of known solutions (design patterns), but more often than not, the solutions involve real creativity. Anyone who is a problem solver should understand that problem-solving capabilities are needed in software development; anyone who isn't will not be good at software development.

Users generally do not think the same way as programmers. Most software developers may not be aware of the need to consider the problems related to people, challenges of learning complex technology and complex systems. And in many cases, the customers or users do not think the same way as programmers. And the programmer is evading responsibility for solving the underlying problem, not just the technical one. The underlying problem is whether or not the user *understands* the implication of the decision to proceed, not their willingness to commit to the action, and provide protection in case they don't understand the implication. 

Intangible variables are important to problem solving, and software development as well: 'functionality' ( functional requirement) is the only one angle to look at the software, you have to think in terms of both 'tangible' and 'intangible', everything about software is 'intangible' and it starts with 'is there a problem'. Thinking creatively about a problem requires being close to the problem, it requires context and intangible variables. For problems that matter, it cannot be done asynchronously and uniformly. One of the key insights about Agile is that they are the principles and their methods or practices are merely tools to help you work towards some principles and values, or to shape habits. They are not dogma; they are not a substitute for autonomy and thinking on your feet. Therefore, they are emerging as mainstream software management methodology with intent to solve business problems better.

Software development is not a purely technical challenge, it is a problem solving scenario, from framing the business issues to implementing the solutions, it takes more creative and analytic thinking, and a good IT talent needs to be a fantastic problem-solver as well.


Post a Comment