Wednesday, October 28, 2009

Quotes for large software projects

Again it is time to talk about larger software projects. This time not only about the "how's" and "where's", let us take a more... humorous approach. Let us have some famous qoutes you could use to get some brains straight back to line.

If someone shows off a very complicated software design to you, consider to quote the following:

"There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult."
C.A.R. Hoare

Let's say everything in a huge project is clear - theoretically. Why should implementing it be difficult? Because...

"In theory, theory and practice are the same. In practice, they're not."
Yogi Berra
Long-year-experience and wisdom from my friends:

"Frameworks like Ruby on Rails exist to make simple things even more simple and complex things impossible."
A colleague of mine

A deadline bites. But again, time - while developing in a large project - is somewhat relative:

"The first 90% of the code accounts for the first 90% of the development time. The remaining 10% of the code accounts for the other 90% of the development time."
Tom Cargill

Cutting the development time by throwing more developers into a project? Reply this:

"Nine people can't make a baby in a month."
Fred Brooks
Not exactly valueable for large projects, but, alas, said by a great man:

"Whereas Europeans generally pronounce my name the right way ('Nick-louse Veert'), Americans invariably mangle it into 'Nickel's Worth.' This is to say that Europeans call me by name, but Americans call me by value."
Niklaus Wirth

Something every programmer of a large project at least said once in his life:

"It works on my machine."
Anonymous Programmer

And, one of my favourites, not exactly from a programmer (but a wise man):

"Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away."
Antoine de Saint Exupéry

Look out for some more quotes at "Quotes: 5 different views on computers and programs".

Labels: , , ,

 

Thursday, February 26, 2009

Trying to kill creativeness in programming: Why a "Programsmith" would fail

Ever wanted to be a great musician but cannot read notes? No problem, using a computer program will help you getting along and famous: Microsoft Songsmith.

Songsmith composes music for you, the only thing to do is to adjust some sliders and sing into a microphone. From that moment on music will fill your laptop, quick and easy, nice and dandy, for every occasion in every phase of your life.

Why there is no "Programsmith"...

So much for the idea the creators of Songsmith try to sell. But, as we all know, in real life it is not so easy to just create an algorithm that scans sound and spits out world-class music. The idea surely is appealing. And it is not really new: Many customers and project managers dream of an IT-service-provider/programmer/administrator that exactly solves problems in the same way: Best would be to "sing" a little requirement into the phone so that the complete and working program can be deliverd a week later. And do not technologies like RAD, XML, EJB, Webservices suggest the possibility of a Programsmith? Simply connecting the modules and you are done?

... and why a "Programsmith" would fail

Certainly not, projects in IT do not work that way. You have to communicate and get the requirements right, make project plans, split the workload into functional points and instruct the programmers, involve third-party-modules and interfaces. All in all it is a creative process and we all know that. But our customers (and quite a hand full of programmers) would like a "Programsmith" to exactly do that: Draw a little plan, involve some kind of magic compiler (UML, anyone?) and deploy the program.

Well I had fun scanning through the results of Songsmith videos on youtube viewing classical hits interpreted by the program like "Roxanne" from "The Police". I think that this is the hearable pendant of a (more sophisticated) program how a kind of Programsmith would compose it. It will not work out in the end, at least not as long as the to-be-written-program is a counterpart to the complexity of a "Stock Aitken Waterman" tune simple enough to be more or less replicated by Songsmith. But even that one crackles and creaks a lot.

I wonder if there is a similar video out there treating programming in such a way (videos like singing to be successful selling "Glow In The Dark Towels") using the sliders "XML", "Webservices", "Cloud-computing" and such. Would be funny to see the results of them. Well, let me search a bit... .

Labels: , ,

 

Tuesday, January 06, 2009

Are programmers open minded enough in technical opinions? Why not?

Today I checked an entry on stackoverflow.com to see how the answers were doing and which answer the questioner selected for himself to be valid. Again I was totally disappointed because the answer selected was in my opinion far away from being the best answer, rather it seemed to be the most convenient answer for the guy who asked at first place.

Are we open minded enough?

