Thursday, September 06, 2007

Agile discussed by Jerry Weinberg

In an interview with PMBoulevard Gerald M. Weinberg states his opinion on agile Methods.

From that interview:
Q4: What is the future of Agile?
First we will drop the capital A. Then we will drop the term "agile" altogether. Agile methods will be successful if and when we stop seeing them as anything other than normal, sensible, professional methods of developing software.

That even someone as renowned in the field of "conventional" software development as Jerry Weinberg points to the common sense embodied in these methods makes me hope that someday the waterfall-style methods might vanish alltogether.
(via Jerry – of course)

Saturday, August 25, 2007

Divas and Geniuses

In a blog entry from the start of the week Mark Masterson cited from the lessons learned document of a past project:


"Change the design / architecture to reduce reliance on the divas"


That reminds me of a former client of mine who used to say
"If you've got a genius in the team - get rid of him"


At first that's rather sad, but after a while - and with changing responsibilities - I came to realise that there can be situations (actually lots of them) where the advise is absolutely sensible.



It can be sensible because most developers are of average capabilities!
After all - that is exactly what average means.
Therefore the probability to have "above average" developers declines with the size of the project (and the organisation) simply because of the definition of average.
Even if all (or at least almost all) the developers in a certain team are "above average" (e.g. compared to some outside group of reference developers) most of them will - by definition - be of average skill within the team. That's where the "get rid of the genius" sets in.



If one of the persons on the team is way ahead of all the others - lets say she is a specialist in compiler construction - their advantage can become a disadvantage for the team as a whole. For those "geniuses" TSTTMPW (The Simplest Thing That Might Possibly Work) probably is quite different from the things the rest of the team perceives as "simple".

Configuration files are a good example - while plain text with very little syntax is the "simple" thing for most of us a specialist in compiler construction wouldn't mind using a sytax that is "syntactically a little richer" to gain simpler implementation. He might end up with a configuration language like sudoers' - where guides to the grammar (defined in EBNF) and the grammar's grammar are provided in the manual pages just to give the average user a chance to understand sodoers.


Actually I worked on a compiler project myself way back in the 80ies and used to be kind of fluent in BNF, but figuring out sudoers still took me a while. And judging by the amount of

<username> ALL=(ALL) ALL

(basically: allow <username> to do everything he wants as root)


that I've seen on other peoples Macs not many of them go to great depth deciphering the format...



Back to projects: Of course the idea to get rid of every smart person in the team would not be the best option - unless you want the project to fail.

But the "geniuses" - or, to be fair: those who have advanced knowledge and/or experience compared to the rest of the team - have to be handled carefully. Only for very isolated tasks they should be left to work it out all alone.

For the rest of their work they ought to work closely together with other team members as long as their personality allows them to adopt their ideas to a level thats appropriate for the whole team. Should the latter not be an option then option one is valid again of course - the team should get rid of 'em.

But in my experience that is seldom necessary Most geniuses are quite willing to agree on a sensible level of "simple" as long as their is a sensible discussion.

So after all it no so sad anymore. The bottom line of my job is not to get the "best" possible solution but to make the team as a whole as effective as possible



_MM_

Sunday, August 19, 2007

Contracting Principles by Gerald Weinberg

I may not agree with everything he said, but the principles lined out by Jerry in his post on how to prevent consulting misery are a good starting point for everybody who is trying to figure out how to shape their relationships with their clients in a healthy way.

Monday, July 16, 2007

New Blog in Town

Since not all the things I want to talk about are really that relevant to an international audienc I just started another blog for the local topics.

...ups wrong link at first - sorry ...

Friday, July 06, 2007

From Cavedrawings to Hyroglyphs to Times New Roman - and back to Cavedrawings.

Sometimes I don't understand our business...
Just recently I listened to an interview with Grady Booch where he (once again) emphasized that he never intended the UML to be used for programming (i.e. as a programming language).
I‘m a proponent of visual modeling myself and after experiencing the method wars of the nineties I'm glad that such a thing as the UML unifies the meaning of arrowheads, boxes and dashed lines.
But I just can't understand why people think that they will be able to describe complete software systems of all kinds in pictures (although it's quite possible for some domains and to a certain level).
When thinking of the written word and picture I just can't avoid to think about cave drawings and "real" writing.
It‘s very common to judge the development of a civilization by it‘s capabilities to write. Or as Wikipedia puts it:
Historians draw a distinction between prehistory and history, with history defined by the advent of writing. The cave paintings and petroglyphs of prehistoric peoples can be considered precursors of writing, but are not considered writing because they did not represent language directly.
So where does it put our so called "industry" when some of us attemp to describe complex systems in pictures alone?

Wednesday, June 13, 2007

Talk: "methodological software development"

As I said - I'll try to keep this more current...

As mentioned in my previous post I just returned from my talk at the GI in cologne and besides the issues with the colour of my slides I think it went quite well.
I surely would attend the GI meetings more often if only they where not on tuesdays - the athmosphere was rather open and the discussions gave some rather interesting pointers.

For those who would like to see the slides again: You can download them from www.michaelmahlberg.de/GI-MethodenMichaelMahlberg.pdf. But you should be prepared for a somewhat lenghty download - apart from the "slightly" dark appearance on screen a textured backdrop tends to create large pdf outputs... in this case about 10 Megabyte...

Lessons from my last talk

As some of you may know im a big fan of Presentation Zen and try to follow some of the ideas in my talks. Today I was reminded of a few lessons I should have thought about beforehand:

No matter how cool your slides may look with that subtle gray-in-black backdrop and the translucent, intersecting areas - don't rely on it. Always keep a second set of slides handy that is optimized for bright ambient lights if you can't check the location beforehand! It's not important how it looks on your screen or in your controlled environment - it's import how it transports your message during the presentation. Therefore: bright coulours and high contrast for all unknown environments (at least as a backup).

Although I believe that a presentation is not the set of slide (i.e. you can never mail a presentation to someone - you can only mail the slides) I tend to put some effort in slide-design and so they ought to look good.

The other point is file size - since I converted to the Mac I tend to adopt a somewhat disrespectful attitude regarding the size of elements I use in a presentation - that's allright as long as the main point of the slides is to support the talk. As soon as I want to distribute them I could be running into trouble - for example when a simple 37-slide slideshow results in an almost 10MB pdf...

regarding the talk itself ... see next post

Wednesday, June 06, 2007

Upcoming Talk(s)

Following some examples from colleagues I'll try to post a little more information on my upcoming activities. Right now the list contains only one talk, but I'll try to keep the information on this blog more current in the future.

  • I'll hold a talk on the state of the practice of "methodological software development" for the Cologne chapter of the GI (Gesellschaft für Informatik / German Chapter of the ACM ) on June 12.
    The talk will give a quick (20 minute) overview over practical experiences with applied development methodologies from SADT and IEM to XP and Scrum over the last two decades.
    Unfortunately the website is not quite up to date yet, but at least the location plan ought to be correct.
BTW:
Is "praxis-talk" really a legal english term?

Saturday, June 02, 2007

Are technical topics no business topics?

I started to write this about a year ago - I think it's time to finish my earlier posts to get at least the basic ideas behind them in writing before I try to start new topics.

Every now and then I come across the silly notion, that technical decisions - like "Java Yes, Ruby No" - are considered to be "not of business relevance" and are to be left to the "IT department" since "the business folks wouldn't know anyway".

Apart from the inherent hubris from "IT" people with that attitude I think this point of view is rather short-sighted. If there are implications the business is not aware of it is the solution providers responsibility to inform the business people.

But - getting back to Java vs. Ruby style questions - to build a certain application with an estimated life-span of 6 month (e.g. because there is a legal requirement for exactly that time-span) might be a sensible thing to do in language 'Y' while it may be more sensible to assign two interns to do manual data corrections than to build an application using language 'X'.

You may substitute X and Y in the above paragraph with Ruby and Java respectivly according to your personal bias (or - for that matter - with any pair of programming languages) but the business people really should have a the last word in the decision.

ceterum censeo: We (including me) should really stop using the term "IT" ... if only I knew a suitable substitute ...

Friday, June 01, 2007

Dictatorship of the Dominant Decomposition

Well I thought this was well known, but obviously it isn't - a least outside the aspect-oriented crowd. So here are a few pointers for starters.

As a matter of fact I was wrong about the phrase though - it is called:
The tyranny of the dominant decomposition
(scroll down a little in the Glossary)

The original Papers can be found at ibm's reasearch site. Opposed to the AOSD glossary my preferred paper is the one about Multi-Dimensional Separation of Concerns. The one about Morphogenic Software is still worth a read though.

Thursday, May 31, 2007

MacBooks on the Rise: Tools revisited

More and More of my friends, colleagues and acquaintances turn to Mac OS X so I think its time to revisit my list of essential tools.
The List is based on personal experiences and my starting point were:
Lets start with some picks from Stefan's list (for a detailed discusson of the applications he used to like at the time see his list):
  • Stefan's Emacs is (of course) replaced by vim/gvim on my list - unfortunately not as nicely ported as on Linux and Windows - but it still does the job for me.
  • Quicksilver definitely is a must - when working on windows one the the shortcuts I use the most is Windows-R (Run a single "Command"). Quicksilver goes far beyond that and is indispensible on a Mac when you're a keyboard addict.
  • Terminal (iTerm) omitted - no advantage for me. I'm happy with the built-in Terminal.app
  • The Omni Group's productivity suite was also very basic (not as in "simple", but as in "need to have") stuff - at least if you have to organize thought and discussions (OmniOutliner) and draw expressive diagramms and pictures effectively (OmniGraffle). The browser (OmniWeb) was a nice add-on but tends to interfere with my powersaving options so I switched back to Safari (the built-in browser). Unfortunately the productivity suite seems to be no longer available - wich makes it easier to focus on the important products.
  • Talking about browsers: Of course different browsers like Camino and Firefox come in handy if I use any Web2.0ish sites (and how could I avoid them nowadays)
  • Instead of ecto I went for Qumana for blogging - and ended up using a texteditor, and OmniOutliner for the job ;-)
  • I always preferred Addium over Proteus, but since AIM- and ICQ-user can also be reached via the built-in iChat I don't use any of them any more. For more compatibility with windows users Skype (> 2.0) comes to the rescue.
  • Ssh-keychain: well - yes i use it too.
  • And allthough I do very little development on my Mac Eclipse really does a great job for those little chunks of java that come along.
Now lets look at my ~/"Application" and the main "Application" folder.
Here we've got (noteworthy only):
  • Productivity
    • I can't work without a mindmapping tool. My Choice is Freemind - a java based application that runs nicely on Windows and OS X. And with a little finetuning it even shows the brushed metal look and feel of OS X.
    • Another "promiscuous" application as Larry Ellison might have said in the early eigthies is GanttProject which also runs on windows allmost as well as it does on a Mac. A simple but effective tool - for those situations where you just have to visualize your plans in such a way - that is written in java..
    • Every once in a while I have to make a little note. Using quicksilver I usally just start up a texteditor, make the note and save the file to the desktop. But I'm trying to change to sidenote - it would be so much easier...
    • AquaPath (again a recommendation from Stefan) to play with XPath expressions.
    • I'm quite happy with vim/gvim (I think I mentioned that already ;-) ) but sometimes a more GUI-ish editor is helpfull. That's where Smultron enters the scene - I'm not yet in the need to get Textmate.
  • Not necessary but nice
    • The MBPs are known for there "offensive" thermal behaviour. And even though I know that there is little to worry about I still like to check with Temperaturmonitor.
    • WordPod is a nice little tool to transfer textfiles to an iPod for reading - not heavy in use but usefull.
    • AudioRecorder as a lightwight alternative to firing up GarageBand just to record a few minutes. Saves directly to an AIFF, Apple Lossless (M4A and MOV), MP3, MP4 (M4A and MOV), or WAV file.
  • The office stuff
    • Pages and especially Keynote are some great alternatives to the standard MS-Office apps. So iWork was one of my first aquisitions (actually I ordered them together with my Mac)
    • But still - since most of my clients are hooked on Microsoft MS-Office is a must.
    • And for those who try to avoid the MS-Office trap and turn to OpenOffice NeoOffice is my choice of interaction.
    • Whenever I have to fiddle with graphics that I can't handle with OmniGraffle or the built-in apps (iPhoto does it for 99% of my photo editing whishes) Posterpaint and Seashore come to the rescue.
    • The essential tool for web development of course is a texteditor! ;-) But the way CSSEdit lets me fiddle with css styles is unmatched by anything I've seen before. Coda might turn out to be a great addition, but im not yet sure.
    • Being the lazy person I am I try to avoid typing as much as I can. RapidoWrite helps me by replacing abbreviation with any text I like (as long as I've defined the abbreviation of course)
  • One of the nice things about OS X is the fact that pdf is a native format. Still some tools come quite handy for some Tasks.
    • PdfMergeX gives a little more flexibility to the handling of pdfs.
    • PDFView is an alternative to the built-in Preview application and is in some ways more "natural" to the eye.
    • Although many printer drivers allready support "brochure" layout CheapImposter is my tool of choice if I want to be able to create brochures on not-so-smart printer without duplex capability.
    • With Yep! there's a great alternative to searching pdf all over my harddrive - and I really should use it more ...
  • System tools
    • SyncTwoFolders does exactly as the name implies - great for keeping USB-sticks up to date.
    • Going back in broser's cache is not always easy - but Retrospective makes it easier.
    • Even a nnn-GB drive gets stuffed after a while. With Filelight and GrandPerspective it's easy to identify the hotspots - actually I use almost exclusively GrandPerspective - Filelight is just an alternative for "special cases".
  • Connectivity
    • As always the Mac (at least mine) just works when it comes to wireless networks. But sometimes I want to now why and how. iStumbler doesn't tell me to much about my system - but it tells me all (almost) I want to know about the WiFi networks in my vicinity.
    • And once I'm connected to a network Flame tells me wich bonjour services are available. (Run in an airport lounge just for fun - it's amazing how many people intend to share their music and printers whith everybody. Especially considering the fact that you deliberately have to turn on sharing in OS X)
    • The built-in Mail.app does almost exactly what I want - but sometimes I just want to check my mailbox just to see if it's expedient to burn bandwith (think of UMTS/GPRS in aforeign country) by really accessing my Mailbox. Thats where MacBiff - an IMAP-savy menu extension is exactly what I need.
    • Even Apple doesn't always get it right - to really get the best compatibility with my Palm I needed to install the MissingSync. Now everything works fine.
  • Multimedia
    • VLC - any questions? Handles all the video formats out of the box.
    • But when I use Quicktime I sometimes would like to run it fullscreen. Thats very easily possible by sendig AppleScript command to the player - even without the "Pro" version. Fullsceen4Free does exactly that and includes a (nice?) GUI.
    • Before CoverFlow was integrated into iTunes i definitely liked it better. May or may not be available in the future. Last download possibility I knew was at MacUpdate
    • One of the esential tools for iTunes is of course beaTunes. This tool analyses Songs not only by BPM but also by "colour" - kind of representing the overall mood of the song - and really helps building better playlists.
And - last but not least - the system extensions I use
  • Although not really necessary, Growl is very helpfull when many application are running in the background and their user notification shall appear at least somewhat co-ordinated.
  • As you might have guessed by my use of Temperaturmonitor I really like to know whats going on inside my machine. MenuMeters provides exactly the information I want.
  • Even though the MDI-Interface is the standard for OS X applications there is no standard way to acces all the windows vie the keyboard. Witch gave me back the capability to "tab" through all open windows. (Arguably thats not really necessary once one gets used to exposé)
Oh - did I mention dashboard widgets?
But it's getting late, my battery is almost empty and I still got a lot of other work to do - so here's just a taste...

Wednesday, March 14, 2007

You want better estimates? Give us more dice.

I'm not sure whether the title works in English, but regarding the way projects are installed in some companies I started to attain the aforementioned attitude.


This is especially helpfull in situations when you're asked "We're not yet exactly sure what we want - but how much will it cost?"

In German: "Ihr wollt bessere Schätzungen? Gebt uns mehr Würfel!"


Powered by Qumana

Monday, December 18, 2006

The 'T' in 'IT' is the worst thing ...

...that happened to 'IT' in the last decade.


Once upon a time...
the craft of software development was performed under the umbrella of data processing and those performing the tasks had titles like programmer, designer, analyst or something along that line. Some of them even came from "computer sciences" or "informatics" but: all of them acted on data or information.


Nowadays - I'd say since the late nineties of the last century - there seems to be a clear line between "business" on one side and "IT" on the other. That wouldn't need to be too bad, but since the "T" in "IT" stand for "Technology" it is.


The "Technology*" metaphor affects both sides. Developers, projects managers and even (software) analysts and designers just take the input - be it concepts or orders or functional descriptions - and try to implement it (or design the system) as good as they can. Business analysts - or who ever describes the content of the project - concentrate on their part of the story and ignore any technical implications.


Sounds fine - doesn't it?


Unfortunately it does! But this seemingly sound separation of concerns is in fact one of the main reasons for time-and-budget overruns, immense time to market durations and similar problems (aka "the new software crisis").


Lets have a slightly closer look at the problems arising from that separation.


Technology & method savvy people get confined to the "techno-space"


Putting all those people with systems design education and experience on the technological side of the imaginary "IT fence" leaves no-one with up-to-date knowledge on the business side of that "IT fence". Of course some business analyst are happily nudging away on the business side of the fence, but they are clearly in the minority.


Most businesses are un-precise by definition - so that is what the business people need to be


To be successful in business a certain degree of leeway is absolutely necessary - people (and most customers are people, even if some of them - namely some of those from the centralised purchasing departments - try to hide the fact) are extremely informal in their perception of the world and in order to generate business you'd better be flexible too.


Business problems don't have to be hard to be expensive - it's sufficient if they are based on "common knowledge"


