Ming the Mechanic:
Simplicity and embracing constraints

The NewsLog of Flemming Funch
 Simplicity and embracing constraints2006-11-05 20:36
3 comments
by Flemming Funch

Jon Udell mentions Dabble DB:
The October episode of The Screening Room features Dabble DB, a web-based workgroup database that, in the style of 37Signals, focuses on simplicity and embraces constraints. Dabble doesn't aim to do full-blown database application development, or sophisticated query, or heavy transactions. Its mission, instead, is to enable teams to easily manage and flexibly evolve modest (say, 30- to 50-megabyte) quantities of structured data.
Now, Dabble is first of all cool, but that brings up several things. Dabble is a database you create on the fly online, which you very easily can import stuff into, particularly from spreadsheets, and you can very easily change it around, add fields, etc. And it is often intelligent enough to figure out what you might want to do, and making it easy.

That reminds me first that I made a program like that several years ago, where you create a database online, and you can change it on the fly, and import stuff into it, and you automatically have screens for searching, sorting, updating it, etc, and you don't need to know much about databases. My web app isn't nearly as cool, doesn't do any Ajax tricks, and doesn't make it nearly as easy. There are people using my app, who're happy with it, but I never got it to a point where it would be meaningful to market it.

That's a bit of a puzzle I have as a programmer. Should I make a bunch of different functionalities that are tied together, but spread myself so thin that it ends up being a bit mediocre and not quite finished? Or should I get a team together and do it better? Or, should I do what is the current Web2.0 fashion - do one rather simple, limited thing, but make it very cool and easy to use, and then charge people per month for using it.

As he says, focus on simplicity and embrace constraints. Make it very simple, refuse the temptation to add more advanced features. Make the simplicity and lack of features BE a feature.

Like 37 Signals, obviously. Very smart people making very simple programs, even bragging about how quickly they made them, but making them so well that they're very intuitive to use, and so compelling that thousands will happily spend $10 per month for using one of them.

I'm trying to talk myself into it... Intellectually I get it, but instinctively I'd tend to go for a too-complicated solution, when a more simple would do.

My pet programming project the last couple of years has been a collaborative environment I call OrgSpace, which has wikis, blogs, calendars, forums, chat rooms, project management, contact lists, event management, databases, a shopping cart, workgroups, and more, all integrated with each other. But that makes it so damned complicated that it is a bit crazy to try to do single-handedly.

And some of the things I've done successfully have been very simple. Like the webcam thing I did in Opentopia. Took me not much more than a weekend to do, but it has gotten more hits than anything else I've put on the web. I recently sold that website, and it all sort of speaks for the idea of doing simple and cool things and getting them out the door.

So, I'm trying to meditate on that simplicity-and-embracing-constraints message.

It is like The Mythical Man-Month. Complexity grows exponentially as, uhm, things get more complex. When a software project grows so complicated that one person can't easily understand all of it at one time, the need for communication between team members makes it quickly mushroom way out of proportion. A small team of 3-5 people can be very productive, but anything beyond that starts getting crazy. For that matter, even if it is a one-person project, if he can't easily comprehend the total project at the same time, it gets too complex as well.

Scaling it up much further, how about understanding and solving humankind's problems? Does some committee need to somehow solve the big problems together, even though they have a hard time understanding the full system? Or is it maybe better if small groups of people solve very specific and limited problems, but they solve them so well that their piece becomes a fine building block for bigger solutions, which they maybe can't even imagine.

I could say that this is maybe nature's way of dealing with complexity. A whale is very good at being a whale and plankton is very good at being plankton, but none of them lose any sleep over pondering the complexities of the ecosystem. And yet they're integral parts of it. If they made a big committee, they probably wouldn't do as good a job at it.

It could be a human type of hubris that we think it is our job to come up with big general solutions for complex problems we don't really understand. Rather than coming up with elegant and complete solutions to small problems that we do understand. I'm not sure. Just a philosophical thought.


[< Back] [Ming the Mechanic]

