Load Google Translate Jack Ganssle - Ganssle Group
Title: Keynote Speech
Start your discussion here on this session, ask question and share your thoughts.
View other Sessions:
http://www.element14.com/community/groups/innovation-series
Hello, nice examples of bad firmwares.. I got such a question, have you some favourite book about writing safe codes? Or how would you recommend to write codes without bugs (I know it is impossible as I could see in your video
) ? I do the same job as you said, write code, debud code, rewrite code, debud code, go crazy, take coffee, rewrite code etc...
Well, there's no one book, unfortunately. Steve McConnell's books are all excellent. I like Capers Jones' book on Software Measurements. Les Hatton's book Safer C is good. There's the MISRA C standard which is 10 English pounds.
I completely agree with Jack on the problems with software development.
Software is the only discipline where someone can just learn a language and be called a "software person". This is ridiculous. I mostly blame the companies for hiring unqualified software wannabe's. They were so avid about getting "any" software people that they lowered their standards and hired these people.
The result: garbage software. Software Engineering is a disciplined profession. It takes a lot of education and training to reach a level of proficiency where you are capable of handling high risk embedded software development.
Luckily, more organizations are working towards a CMMI level which ensures high quality products. When hiring subcontractors or software personnel, make sure they have at least a documented level 3 process. If not, immediately double your cost and bug expectations.
The process is not that difficult to learn and the results accrue almost immediately.
I also encourage anyone doing software to take the Personal Software Process course. You can do it as a home study and it will teach you the discipline you need to learn to become a better software developer. YOU NEED THIS COURSE!
I hope more people get this message and begin to improve their skills. Talented armatures will eventually fail. The cost of failure could be peoples lives. Take the step to become a professional and learn how to properly build and test software. Otherwise, you are a potential hazard to society.
Just my opinion.
DAB
DAB,
I totally agree and should have recommended a PSP book for Vivi's question above yours. Watts Humprey wrote A Discipline for Software Engineering. It's not an easy book, and there's a lot of homework, but it's brilliant.
I think programming should not be taught to CS people till Junior year. Start with software engineering.
Jack
Thanks for books recommendations, I'll look at them.
While not totally disagreeing with DAB and Jack I feel that both of you are looking at software from a rather narrow viewpoint.
Software is like cooking - everyone can do it !
Not teaching programming till Junior year (not too sure how old that is but if its > 5 years old I don't agree) is like keeping your kids out of the kitchen !
Of course there are different kinds of software - like cooking:
You can go to Michelin starred restaurant where you expect the highest level of skill and innovation but might not get the best quality in terms of risk of food poisoning per meal consumed.
You can go to a food factory where you would hope for the highest standard of objective quality but it won't be cutting edge cuisine.
You can go to MacDonalds and get fast food cheap
You can cook at home and ........
There is a rational and viable market for all of these just as there is for software.
You can roll your own website in a hotch potch of PHP, Python and random components from who knows where - and that's fine for our home-cooked weather reporting site.
If you want to run a nuclear reactor I hope for a different standard of work.
There are zillions of applications which have all sorts of different requirements and ultimate quality is rarely one of them.
I'll say that again:
the best possible quality is rarely a real requirement !
(Because it costs far too much).
Once you accept that (and it IS accepted in most fields of human endevour) then you must make a judgement as to the required quality level which leads inexorably to the concept of "good enough software". (or food or cars or houses or health care ..........
To sum up - there is no "right way" in software and it doesn't belong to a little group of "professionals" - for some applications standards and documented procedures etc are absolutely a good thing - for a great many applications just getting on with it seems to have generated quite a lot of good stuff. The hard part is working out just where that boundary is.
Hi Michael,
I have built software for 40 years on projects needing just a few dozen lines of code to multi-million lines of code. Process does matter.
I think you are confusing coding with software development. Coding is just 10% of the job.
I am also a good cook and software is indeed like cooking. If you follow the recipe, you end up with a delicious meal. If you just put a little of this and a little of that together you usually end up with something just barely edible.
Tell me, would you buy a tablet or laptop computer that did not conform to internet standards, USB, FAA, or IEEE standards? I think not.
Software development needs to mature to the same level as the hardware. Jack's example about the $600 Million toss of a microcontroller product due to bad software IS the point. Just like a resturant, vendors will only buy your stuff once if it is bad. They seldom give you a second chance and they tell all of their friends. You are soon out of buisness.
Go ask Toyota how much money they lost off of their brake problem. While not explicitly blamed, the NASA assessment of the software indicated that it was mostly poorly built. How many people died as a result?
Remeber the NASA lunar probe that crashed because of a software problem. They tried to do a project quickly without following proper software procedures. $1 Billon down the drain.
If you take the Personal Software Process, you will quickly learn that it cost much less to do the job correctly the first time. Rework and bug fixing consumes 80 to 90% of a sofware product over its life cycle. Have you every complained about a Microsoft software product. Would you be surprised if I told you that the quality of their products is significanly higher than any of their competitors? It is true.
Yes you can code simple control projects quickly and get them working adequatly for your needs. Real products need a much higher level of quality.
I have seen many people who only new how to code try to pass themselves off as software developers. They always fail. You cannot build a career if you only know 10% of the job.
Don't fool yourself into thinking you can just ignore the software development process and succeed.
The reason that corporations proudly identify that they are ISO9000 certified, CMMI compliant and meet all international regulations is because it's just good business. One bad product and they are done. Every company that institutes high quality software development processes quickly discover that it saves them about 50% of the development cost over their adhoc methods.
You have to build quality into your products. Good software processes lead to good products. Sloppy methods get you unemployed.
Do your research and you will see that I am right.
Just my opinion.
DAB
Hello DAB,
I think you have rather missed the point I'm making.
Of course a one chance moonshot demands a very high standard of software quality.
Back to the cooking:
Some use tried and tested recipes but other innovate. The development of a recipe for a mass production product is very different from that for a tea shop with 4 tables. To attempt to apply the same process would be foolish.
Recently I was talking to an engineer who worked on ejector seats and he told me that the cost of changing one line of code was tens of thousands of pounds and would take several months. (One assumes the process starts with a requirement change which ultimately demands the one line code change). His company seemed to be thriving so its quality process was appropriate. I have worked on development projects where the entire budget was less than his budget for the one line code change - obviously a different quality process was required.
Now that hardware is better than software thing !
You can read the executive summary of the NHTSA report at http://www.nhtsa.gov/staticfiles/nvs/pdf/NHTSA_report_execsum.pdf
I'll summarise further: 2 mechanical defects, 0 software defects. Software poorly built ? - the report doesn't say that (at least not in the executive summary).
(What was that about research :-)
In fact we accept hardware limitations all the time that we would never accept in software:
For example: it gets icy every winter but my car's rubber tyres have no grip on ice, if I hold the breadknife by the wrong end the consequences are unpleasant, etc etc.
To say "you have to build quality into your products" is like saying "traffic accidents are a bad thing" - true but not helpful.
What you have to do is build the right level of quality into your products and that requires thought about risk, cost budgets etc.
Hi Michael,
Ok, I will take my heavy boot off your neck. ![]()
As you can tell, this topic hit one of my raw nerves.
I do understand what you are saying. Software coding is reasonably easy to learn and novice users can accomplish a lot of good projects without being full fledged Software Engineers. I really do encourage everyone to learn and use software for their projects. It is really fun to see how you can go from an idea to a working prototype.
What I took from Jack's discussion was that there is a lack of people who can truly write high quality software. I agree that not every project needs the full attention that critical software requires.
My main point is that as you progress in your development of software, you could benefit from learning the Software Development Process. It is not that difficult and it will enable you to take on larger software projects with more confidence.
As for the state of software quality, I recommend that you go to the CMMI site at Carnegie Mellon and see what statistics they have gathered over the last four decades. Average software has about 10 defects per 1000 lines of code. Good software has less than 1. It only takes a little training to move from the average to the good. I think it is worth the effort, but each programmer needs to decide where they want to be.
So go in peace, I will come down from my soap box and drink a brew to our points of view.
Thanks
DAB
Hello DAB,
Honourable truce accepted.
Actually the only thing that upsets me about our little discussion here is that no-one else joined in !
Michael Kellett
Hi Michael,
I suspect our discussion intensity scared off others from participating, but hopefully they will eventually learn to participate.
As far as I know, no one has died from a hot email discussion. ![]()
I urge everyone to join in. This particular issue was more philosophy about process over fast software. If you play with software, these are issues you need to understand.
I promise, I won't kill anyone, though I may chew on you a little bit. ![]()
Thanks
DAB
© 2009 Premier Farnell plc. All Rights Reserved
Premier Farnell plc, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE