Meta

March 26, 2007

The last days I’ve thought about Alex Blog “The Economics of Programming Languages in one Short Lesson” and what is missing for me, especially with the bottom line “Put your language out there, make it free and open and trust the programmers. … Good programming languages will survive and thrive, bad ones will die. ”

But how are we deciding as individuals what is a “good” programming language ? Isn’t “good” for each of us different ? What is behind the rational concepts “freedom”, “openess”, “trust” – aren’t this emotions, feelings ?

“What matters is how you make them feel about themselves and their decisions while in your presence”. The emotions will drive the “good” or “bad” label. The rational arguments are only used for justifying the decision to the others (colleagues, management, …).
But how to create such emotions ? The Author prefer 4 steps to create those expectations.
1. Empathize it. What feeling can we deliver at what prize, such that our audience has a compelling reason to choose it and identify with it?
2. Create it. If you want them to notice you, you have to change things.
3. Dramatize it. Elevate it to a level that overcomes inertia like Habit, Switching costs and Search costs.
4. Demonstrate it to deliver on the expectations.

Take Java as an example. With the slogan “Write once, run everywhere”, the VM-Approach, the supporter bandwagon (e.g. IBM, open source projects, …) they have done it perfectly that way. Maybe they are lacking on demonstrating it in some application domains, but they have done a perfect marketing job as others with C#.

For me the bottom line is that – if you want to make your programming language a “good”, a “valuable” choice create positive expections in the brain of your clients or users. Please don’t get me wrong, I don’t speak here against the functional features of a language but I want to stress that those are only the coffee. The positive emotions are the cream, which makes the difference.
Beside choosing programming languages this theory can also be matched on choosing a framework like POCO.
Let’s make a short test.
1. What feeling attracts you to POCO ?

2. What feeling keeps you engaged with POCO?

3. What feeling will draw you away from POCO?

What do you mean ? I’m curious to your thoughts, comments, arguments, …

De gustibus non est disputandum. Good language indeed may be different thing for different people. For kids, it may be Squeak or Logo. For a scientist needing a raw number cruncher, Fortran fits well. For a sysadmin, it’s the favorite scripting language. For the most needs of folks gathering around here, clearly it’s C++. Some folks use other languages as well – we’ve heard about Erlang recently – a language performing and scaling extremely well in concurrent scenarios. Here, I’d like to add that learning from other languages is also very important. My bottom line was that allowing as much freedom as possible in a language matters, especially with a general-purpose one such as C++. The community will figure it out and a set of best practices will emerge.

As for the emotions, sure, they are the first thing you experience. But then, thinking (i.e. reason) should take over before the decision is made. Asacker mentions it, too: Sense -> Feel -> Think -> Do

But I think what you (and Asacker) are talking about is not emotions – it’s what Alexander calls “a quality without a name” (clearly, I’ve done some reading already). No room to fully explain it here, anyone curious about the whole thing should read the books. But essentially, the quality can not be described with words, yet it is very precise according to Alexander. It can not be described by words exactly because it is so perfectly precise, hence no word can describe it fully. When the design has the quality, forces are in balance and cooperate well with each other, so the whole thing gives you this positive “feeling” of being right and “alive”.

I said long time ago why Poco, but let me now specifically answer your questions:

1) (a) Poco is very, very well designed. It turns programming into a joyful experience. (b) It is carefully crafted and stable – I can trust the thing. Yes, bugs happen, but my overall experience has been very positive and my code runs 24/7/365 in a demanding production environment – just deployed another Poco-based app this morning. (c) Support is good – I know there’s someone who cares about my troubles on the other side and if I have a problem it will be taken care of. (d) If I suggest something that makes sense, it will be accepted.

Thanks Alex for your comment. I’m animated to move on, because of the shown respect on investing your time to communicate with me and also for the learning i could taken from your comment.

Yes you are right. The feelings or emotions are only the surface. Behind that is what matters. I’m going not so far as you and Alexander not to name it, because i think we need a “starting point” a “label” to come into contact, altough it can’t be expressed precisely. I think what is behind the feelings or emotings are the needs. Needs as expressed by Marshal Rosenberg (http://www.cvnc.org) are the vital source, the “heart” of being right and “alive”, if they are fulfilled.

Let me try to argument this on taking your answers. For my understanding now is POCO your choice because you are getting fulfilled your needs of

- a joyful programming experience

- trust, safety and stability in the solution, but i think also being seen as an expert in your organization

- support, if something is going wrong

- community, to share common interests and passions

Don’t get me wrong – this must not be your reality! This is only an imperfect try to interpret your thoughts to understand you and being connected with you. A “deep” understanding can only be achieved by a dialog.

What i wanted to show is that for a tool, a language, a framework, .. – even for common interest in the community, to be a choice on the individul level you need to fulfill the needs of each individual. To do so, you need to know them. Without knowing or “labeling” them, what shall you do? How do you know if you are still doing right ? What should you do if you are not doing right? What should you do attracting others with the same needs?

E.g. lets take the need of a “joyful programming experience”. Maybe there are others out there, who are sharing your need. Because of “labeling” it, in my mind there are now solutions like

- making a newsletter writing small articels showing how easily a program can be build with Poco
- making a video showing the joy of programming with Poco
- getting testimonials, short stories showing some of the joy
- ….

There are many out there who share my need – it’s hard to think of a person who wouldn’t like their job to be joyful.

As for the things you are listing, you’re already doing all of them in some shape. I think that, at this point in time, the main things Poco needs is – persistence and patience. It’s like cooking, or fruit ripening – it’s a process and it takes time. You can not “microwave” it – it’ll be done when it’s done. And that will happen when the word spreads far and wide enough. Majority of people who know Poco love it. But I’ve been at SD West recently and only two people (out of couple of dozen I’ve talked to) have heard of Poco. And we’re talking hard-core C++ crowd here. It takes roughly a decade to build a community that makes a difference.

The moves you guys have done so far, licensing, website and all, are logical. The only thing I’d say is – embedded is nice and well, but make sure you don’t downplay the “regular computing” domain – Poco can and should do very well there.

Excitement. Poco makes a very good first impression. It’s very structured. The code is clean and well documented. It offers tons of functionality. And most of all, it is C++ in it’s full glory. It would be hard for me not to try out Poco.

Empowerment. Finally having found a really good tool for my work. Getting more done in less time, while having more fun at the same time. Life is good

Insecurity. Dead community, not much posting in the forums. If something doesn’t work, then what? Search the forums? Hmm.. not much content yet. Post a question? Maybe you get an answer, maybe not. It’s scary.

You are right to some extent about the forum. That is partially due to many problems we’ve had with Tiki Wiki, which is scheduled for replacement. While it is true that occasionally a post remains unanswered, it is my feeling that the core development team is quite responsive.