Jun 08 2008

Wegner’s Lemma and System Proposals (Agility vs. Ridgity)

Filed under: Uncategorized

I do not have an extensive background in science. My soon wife does. She will have her PhD soon. In researching Scrum and Software Project Management, I ran into this thing called “Wegner’s lemma” and I asked her what a Lemma was. She asked if it wasnt one of those monkey-type animals. I told her she was thinking of a lemur, and realized that this is probably not science and should stop bothering her with more philosophy and theory that isnt about nanoparticles.

Lemur, not Lemma

From what I can tell, a lemma is somthing that is assumed to be true so we can move forward under a given premise.

From Jeff Sutherland:

Wegner’s lemma - an interactive system can never be fully specified nor can it ever be fully tested. This is the software analogy to Godel’s theorem.

And now I have to mention Godel’s theorem. A theorem is a bit stronger than a Lemma. It has been banged on my scientists and other smart people, accepted as true or at least, having merit.

What’s with the fear of commitment? I guess you cannot apply Scrum principles to mathematics or logic. I am a big fan of logic (Ayer, especially), and so I understand. What I dig about Ayer is his principle of nonsense. I am sure if my old Professors heard me call it that they would choke on their oatmeal, but Ayer says that any statement that cannot be proven true or false is nonsensical, and that every statement that can be proven true is a tautology. Makes good, tight, sense to me.

This is not wholly irrelevant to software engineering. Bear with me.

I am going to cop out a little here, because it give me a headache, but you can read about Godel’s theorem here. It has been extended into many different verticals, disciplines, and websites. It seems to be just short of a Law. If it interests you to understand it’s complexities, please pursue the aforementioned link. You will find many other links there.

Below, you can read about how all this applies to your approach at scoping a software System and creating a proposal.

Lots of clients want a firm proposal with a firm, fixed price. They probably have experience with manufacturing processes, and so the Waterfall approach makes sense to them. This understandable. Software Engineering (new development), however, is not manufactuing. Unless you are prepared to eat potentially copious personhours of labor or fall short of customer expectations, you need to build a little slack into your proposal. This is classically done by using a multiplier, or by pricing iterations. Always seemed a little sneaky to me. The line item “Slack” reads like a copout.

Wegner’s lemma speaka to the validity of an iterative process of discover, code, deliver; indeed, it was one of the arguments used to support and ititiate the pursuit of Scrum before Scrum had been proven. Scrum is not new, contrary to popular belief. I mentioned in a previous post that we had something very similar to scrum at my family’s construction business, but it has been a software process for over ten years. It is finally getting real traction. If it did not work, you would not still be hearing about it. That’s the good thing about theories, I guess; if a theory proves to be bologna, you stop hearing about it pretty quickly.

