Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

What should a good technical analysis include in software development?

Why do we need a technical analysis? why can't we just start coding?

I got this question from a customer who won't pay for the analysis.

share|improve this question
6  
Define what you mean by technical analysis a bit please. –  Emmad Kareem Aug 16 '12 at 13:52
6  
You asked the client to pay for you to do something that you don't know what it is? –  Sign Aug 16 '12 at 14:04
2  
If you don't know whether or why you need it, maybe you don't. –  pdr Aug 16 '12 at 14:04
    
@Emmad Kareem, you're asking my question :) –  Stacked Aug 16 '12 at 14:46
1  
If you have to ask "Why can't I just start coding" you certainly have never taken a software engineering class and may not have ever taken a CS class. If your customer doesn't get that you need to plan you don't need that customer. –  Rig Aug 16 '12 at 15:08

5 Answers 5

up vote 4 down vote accepted

First, I suggest you read this great article from Joel Spolsky about "functional specs" (which is just another word for "technical analysis"):

http://www.joelonsoftware.com/articles/fog0000000036.html

So I hope this article convinces you that a technical analysis makes sense, to make sure the development runs into the right direction, and to make a rough estimation about the project costs.

The other question is "how to convince the customer that he should pay for the analysis", or just "who should pay for it" (seriously, not making an analysis at all is a no-go, even if you have an agile process). The problem here is that an analysis is primarily something you will need to fullfill the customers wishes, and the benefit for your customer comes only indirectly (for example, when he has a chance to cancel the project when the analysis tells him that the development will cost more than he expected). The answer to this question depends on how you are going to make a contract, and how the payment regulations are done, for example, if you are paid by working hours, or for a fixed price.

share|improve this answer
    
So helpful, thank you very much. –  Stacked Aug 16 '12 at 18:33

Analyzing is a very important part of SDLC, if you failed to analyze & convert given requirements into proper design you may end up with a huge list of enhancements/change requests which will result in unstable code.


Why do we need a technical analysis? why can't we just start coding?

If you start coding without a proper planning you may do a lot of things wrong like you might choose wrong controls (buttons instead of hyperlinks etc), at code level you might use wrong data type which might be very memory consuming in later stages.

share|improve this answer
1  
It's impossible to "analyze all the requirements correctly". The customer probably doesn't even know all the requirements. An eternity of analysis won't save you from changes in low-level details like buttons vs. hyperlinks or data structure design. If you can't change those details with minimal effort, then the system is poorly written. –  kevin cline Aug 16 '12 at 14:21
    
@kevincline : modified the answer as per your suggestion. –  Garv Aug 16 '12 at 14:35
    
@Dan thank you Dan, your answer is short but informative enough. –  Stacked Aug 16 '12 at 14:45
    
@Dan: you don't explain why those decisions have to be made before coding. It's probably faster to just pick one, implement it, and then change it, than it would be to do some sort of analysis and then implement once. –  kevin cline Aug 17 '12 at 3:54

I'm your client, answer my question, why do you need all these analysis before start coding?

All "this analysis" is usually about knowing to a a comfortable detail level, what you are supposed to build and agree to deliver. It is much like if I ask you to build me a car. If you just say OK and take my money, I would think of you as a crock! There are many questions you need to ask me if you are an honest person.

Here is a sample of what you get at the end of analysis...(there many ways to put this and this is not all, but I guess is enough at this point):

  1. Finding who is the customer.

  2. What is the problem(s) to be solved.

  3. How is the proposed solutions will actually make a difference.

  4. What are the risk areas?

  5. What is the best solution among candidate solutions?

  6. Am I the right company to solve your problem (technically)?

  7. What is the cost of the solution (alternatives) - Solution feasibility?

  8. What are your business rules?

  9. Whom will help me from the business side, do they have knowledge and time?

  10. What is the acceptance criteria and milestones?

The cost of missing requirements is huge after writing code.

The technology we use to build software is not advanced enough to make software development via endless iterations feasible or practical in may of the real world situation.

The picture in this article is very famous, and is a classic showing the value of analysis and capturing accurate requirements.

Examples of customer dis-satisfaction with implementations of even ERP systems with 100s of well crafted modules is not uncommon.

Having said this, there are businesses that are rich enough to start projects with no dead-lines and ever lasting pilots. For those, the approach may be different.

share|improve this answer
    
"All THESE analyses" not "this". For you it's just one but for the customer are many, the reason why he's afraid. The problem is that this customer knows nothing about IT and has a wrong picture in his thoughts about IT and the way we work to develop software. Thank you Emmad for your answer, the picture becomes clearer :) –  Stacked Aug 16 '12 at 18:31
    
With a customer like this one, you have to be formal and careful. –  Emmad Kareem Aug 17 '12 at 0:29

Well you're asking about a technical analysis and the answers you received mostly talk about functional specs. Here is how Joel differentiates:

  • A functional specification describes how a product will work entirely from the user's perspective. It doesn't care how the thing is implemented. It talks about features. It specifies screens, menus, dialogs, and so on.
  • A technical specification describes the internal implementation of the program. It talks about data structures, relational database models, choice of programming languages and tools, algorithms, etc.

I'd make a functional spec first that explains the business requirement and that is understandable for your customer. Then you can proceed to make a technical spec that can be used by the programmers as a guideline for writing the software.

Writing these specs will force you to think about any problems or complications ahead and will lead to better software development.

share|improve this answer
    
Surprised nobody else mentioned the difference between a functional spec and a technical spec. I don't know what "technical analysis" is in the software world, I've never heard the term outside of the finance industry. I assume it's a combination of both? –  Alex G Oct 29 at 11:04

Would you build a house without a blueprint first? Would you trust a building contractor who wanted to do that to save money? Do you think it would actually save you money?

We do the analysis to make sure we know what code to write and to make sure the customer knows what is involved in what he is asking for. The chances of any major project succeeding and the client accepting it without an analysis of some kind is virtually 0. You will have to pay the price to do the analysis either up front when it is cheaper or during acceptance testing or after the system is in production when problems are far more expensive to fix (Like relocating the kitchen after you built the house - easy to do at the blueprint stage, harder and far more expensive to do later).

As a customer what you don't want to do is hire someone who is so unprofessional that he doesn't suggest an analysis. That is a virtual guarnatee that the product will be poorly built. Customers who hire those people tend to get what they pay for and then have to pay again to a real professional to do the job correctly. It is almost always cheaper to do the analysis than to skip it.

share|improve this answer
1  
very convincing. So the first step is neither coding nor analyzing, but convincing the customer that the importance of the analysis is in his advantage in the first place. –  Stacked Aug 16 '12 at 21:51

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.