Category:  

3 comments

6 Nov 2006 @ 20:55 by Hanae @69.33.46.10 : Compexity

Humanity IS the cause for many of those "complex problems we don't really understand." So, my inclination, would be to answer yes, that "it is our job" to try to both understand and address some of the problems we are creating individually and collectively as a species - I don't see it as hubrism. (This is just an opinion, of course, arguably it could be looked at as hubrism. Some people think it is out of our hands or that it is beyond us, that we are part of a greater order in the scheme of things, and that things are as they should be.)

As to the question about the committee vs. small group approach to problems - in so far as it applies to mankind as a species - my inclination would be to answer that both approaches are not mutually exclusive. Some of the problems we face today were caused collectively, and can, to a certain degree, be addressed collectively (via committees or otherwise,) like, for example, carbon dioxide emission reduction, or the protection of endangered species. At the same time, individual efforts, “small groups of people solving very specific and limited problems,” is also a strong and important dynamic---isn't it the way it has always been?---like, for example, new technologies to come might hopefully prove instrumental in addressing the carbon dioxide emission problem.

The people of a village, who depend on a river for fishing and for their water supply, might object to people from another village using that same river as a trash dump if they happen to live down-river from those people. This is a problem that clearly needs to be addressed. It can be done by committee, with some delegates from each of the villages meeting together and trying to see each others problems and trying to reach a solution that works for all. It’s not as simple as it sound. The “trash” in question might happen to be some fertilizer that some village uses in their fields bordering that river, or they may raise some cattle whose excrements drain into the river and contaminate the water.

Now, someone might also come up with some new technology that addresses some of those problems:

1. an alternative to the fertilizer
2. a way to contain the manure from the cattle
3. Someone might come up with some water-purifying device that takes care of the problem, so that the river is automatically cleaned from contaminants through a series of filters and it doesn’t matter what anyone dumps into the river.

Solution #1. and solution #2. would require some global collective efforts on the part of the villagers. In the case of the fertilizer, they would need to convince the cultivators in the village to switch method of growing their crops; some might not want to go along with it. The issue might be influenced by other factors, like some people in those villages might have a vested interest in resisting progress because they make a huge profit from the fertilizer, etc.

Solution #3, on the other hand, could be the magic bullet that solve all the problems, because it would require no coordinated efforts, no collective agreement (and therefore no committee) requiring that anyone did anything. One would still have to find the funds to build the water-filtering devices, but that is another issue.

The magic-bullet solution is attractive to me, as it is to many people, because it is the one most removed from politics, and the problems associated with it. But such a solution (one that doesn’t require some kind of personal responsibility and collective coordination) is rarely available.

Essentially I agree with you, here, I don’t think there is any elegant and complete solutions to our complex problems. It is always an on-going process.  



19 Nov 2006 @ 21:18 by ming : Thingamy
Cool. Hard to wrap one's mind around. I just watched the video. I've better write something about that.  


29 Apr 2016 @ 05:04 by Lilly @188.143.232.32 : BXYgcbNLVRcQw
I was wondering if you ever coniedsred changing the layout of your website? Its very well written; I love what youve got to say. But maybe you could a little more in the way of content so people could connect with it better. Youve got an awful lot of text for only having 1 or two images. Maybe you could space it out better?  


Other stories in
2014-09-27 00:04: You must be an expert by now
2014-09-26 15:15: Brevity
2011-11-06 21:33: Counting what counts
2011-01-23 13:46: Authenticity
2010-08-23 01:31: Semantic Pauses
2010-06-27 02:28: Doubt
2009-10-25 17:04: Opinions, perceptions and intuition
2009-10-15 08:32: Abstraction
2008-06-29 16:47: Complicated and Complex
2008-02-20 16:39: The universe as a virtual reality



[< Back] [Ming the Mechanic] [PermaLink]? 


Link to this article as: http://ming.tv/flemming2.php/__show_article/_a000010-001708.htm
Main Page: ming.tv