Wiki : interview:bottleneck_analysis
 

Bottleneck Analysis

Bottleneck analysis is fundamental in software development. A good early spot can save hours of debugging and even the whole project in some cases. But caution must be taken for it's well known that premature optimization is the root of all evil. Therefore, a good bottleneck analysis must balance the importance of each problem correctly and focus only on those that are real blockers for the current time and let the future decide what's next.

Also, good analysis involve a lot of refactoring techniques to be at the good developer's fingertips. It's impossible (and often undesirable) to map all possibilities from start so refactoring is not an option, it's a requirement (see refactoring techniques in the problem_solving page).

New projects

  1. After a carefully planning a new project you have a good plan but some things are missing, either because you don't know it well or because you need additional information from another team or just do some tests. These are most likely to be the longest part of your project and you need to deliver at least a few working demos in a short period. What do you do?

Slow code

  1. One program you've written a while ago is being more and more used for dealing with more and more information and it was not designed to run over that amount of data and obviously it fails quite often. How do you start searching for the problem?
  2. Your website is running well and someone upgraded the database from one minor version to the other and it suddenly takes more than one minute to display a page when it used to respond in less than a second. The database seems fine for all other program, the machine is idle (when your website is not taking it down). How would you search for the problem? Do you have some hints that might help you?

Network

  1. Your program accepts connection from outside, authenticate on a radius server, does some queries to a database and reply back to the user. During some periods of the day your server is just unusable (around 30s per query) while most of the time it handles several queries per second. Locally the server answer promptly. What could it be, where would you start looking?

Hardware or software?

  1. How do you know when you have a hardware problem instead of a software problem just by looking at the programs run?


 
interview/bottleneck_analysis.txt · Last modified: 05 09 2007 19:15 (external edit)
 
Recent changes RSS feed Creative Commons License Driven by DokuWiki