In the early time of software development software simply was the only way to solve very complex but well defined problems. Finding the correct trajectory to shoot three people from florida to the moon would be one of those well defined but complex problems. Later on there came other types of problem: seemingly simple problems with ambiguos definitions - lets say tax collection. Although theses are 'not exactly rocket science' and you easily get along with the four basic calculation types there are volumes and volumes of law textbooks and interpretations even for one type of tax.


The problem gets worse when people try to describe - or even define - a process 'unambiguously' without proper knowledge. Just try to describe the behaviour of a lift without diagrams. Now add time-awareness and route optimization. And add a second lift, coupled with the first one.


Formal methods should be applied much earlier


Now if you thought of all those fancy diagrams from one of your favourite methods to describe the problem above your probably living rather close to the "T-fence". I personally cross the border very often - either from one assignment to the other or during one single assignment - and every time I introduce some little formal method to business people I am overwhelmed how fast and efficient these methods are applied. It's not that these business people are dumb or ignorant - the problem is just that they don't have a focus on formal methods and are often actively separated from them by the IT-departments.


Agile processes try to circumvent this problem but fail to consider typical german mindsets


It's not only that business and IT use different (formal) languages but also the distance a piece of information has to cover to get from people thinking "business" to people thinking "systems" and back. So the poor guy trying to implement something has not only got to figure out how to implement it but also "what did he/she think that he/she thought what he/she was thinking - and what the heck could be the business reason behind all of these interpretations?". These assumptions - made by the last poor guy in the line - are what eventually make the systems work.


In my opinion the agile processes are a very good way to bridge the distance from business thinkers to systems thinkers (e.g. by placing them very close together) but they unfortunately fail to take local (in this case German) mindsets and organisational patterns into account.


To effectively overcome this situation the "fixed price addiction" (as one of the more direct agile protagonists once put it) has to be overcome - but I'm afraid that will still take a while. In the meantime it could help offer more support to business people earlier.


"bring together, what belongs together"


On the other hand it might be a good idea to allow for more business awareness in the IT-Departments to become more of "systems thinking departments". Although most of the systems work in the end they could get there much faster if the implementing departments would be willing to think more business oriented.


Although this will probably not happen any time soon (at least in Germany) this is one of the occasions where a small step backwards might turn out to be a giant leap forward. So perhaps it's not only about insourcing ousourced IT-departments but about integration of IS knowledge.


Stop using the term IT, make it IS (Information Systems) or something even more appropriate.


Any suggestions?


* BTW: It is even worse with the german word "Technik" because that is often interpreted as "mechanics".


Powered by Qumana


Thursday, October 19, 2006

Reuse considered harmfull?

Although sometimes treated like the "holy grail of the software industry" reuse has never appealed to me as a primary goal.
After I discussed this topic with Olli (sorry: no blog, no personal homepage => no link) last week he dug up the diploma theses from Rupert Stützle (in German) called "Wiederverwendung ohne Mythos" (roughly: "Reuse without myth") which puts a little foundation behind my gut feeling.


I've personally always considered reuse to be an indicator of good architecture and design but the real goal for me is to to have flexible systems where the change impact is as localised as possible. I'll have to take a look at the theses to see if that point of view is also backed up by hard facts.


Powered by Qumana


Sunday, September 03, 2006

Location Changer: Good Idea, unlucky (for me) implementation

I just gave WiLMa a try run and prompty had to reconfigure my mail system. Here is an excerpt from my mail to the author:


One of the great things in apples Mail.app (unlike the last version of T-Bird I tried or some other mail clients) is that it handles SMTP-Servers on an account basis.
I don't use an open SMTP-Gateway and I neither like nor encourage open SMTP-Gateways. Therefore each of my outgoing mail addresses (private, business, community work) has to use its own SMTP Server/Gateway.
The first time I started WiLMa and went to the 'SMTP Servers' pane I knew I was in (mild) trouble: Only one SMTP-entry...
I switched to Mail.app and guess what: All accounts already bore the same entry for their SMTP-Servers. And obviously one of them even disappeared from the list (probably because I have two account on the same machine).


At least my other system settings were left alone (sigh), and it only took about 10 Minutes to reconfige the accounts. (Testing included)


Update, less than a day later:
I just got Mail from the author - he really seems to be very responsive, so I think I'll give it another try in december.


Here's (part of) what he wrote:
[...]As for the software's initial behavior, I hadn't thought of it from that angle and will try to get this fixed in time for the October release. Perhaps an opt-in for features instead of an opt-out would be a good solution?[...]


Powered by Qumana