You have three ways to approach a software proposal, if not more:

  • You can spec out a Big Up Front Requirements Phase and Development, QA, Implementation phases.
  • Similarly, you can spec out a Big Up Front Requirements phase that with speak to a more informed development phase, probably with iterations or a release schedule
  • you can argue Wegner’s lemma and say that really, “we will not know what we are going to bump into until we bump into it, and as much as we have some historical information, your System is unique and to commit to anything besides something wholly unsatisfactory would be plain dishonest.” More formally, “your system will require an iterative approach, because when it is being developed, it will be done so within a dynamic environment that we would love you involved in so you can have transparency into the process and control over what is prioritized. Also, your system is new development, and there are many ways to approach it. We need to determine, along with you, what will work best. We are very good at building software, but equally important is our skill at building the *right* software”… or something.
  • Give transparency into your process, deliver frequently, and this is pallatable. “Tust me” rarely works in the absence of a bullet-poof reputation of long-standing relationship.

    There are really two options: commit to a Contract or commit to a Contracted System. A contract is not flexible and does not benefit anyone when it asks them to commit to ambiguity. A System is much more robust.

    Here, we invoke Wegner’s lemma and our experience building software. Again, the requirements wind up being the source code.

    Of course, I think the best is a combination approach. Do some initial requirements so you are not playing code cowboy. Then, engage the client in an iterative approach, grounded in a proven iterative methodology (like Scrum or XP or MSF) and keep communication open. If your client is able to see progress, they will not see your function as a black box. And if you make them the Product Owner, allow them to prioitize features (user stories), they will not have to ask why they do not have feature X yet. They will have asked for features D and E and delayed feature X in a calculated decision.

    PS: As an asid, I’d like to mention, I am not really digging this new version of WordPress under FireFox. It is slow as anything. Under Opera, it seems a lot better.

    Update 061108

    Craig Brown is one of my favorite readers. He always has interesting comments (or he did, when I allowed comments… and there are 2 reasons I don’t anymore) and I wind up reading his blog and learning something when he engages me. That’s right Craig, you engaged me.

    I want to respond to Craig directly because he is a smart guy that I respect although for all I know he has a suit made of human skin. I am not suggesting that people start contracting a system as much as I am suggesting that part of the client engagement include education and that *our* discipline stops being so defensive and starts getting down and dirty with the critics. I want real metrics. I want a marketing machine. I want what is best for humankind. I am a very sweet guy.

    I have not seen software engineering really face, head-on, the world of clients who expect the more traditional manufacturing model. In contracting a system, I am suggesting that clients understand what they are contracting (in an Agile model) and I do think it is any more similar to “time and materials” than hiring any specialist is. Take a large investment firm. Go to them as a small software company and ask they to just trust you because you will be giving them frequent updates.

    My doctor gave me frequent updates during my colonoscopy.

    I invoke Wegner’s lemma and neglect to get into it deliberately. I maintain that project management and indeed software engineering as a whole are less science than art. Sure, we have color theory, but when it comes down to it, either you got it or you don’t (ability). We need more talented, open-minded, caring people who want to produce to the best of their abilities and not just slap “PMP” on the resume because it gets you a 20 percent higher salary and financial institutions wont talk to you without it. This will change SOON. Mark my words. We are going to see a hybrid of hybrid models. We are going to become trailblazers instead of pencil pushers.

    BTW - I am not a pencil pusher. No Sir-ee Bob.

    This applies to PMs, BAs, and software engineering firms. I do not understand Wegner’s lemma, but it has been fodder for the Agile community and I would like to see that stop. We do not need more pseudo-science or forced analogies, any more *almost* universal techniques, excuses, or approaches. We need to be honest and upfront and tell it like it is.

    I invoke something I do not find palatable because I have a degree in philosophy, and it taught me one thing; you can talk theory all day, but at the end of the day, it is mental masturbation (excuse me) until you can actualize, materialize, and deliver something tangible. Tangible may take the shape of an idea. It may be a widget. But still, Wegner’s lemma does not manifest directly. We should not point to it for excuses.

    Instead, we should progressively elaborate (sorry PMI) as a community and make change. Agilists become frustrated when you ask them “When and how much?” and I think it is a shame. We can give answers. We just cannot commit to a specific figure unless we

    - are prepared to lose money
    - pad our estimates heavily
    - have done it before and are just generally amazing
    - define scope and really insult the customer when our scope doc, that we knew was incomplete, falls short of being complete

    Thanks, Craig.

    Josh

    May 25 2008

    Let Developers Be Developers; Agile Project Management

    Filed under: Project Management

    There was a movement some years ago towards standardizing Federal Sentencing Guidelines. It succeeded and indeed looks about Olympian as the Ten Commandments. The rationale behind this effort had to do with the prejudices that a given environment (Jurisdiction or Circuit) may have towards the people who live within that environment. Minorities were consistently receiving harsher sentences than their Caucasian or more wealthy counterparts for the same offenses - particularly in certain areas of the country. This led to a Draconian, grid-style sentencing guidelines table and the mandate that if a judge departs from this set of guidelines they will have to defend their decision. Judges, after the mandates imposed by the Sentencting Guidelines, are no longer afforded a substantial measure of influence over the sentences they find. Judges became cogs in the wheel of Justice (yes, I know it is a scale, but work with me here). This is slowly breaking down with the United States v. Booker, and will ultimately become more agile. What is important to keep in mind is that the motivation behind standardized sentencing was the desire to eliminate the possibility of unfair treatment. Indeed, to the letter of the law, everyone gets treated equally. But is it always effective? Is it always appropriate to forego human factors, environmental factors, etc? Is a single methodology that removes the individual from the equation appropriate for the sentencing of individuals?

    Is PMI or RUP or (name your PM buzzword) the right approach, always? Even under optimum conditions?

    Needless to say, there are many who resist and resent the Federal Guidelines. What resulted was the “Let Judges be Judges” movement. It stipulates that a codified and pseudo-scientific sentencing approach does more harm than good; it eliminates the ability for special circumstances to be taken into account and for Judges to judge. This is over-simplifying a bit, because there are downward and upward departures, but the overall spirit of the Let Judges be Judges movement is that people are individuals and a crime is never committed twice - just like a project is never executed twice. Circumstances are dynamic and cannot be disregarded, deemed secondary to an overarching Guideline, or taken as less than the very essence of the situation.

    In law, and in software, it is imperative that a blueprint is regarded as a guideline, not a mandate.

    And so, with Agile Software Development, we have UML models that serve not to define the System, but to help us realize the System. The Agile Project Manager, once preoccupied with resources and tasks and WBS numbers and bars on Gantt Charts… becomes an advocate. They are not managing projects as much as they are acting as the catalyst for progress and the liaison for the client, the technical staff, and the stakeholders/product owner. They are the Quarterback, but they are also the Cheerleader. Yes, I am man enough to admit that.

    This is a different kind of Manager. Soft skills are very important. Empirical data becomes more important that speculative data, and a PM must learn that although they might be the grease, there are no interchangeable parts to lubricate. One developer is not the same as another. The Mythical Man-Month is real. Finesse is as or more important than .mpp skills. It is hard to quantify these skills, but it can be done.

    Under a more Agile roof, developers are given the freedom to make decisions about development. The artifacts that served as definitions now serve as visionary guidelines, and the people who existed to enforce methodologies (Procrustean, minus the torture) now enforce principles. Judges can be judges. Decisions are made by informed people within their domain of expertise.

    While PMI and the like will speak of “continuous integration”, this is misleading (in my opinion) because it again assumes that a larger dictum is in fact, universally true. We all know that in complex software Systems, there is no final blueprint until the source code has been written. Software Engineering is not like Building Construction, and although the attempt to establish a toolkit that can accommodate any endeavor is admirable and would be helpful for sure, I submit that the toolkit itself assumes specific functions and constrains more than it assists. The Project Manager looks to their toolkit to manage projects. It is as simple as that. I have read more than a few posts by PMI or Rational PMs that vehemently deny the utility of an Agile approach. I can’t help but wonder if they are a bit worried that this Agile thing will continue to get traction and the PMP will not be the litmus test for HR anymore.

    In Complex Adaptive Systems, the team organizes itself and adapts, often without outwardly discernible impetus or organization, in response to developments in the project or effort. Watch a flock of birds. A school of fish. The fans at a Yanni concert. These are large groups of individuals that move or act together without being told to and do so more effectively than if they had to follow a list of rules. Everyone breaks out a lighter and sways without being told to. If I have two and you dont have one, I give you one so you can be part of the magic of the Whole. The whole is important. The vision is important, and the Project Manager without her/his Gantt Chart may feel naked.

    Software teams are Complex Adaptive Systems. The Project Manager serves to foster the product vision, remove obstacles, assist the individual team members, and play Captain Kirk, keeping the Prime Directive in mind at all times.

    Let Developers be Developers. They know how to fix a problem with message queuing within a Host Integration Services project using WCF better than a PMP does. Why insert the PMP into the picture to break down into tasks and subtasks what the dev already knows and can be done with before the spec is written? Code, test, code, test, show, code, test, show, etc. Test-driven or feature-driven development will keep you safe.

    Interestingly enough, and I will write more about this later, in science and the fascinating world of drug discovery, a test-driven approach to development is the norm. You could say it is the only way to do it. But I will get into this later. I need to quiz my wife (a PhD student in drug delivery systems) before I say too much.

    :)

    It is very liberating to participate in an Agile development environment, and if you are lucky enough to have clients that are on board with the process, you can do amazing things. I am (partly) a Project Manager. I do not like Gantt Charts. I like CAS theory and Agile philosophy. If you have been reading my blog for any period of time, you will recognize that my beliefs are shifting. I maintain that requirements are valuable, and I still really dig UML (I can do Sequence Diagrams complete with 2.0 compliant pins that will knock your socks off, and Context Diagrams are just plain handy), but these are not artifacts forged from stone. They are not Olymipan.

    Keep it Barely Good Enough, keep it useful, and allow talented people to do what they are talented at.

    Viva Agilidad!

    Okay, thats cheesy.

    A good read.

    Be well,

    Josh

    May 11 2008

    BeeJive IM Client for Blackberry and iphone

    Filed under: Uncategorized

    I am writing an awful lot about IM clients lately. Not sure why.

    Regardless, if you have a PDA or BlackBerry, you need to check out BeeJive simply because it is the most intuitive, easiest to install, best IM client I have found for handheld devices. The people there are cool, too.

    Consider this a plug. I had an 8703e and now sport an 8830. I was going to get the Curve now that Verizon carries it, but I picked one up and ewwww it felt like a toy. I like my solid 8830. I was it was solid chrome and heavier, but it’s cool. As much as I will never go overseas with it, or at least have no intentions on going overseas with it, I will keep it. Sure, the Curve has a qwerty with space between the keys, but could they make those keys any smaller? My big fat thumbs can’t handle something so precise.

    Anyhow, BeeJive. JiveTalk Mobile Messenger. Get it. They have it for iphones and have a Windows Mobile version getting ready for prime time.

    Best,
    Josh

    May 09 2008

    Trillian Astra: Digsby Killer?

    Filed under: Other

    I just blogged on how much I like Disgby and how I like it better than Trillian. That was a hard fact to swallow.

    And today, someone IMs me and tells me about Trillian Astra.

    Man, do things change quickly.

    It looks sexy. It looks pretty cool. I don’t care about MySpace messages or emoticons, but it looks pretty slick from the screen shots and I like what I read about the functionality. I dont tend to install alphas, but I just might… this one time…

    Take a peek: Trillian Astra

    J

    May 09 2008

    Free Full PGP Like the Old Days

    Filed under: Other

    I had a hard time figuring out where to find the older versions of PGP. The older versions had a wipe free space command, command-line functionality, and all kinds of other stuff that they are charging for now. Zimmerman had PGP as an Open Source, free project. Then, some weirdness happened (I wonder) and it was sucked up by a corporation.

    Anyhow, here, for your enjoyment, is the freebie PGP 6.5.8

    There was some controversy as to whether or not this had a “back door” for G-MEN. I don’t believe it, but it might matter to you in principle. I only post this here because PGP is a very cool product and what Zimmerman did in regard to opening the code to the world (when the government decided that PGP was a threat) was brilliant. I dig the product. Or, I dug it. When it was free. When the philosophy was indicative of something new and well-intentioned.

    Take care,

    Josh

    Oh yeah, thanks to everyone who wrote me and said they liked the new layout. I do too. I wish I could say I implemented it (sounds harder than ‘turned it on’) because of aesthetics. That was only part of the reason. My version of WordPress had a crazy security vulnerability that allowed some loser to insert tiny iframes into my blog (to poker sites) and I had to upgrade. It wasn’t too painful of a process, and I got a little more freedom with my design. So, thanks, and Google: you can re-index me now. Please. Like, soon. You just send me an invite to your App Engine. You know that I am a good guy with a nice, safe site. The emails below show that I was approved for the app engine while being declined for content indexing. What does this mean?

    I know what it means. Evil Empire!

    ;)

    J