Questions of programmers mostly divide in two parts: The technical questions (i.e. questions which provoke solutions that either work or won't) and questions which - at least - elict to give an opinion in the answers because they cannot be answered that simple (i.e. "which framework is best", "what is the fastest method to..."). The latter kind of questions troubles me here.

When we ask for opinions of the community we should stay as open minded as possible judging the answers, but this, alas, is very difficult. Let me state some points why this is so.

Why aren't we open minded enough regarding our technical opinions?

So, why is it so? I gathered some reasons and their descriptions I stumbled upon in my life and wrote them down:
  • Projects, timelines, customers and change requests to be done "until yesterday". In a perfect world we would have enough time to evaluate different approaches for a programming project or problem. But in the real world you often have to just get the job done and have no time to rely on fancy stuff like other opinions. This may get a habit that is hard to be dealt with so that finally the own opinion counts (more).
  • Experience vs. half knowledge. Every programmer has a certain experience in a certain moment in his life. You certainly cannot have a (completely) valid opinion of things you didn't "experience" until now, be aware that half knowledge is a bad judge. Anyway, many people in cs trust their half knowledge more than (other) opinions from more experienced people, often even without really recognizing that they do so.
  • Sticking with own tools / frameworks / languages. Regarding their languages, tools and frameworks most programmers are very conservative and do not want to change them. That is not bad per se, things that worked out should be kept and experience gathered stays preserved, but it leads to programmers who do not try (or accept) new ways and therefore being "open minded" gets really hard.
  • Only the newest tools / frameworks / languages are the best. This seems to be the opposite of the argument above but it merely isn't. Someone who only relies on the latest techniques may not be aware that a problem can be solved better using an "old" technology. This perhaps because he never got deep enough using something (long enough) to see the advantages that are not obvious at first place. On the other hand the drawbacks of a new technology are not known at the beginning so everything looks more simple than before. That creates prejudices which constrain to be open minded.
  • It worked fine in my project so it works fine for everyone else. Generalization. Nearly everyone fails on this and it is perfectly human to do so. But in cs all project are, more or less, different. Be it because of the (slightly) different requirements or the environments or specifications a program has to run in. Even small varieties may make the great difference and everyone should keep this in (an open) mind.
This all is not really new and there are many slogans that reflect them like: "A fool with a tool is still a fool", "If all you have is a hammer then everything looks like a nail", "Use the right tool for the right job" or "Some tools make simple things even more simple and complex things impossible". Anyway, every time I answer a "technical opinion question" I lean back and try to evaluate my answer against the points I mentioned above. I think this improves my answers a lot.

Related posts:
Different types of programmers
How to choose the best programming language

Labels: , ,

 

Thursday, December 27, 2007

Quotes: 5 different views on computers and programs

Oldies but goldies: Gathering famous quotes on computers, programs, users and programmers. Have fun!

The users view on computers and programs:

Homer Simpson: "The Internet? Is that thing still around?"
Ted Nelson: "Any fool can use a computer. Many do."
Jeremy S. Anderson: "There are two major products that come out of Berkeley: LSD and UNIX. We don't believe this to be a coincidence."
Dennie van Tassel: "I've finally learned what 'upward compatible' means. It means we get to keep all our old mistakes."

The programmers view on computers and programs:

Anonymous: "The best thing about a boolean is even if you are wrong, you are only off by a bit."
Stan Kelly-Bootle: "Should array indices start at 0 or 1? My compromise of 0.5 was rejected without, I thought, proper consideration."
Robert Sewell: "If Java had true garbage collection, most programs would delete themselves upon execution."
Alan J. Perlis: "There are two ways to write error-free programs; only the third one works."

The meta view on computers and programs:

Edsger W. Dijkstra: "The question of whether computers can think is like the question of whether submarines can swim."
Bjarne Stroustrup: "There's an old story about the person who wished his computer were as easy to use as his telephone. That wish has come true, since I no longer know how to use my telephone."
Dave Barry: "Computers are getting smarter all the time. Scientists tell us that soon they will be able to talk to us. (And by 'they', I mean 'computers'. I doubt scientists will ever be able to talk to us.)"
Oktal: "I think Microsoft named .Net so it wouldn't show up in a Unix directory listing."

The worlds view on Computers and programms:

Seymour Cray: "The trouble with programmers is that you can never tell what a programmer is doing until it's too late."
Eagleson's Law: "Any code of your own that you haven't looked at for six or more months might as well have been written by someone else."
Edsger W. Dijkstra: "If debugging is the process of removing bugs, then programming must be the process of putting them in."
Paul Ehrlich: "To err is human, but to really foul things up you need a computer."

The artists view on computers and programs:

Pablo Picasso: "Computers are useless. They can only give you answers."

More quotes to read at "Quotes for large software projects".

Labels: , ,