Labels: c++ (6) scripting (4) the perfect project (3) coding (1) firefox (1) idea (1)

Sunday, April 15, 2007

The perfect project: Problem formulation

Ok, we are gonna do some software project and do it as best as we can (Let's use "we", cause I don't like using "I" all the times. Anyway if you are reading, then you are participating already). Best practices, processes, technologies — all of that is welcomed until it is useful. And perfect. =) So, what are we gonna do? Let it be something simple enough to not stuck in technical details, but complex enough to have value and serve as a playground for demonstrating the processes and stuff. Let it be... Fibonacci numbers calculator. No, even better — factorial number calculator! Or, maybe a converter of temperature between Celcius and Fahrenheit? This is the first stop. That is the problem of 99% of the books about programming we have. People read them to learn programming, to learn how to create things. And they start with the wrong examples.

Technology Review: Why is most software so bad?


Technology Review: How can we fix the mess we are in?

Bjarne Stroustrup: In theory, the answer is simple: educate our software developers better, use more-appropriate design methods, and design for flexibility and for the long haul. Reward correct, solid, and safe systems. Punish sloppiness.

When a student starts to learn programming, what book it is pointed first? Yes, a programming language book. Like C++ Programming Language. And what happens after that? On conferences like SD West 2007, Bjarne Stroustrup and Herb Sutter — the gurus, the leaders of software development world — spend hours explaining software developers (adults now) the things they do wrong. Like why they should avoid using C-arrays and favor std::vector. That's ridiculous! And just in the middle of that (around $175 per hour BTW), each of them uses fopen/fclose on their slides to demonstrate the value and proper usage of constructors/destructors and smart pointers: Bjarne: And Herb: While we have such stupid (std::ifstream hopefully will be revealed on SD West 2008) examples, we are gonna have developers (students yesterday) using these examples in real world projects. Because examples are supposed to be followed and are followed, no matter how "sloppy" they are.

The perfect project: so what are we gonna do?

WHO CARES about calculating the Fibonacci numbers? Who needs those silly, artificial and useless examples? If you ever need those, go and find them. Google them, lookup in Wikipedia or whatever. But real programs should be useful and provide value for people. To make our project perfect, we are gonna find something useful and not done yet. Something you cannot just buy instead of constructing — thanks to Frederick Brooks for the idea! Let's spend some time thinking about what that could be.

No comments: