top of page

Information Technology Problem Solving – The 6 Principles of Scientific Problem Solving

This paper will clarify a scientific strategy to downside fixing. Although it’s written to handle Information Technology associated issues, the ideas may also be relevant in different disciplines. The strategies, ideas, and methods described right here is nothing new, however it’s surprising what number of “problem solvers” fail to make use of them. In between I’ll embrace some real-life examples.

Why do downside solvers guess in stead of following a scientific strategy to downside fixing? Maybe as a result of it feels faster? Maybe an absence of expertise in environment friendly downside fixing? Or possibly as a result of it seems like arduous work to do it scientifically? Maybe whilst you carry on guessing and probably not fixing, you generate extra earnings and add some job safety? Or possibly since you violate the primary precept of downside fixing: perceive the issue.

Principle #1. Understand the *actual* downside.

Isn’t it apparent that earlier than you possibly can remedy, it’s worthwhile to perceive the issue? Maybe. But, more often than not the solver will begin fixing with out realizing the true downside. What the shopper or person describe as “The Problem” is often solely the symptom! “My computer does not want to switch on” is the symptom. The actual downside might be that the entire constructing is with out energy. “Every time I try to add a new product, I get an error message” is the symptom. Here the true downside might be “Only the last 2 products I tried to add gave a ‘Product already exists’ error”. Another basic instance: “Nothing is working”…

You begin your investigation by defining the “real problem”. This will entail asking questions (and generally confirm them), and performing some primary testing. Ask the person questions like “when was the last time it worked successfully?”, “How long have you been using the system?”, “Does it work on another PC or another user?”, “What is the exact error message?” and so on. Ask for a screen-print of the error if attainable. Your primary testing shall be to make sure the end-to-end tools is up and operating. Check the person’s PC, the community, the Web Server, Firewalls, the File Server, the Database back-end, and so on. Best-case you’ll pint-point the issue already. Worst-case you possibly can get rid of a variety of areas for the reason for the issue.

An actual life instance. The symptom in response to the person: “The system hangs up at random times when I place orders”. The atmosphere: The person enters the order element on a type in a mainframe utility. When all of the element is accomplished, the person will tab off the shape. The mainframe then sends this element through communication software program to an Oracle Client/Server system on the plant. The Oracle system will do capability planning and both returns an error or an anticipated order date again to the mainframe system. This downside is kind of critical, as a result of you possibly can free purchasers in the event that they attempt to place orders and the system doesn’t settle for them! To try to resolve this downside, individuals began by investigating: 1) The load and capability of the mainframe {hardware} 2) Monitoring the community load between the mainframe and the Oracle system 3) Hiring consultants to debug the communication software program 4) Debugging the Oracle capability planning system After spending a few months they may not remedy the issue.

The “Scientific Problem Solver” was referred to as in. It took lower than a day and the issue was solved! How? The solver spends the day on the person to see what the “real problem” was. It was discovered that the issue solely happens with export orders. By investigating the seize display screen and person actions, it was discovered that with export orders the final subject on the shape is all the time left clean and the person didn’t tab off this subject. The system was not hanging, it waited for the person to press “tab” one other time. Problem solved. It might be famous that the “Scientific Problem Solver” had very restricted information of the mainframe, of the order capturing system, of the communication software program, and of the Oracle capability planning system. And this brings us at Principle#2.

Principle #2. Do not be afraid to begin the fixing course of, even when you don’t perceive the system.

How many instances have you ever heard “I cannot touch that code, because it was developed by someone else!”, or “I cannot help because I am a HR Consultant and that is a Finance problem”? If you washer doesn’t need to swap on, you don’t want to be an Electrical Engineer, Washing Machine Repair Specialist, Technician, or no matter specialist to do some primary fault discovering. Make positive the plug is working. Check the trip-switch, and so on. “I have never seen this error before” mustn’t cease you from trying to resolve. With the error message and an Internet Search engine, you may get plenty of beginning factors.

In each complicated system there are a few primary working ideas. System A that reads knowledge from System B might be horribly complicated (possibly a Laboratory Spectrometer that reads knowledge from a Programmable Logic Computer through an RS-232 port). But, some fundamentals to check for: Does each programs have energy? Is there an error message within the occasion go surfing one in every of these programs? Can you “ping” or hint a community packet from the one system to the opposite? Try a special communication cable. Search the web for the error message.

Once you’ve got established what the issue is, it’s worthwhile to begin fixing it. Sometimes the preliminary investigation will level you on to the answer (swap the facility on; substitute the defective cable, and so on). But, generally the true downside is complicated in itself, so the following precept is to resolve it easy.

Principle #3. Conquer it easy.

Let’s begin this part with a real-life instance. Under sure circumstances, a saved process will grasp. The saved process usually takes about an hour to run (when it’s not hanging). So, the developer tried to debug. Make some modifications after which wait one other hour or so to see if the issue is solved. After some days the developer gave up and the “Problem Solver” took over. The “Problem Solver” needed to his disposal the information beneath witch circumstances the saved process would grasp. So, it was a easy train to make a replica of the process, after which with this copy to strip all pointless code. All parameters have been modified with hard-coded values. Bits of code have been executed at a time and the result-sets have been then once more hard-coded into the copy of the process. Within Three hours the issue was solved. An infinite-loop was found.

What the “Problem Solver” did, was to copy the issue and on the similar time tried to isolate the code that brought on the issue. In doing so, the complicated (and time consuming) saved process turned one thing quick and easy.

If the issue is inside an utility, create a brand new utility and attempt to simulate the issue inside the brand new utility so simple as attainable. If the issue happens when a sure methodology for a sure management will get referred to as, then attempt to solely embrace this management within the empty utility and name that methodology with hard-coded values. If the issue is with embedded SQL inside a C# utility, then attempt to simulate the SQL inside a Database Query instrument (like SQL*Plus for Oracle, Query Analyzer for SQL Server, or use the code in MS Excel through ODBC to the database).

The second you possibly can replicate the issue in a easy approach, you might be greater than 80% in your solution to remedy it.

If you have no idea the place in this system the issue is, then use DEBUG.

Principle #4. Debug.

Most utility improvement instruments come customary with a debugger. Weather it’s Macromedia Flash, Microsoft Dot Net, Delphi, or what ever improvement atmosphere there shall be some kind of debugger. If the instrument doesn’t come customary with a debugger, then you possibly can simulate one.

The very first thing you need to do with the debugger is to find out the place the issue is. You do that by including breakpoints at key areas. Then you run this system in debug mode and you’ll know between which breakpoints the issue occurred. Drill down and you will discover the spot. Now that you understand the place the issue is, you possibly can “conquer it simple”

Another good characteristic of most debuggers consists of the ability to observe variables, values, parameters, and so on. as you step by this system. With these values identified at sure steps, you possibly can hard-code them into your “simplified version” of this system

If a improvement instrument doesn’t assist debugging, then you possibly can simulate it. Put in steps in this system that outputs variable values and “hello I am here” messages both to the display screen, to a log file, or to a database desk. Remember to take them out when the issue is resolved… you do not need your file system to be cluttered or stuffed up with log recordsdata!

Principle #5. There is a wealth of data on the database back-end that may assist to resolve an issue.

The “Problem Solver” was referred to as to assist remedy a really tough downside. A undertaking was migrating system from a mainframe to client-server know-how. All went effectively throughout testing, however when the programs went dwell, unexpectedly there have been fairly just a few, and fairly random “General Protection Faults”. (The GPF-error was the final error lure in Windows 95 and 98). It was tried to simplify the code, debugging was tried, however it was unimaginable to copy. In the LAB atmosphere, the issue wouldn’t happen! Debugging hint messages to log recordsdata indicated that the issue occurred very randomly. Some customers skilled it greater than others, however ultimately all customers will get them! Interesting downside.

The “Problem Solver” solved this after he began to investigate the database back-end. Not positive if it was by likelihood or as a result of he systematically moved in the appropriate path due to a scientific strategy. Through tracing what is going on on the back-end stage, it was discovered that every one these purposes have been creating more-and-more connections to the database. Every time a person begins a brand new transaction one other connection was established to the database. The sum-total of the connections have been solely launched when the appliance was closed. As the person navigated to new home windows inside the identical utility, an increasing number of connections are opened, and after a particular variety of connections, the appliance could have sufficient after which crash. This was a programming fault in a template that was utilized by all of the builders. The resolution was to first check if a cursor to the database is already open, earlier than opening it once more.

How do you hint on the back-end database what is going on? The primary database suppliers have GUI instruments that assist you to to hint or analyze what queries are fired in opposition to the database. It may even present you when individuals join, disconnect, or have been unable to attach due to safety violations. Most databases additionally embrace some system dictionary tables that may be queried to get this info. These traces can generally inform ‘n complete story of why one thing is failing. The question code you retrieve from the hint might be assist to “simplify the search”. You can see from the hint if this system makes profitable contact with the database. You can see how lengthy it takes for a question to execute.

To add to Principle#2 (don’t be afraid to begin…); you possibly can analyze this hint info, regardless that you may not know something concerning the element of the appliance.

Remember although that these back-end traces can put a pressure on the back-end assets. Do not go away them operating for pointless lengthy.

Principle #6. Use contemporary eyes.

This is the final precept. Do not spend an excessive amount of time on the issue earlier than you ask for help. The help doesn’t must be from somebody extra senior than you. The precept is that you simply want a pair of contemporary eyes for a contemporary perspective and generally a little bit of contemporary air by taking a break. The different individual will look after which ask a query or two. Sometimes it’s one thing very apparent that was missed. Sometimes simply by answering the query it makes you assume in a brand new instructions. Also, when you spend hours trying on the similar piece of code, it is vitally straightforward to begin trying over a foolish mistake. A variety of finance balancing issues get solved over a beer. It might be a change of surroundings, and/or the relaxed environment that may come out the answer. Maybe it’s the contemporary oxygen that went to the mind whereas strolling to the pub. Maybe it’s as a result of the issue obtained mentioned with another person.

Conclusion

After studying this paper, the writer hope that you’ll strive these the following time you encounter an issue to resolve. Hopefully by making use of these six ideas you’ll understand the benefits they carry, moderately than to “guess” your solution to an answer.

0 views0 comments

Recent Posts

See All

Comments


bottom of page