Archive

Archive for November, 2009

Black And White Binary Worlds

November 17, 2009 1 comment

In this interview with the legendary Grady Booch, (InformIT: Grady Booch on Design Patterns, OOP, and Coffee), Larry O’Brien had this exchange with one of the original pioneers of object oriented design and the UML:

Larry: Joel Spolsky said:

“Sometimes smart thinkers just don’t know when to stop, and they create these absurd, all-encompassing, high-level pictures of the universe that are all good and fine, but don’t actually mean anything at all. These are the people I call Architecture Astronauts. It’s very hard to get them to write code or design programs, because they won’t stop thinking about Architecture.”

He also said:

“Sometimes, you’re on a team, and you’re busy banging out the code, and somebody comes up to your desk, coffee mug in hand, and starts rattling on…And your eyes are swimming, and you have no friggin’ idea what this frigtard is talking about,….and it’s going to crash like crazy and you’re going to get paged at night to come in and try to figure it out because he’ll be at some goddamn “Design Patterns” meetup.”

Spolsky seems to represent a real constituency that is not just dismissive but outright hostile to software development approaches that are not code-centric. What do you say to people who are skeptical about the value of work products that don’t compile?

Grady: You may be surprised to hear that I’m firmly in Joel’s camp. The most important artifact any development team produces is raw, running, naked code. Everything else is secondary or tertiary. However, that is not to say that these other things are inconsequential. Rather, our models, our processes, our design patterns help one to build the right thing at the right time for the right stakeholders.

I think that Grady’s spot on in that both the code-centric camp and the architecture-centric camp tend to throw out what’s good from the other camp. It’s classic binary extremism where things are either black or white to the participants and the color grey doesn’t exist in their minds. Once a rigid and unwavering mindset is firmly established, the blinders are put on and all learning stops. I try to keep this in mind all the time, but the formation of a black/white mindset is hard to detect. It creeps up on you.

Black And White

Construction Sequence

November 16, 2009 Leave a comment

The figure below depicts a static structural bent SysML model of a small but non-trivial software program that I recently finished writing and testing. It’s a simulator harness that’s used to explore/test/improve candidate “Target Extractor” algorithms for inclusion into a revenue generating product.

Enhanced Extractor

On program launch, a user-created scenario definition file is read, parsed, error-checked, and then stored in an in-memory database. Subsequent to populating the database, the program automatically:

  • Generates a simulated stream of target message fragments characterized by the scenario definition that was pre-specified by the user
  • Injects the message stream into the target extractor algorithm under test
  • Processes the message stream in accordance with the plot extraction state machine algorithm specification
  • Records the target extractor output response message stream to disk

The figure above is a model that represents the finished product – which ended up being the third build in a series of incremental builds. The figure below shows the functionality in the first two builds of the trio.

Build 0 And 1

Even though the construction process that I used appears to have progressed in a nice and tidy linear and sequential flow (like the left portion of the figure below depicts), it naturally didn’t work out that way. The workflow progressed in accordance with the right portion of the figure below, with lots of high frequency single-step feedback loops and (thankfully) only a few two-step and three-step feedback loops.

Dev Sequence

In a perfect world, the software construction process proceeds in a linear and sequential fashion. In the messy real world, mistakes and errors are always made, and stepping backward is the only way that these mistakes and errors can be corrected.

In standard textbook CCH orgs where an endless sea of linear and sequential thinking BMs rule the roost, going backwards is “unacceptable” because “you should have done it right the first time“. In these types of irrational macho cultures, fear of punishment reigns supreme – and nobody dares to discuss it. Fearful development teams either don’t go backwards to correct mistakes, or they try to fix mistakes covertly below the corpo radar. What type of org do you work for?

RIP, Dear Syd

November 15, 2009 1 comment

From an acquaintance on LinkedIn.com, I just found out that Sydney Banks died in May. Syd was a simple and under-educated man who didn’t strive for fame and fortune. He was the first spiritual teacher whose words of truth penetrated my thick Newtonian thinking skull. I’m very sad to see him go.

syd banks

Over ten years ago, I stumbled upon obscure Syd’s work while reading Richard Carlson’s not-so-obscure “Don’t Sweat The Small Stuff — And It’s All Small Stuff”. When I read that small tome, the hairs on the back of my neck kept rising up and I found myself experiencing multiple simple, indescribable, and joyful moments of being. It was weird because the words were so simple, yet they were also very profound to me. I kept saying “WTF?” to myself as I turned the pages.

After finishing “Sweat“, I devoured all of the rest of Carlson’s books and they all had the same endearing effect on me. Curious as hell, I scoured the footnotes and bibliographies to find out where Carlson came up with such impactful and profound thoughts and words. Through at least one level of indirection, I discovered that Syd Banks was at the root of a whole ecosystem that revolved around his work: “The Three Principles – Mind, Consciousness, Thought“. Stunningly, West Virginia University, a stereotypical academic bastion of logical and mechanistic thinking, paid tribute to Syd’s spiritual work by initially naming the West Virginia Initiative for Innate Health after him.

I’m really thankful that I serendipitously discovered the work of Sydney Banks. Rest in peace my dear friend from afar.

Process Nazis

November 14, 2009 Leave a comment

Unlike most enterprise software development orgs where “quality assurance” is equated to testing, government contractors  usually have both a quality assurance group and a test engineering group. Why is that? It’s because big and bloated government customers “expect” all of its contractors to have one. It’s the  way it is, and it’s the way it’s always been.

Process Nazis

It doesn’t matter if members of the QA group never specified, designed, or wrote a line of software in their life, these checklist process nazis walk around wielding the process compliance axe like they are the kings of the land: “Did you fill out this unit test form?” “Do you have a project plan written according to our template?“, “Did you write a software development plan for us to approve?“, “Did you submit this review form?“, “Did you submit this software version definition form?“, “Do you have a test readiness form?“, “If you don’t do this, we’ll tell on you and you’ll get punished“. Yada, yada, yada. It’s one interruption,  roadblock, and distraction after another. On one side, you’ve got these obstacle inserters, and on the other side you’ve got nervous, time-obsessed managers looking over your shoulder. WTF?

Gauntlet

Since following a mechanistic process supposedly  “proven to deliver results” doesn’t guarantee anything but a consumption of time, I don’t care much about formal processes. I care about getting the right information to the right people at the right time. By “right“, I mean accurate, unambiguous, complete, and most importantly – frreakin’ useful. For system engineers, the right information is requirements, for software architects it’s blueprints, for programmers it’s designs and source code, for testers it’s developer tested software. How about you, what do you care about?

The Factory And The Widgets

November 13, 2009 Leave a comment

The process to assemble and construct the factory is much more challenging than the process to assemble and construct the widgets that the factory repetitively stamps out. In the software industry, everything’s a factory, but most managers think everything’s a widget in order to delude themselves into thinking that they’re in control. Amazingly, this is true even if the manager used to write software him/herself.

When a developer gets “promoted” to manager,  a switch flips and he/she forgets the factory versus widget dichotomy. This stunning and instantaneous about face occurs because pressure from the next higher layer in the dysfunctional CCH (Command and Control Hierarchy) causes the shift in mindset and all common sense goes out the window. Predictability and exploitation replace uncertainty and exploration in all situations that demand the latter; and software creation always demands the latter. Conversation topics flip from talking about technical and CCH org roadblocks to obsessing about schedule and budget conservation because, of course, managers equate writing software with secretarial typing. The problem is that neglecting the former leads to poor performance of the latter.

Widget And Factory

Shallmeisters, Get Over It.

November 12, 2009 Leave a comment

If you pick up any reference article or book on requirements engineering, I think you’ll find that most “experts” in the field don’t obsess over “shalls”. They know that there’s much more to communicating requirements than writing down tidy, useless, fragmented, one line “shall” statements. If you don’t believe me, then come out of your warm little cocoon and explore for yourself. Here are just a few references:

http://www.amazon.com/Process-System-Architecture-Requirements-Engineering/dp/0932633412/ref=sr_1_3?ie=UTF8&s=books&qid=1257672507&sr=1-3

http://www.amazon.com/Structured-Development-Real-Time-Systems-Introduction/dp/0138547874/ref=pd_rhf_shvl_1

http://www.amazon.com/Software-Requirements-Second-Pro-Best-Practices/dp/0735618798/ref=sr_1_1?ie=UTF8&s=books&qid=1257635918&sr=1-1

http://www.amazon.com/Mastering-Requirements-Process-Suzanne-Robertson/dp/0321419499/ref=sr_1_1?ie=UTF8&s=books&qid=1257635979&sr=1-1

With the growing complexity of software-intensive systems that need to be developed for an org to remain sustainable and relevant, the so-called  venerable “shall” is becoming more and more dinosaurish. Obviously, there will always be a place for “shalls” in the development process, but only at the most superficial and highest level of “requirements specification”; which is virtually useless to the hardware, software, network, and test engineers who have to build the system (while you watch from the sidelines and “wait” until the wrong monstrosity gets built so you can look good criticizing it for being wrong).

So, what are some alternatives to pulling useless one dimensional “shalls” out of your arse? How about mixing and matching some communication tools from this diversified, two dimensional menu:

  • UML Class diagrams
  • UML Use Case diagrams
  • UML Deployment diagrams
  • UML Activity diagrams
  • UML State Machine diagrams
  • UML Sequence diagrams
  • Use Case Descriptions
  • User Stories
  • IDEF0 diagrams
  • Data Flow Diagrams
  • Control Flow Diagrams
  • Entity-Relationship diagrams
  • SysML Block Definition diagrams
  • SysML Internal Block Definition diagrams
  • SysML Requirements diagrams
  • SysML Parametric diagrams

Get over it, add a second dimension to your view, move into this century, and learn something new. If not for your company, then for yourself. As the saying goes, “what worked well in the past might not work well in the future”.

Shallmeister

I’m Finished

November 11, 2009 2 comments

I just finished (100% of course <-LOL!) my latest software development project. The purpose of this post is to describe what I had to do, what outputs I produced during the effort, and to obtain your feedback – good or bad.

The figure below shows a simple high level design view of an existing real-time, software-intensive, revenue generating product that is comprised of hundreds of thousands of lines of source code. Due to evolving customer requirements, a major redesign and enhancement of the application layer functionality that resides in the Channel 3 Target Extractor is required.

MDS

The figure below shows the high level static structure of the “Enhanced Channel 3 Target Extractor” test harness that was designed and developed to test and verify that the enhanced channel 3 target extractor works correctly. Note that the number of high level conceptual test infrastructure classes is 4 compared to the lone, single product class whose functionality will be migrated into the product code base.

Enahnced Extractor

The figure below shows a post-project summary in terms of: the development process I used, the process reviews I held, the metrics I collected, and the output artifacts that I produced. Summarizing my project performance via  the often used, simple-minded metric that old school managers love to use; lines of code per day, yields the paltry number of 22.

Project Summary

Since my average “velocity” was a measly 22 lines of code per day, do you think I underperformed on this project? What should that number be? Do you summarize your software development projects similar to this? Do you just produce source code and unit tests as your tangible output? Do you have any idea what your performance was on the last project you completed? What do you think I did wrong? Should I have just produced source code as my output and none of the other 6 “document” outputs? Should I have skipped steps 1 through 4 in my development process because they are non-agile “documentation” steps? Do you think I followed a pure waterfall process? What say you?

Guilt And Coercion

November 10, 2009 1 comment

In a classic CCH (Command and Control Hierarchy), the only two tools of motivation known to BMs (Bozo Managers) for getting people to sign up for no-win projects are Guilt and Coercion. Bad CCH BMs use both, and really bad BMs with a sweatshop mentality use coercion exclusively. Attempts to instill guilt are often prefaced with “Don’t you wannabe a team player?” or “It’s very important for the company”. A classic coercive one-liner is “Do this project or else!”

So, why don’t many smart DICs (Dweebs In the Cellar) step up and volunteer to lead tough projects?  One reason  is because smart DICs know that the toxic, fragmented, and stifling environment (created and nurtured by the very same BMs who are coercing and inflicting guilt)  guarantees failure. Another reason is because textbook CCHs are bureaucracies and not meritocracies – regardless of what they espouse. Thus, all work is treated the same and everyone gets the same 3% raise no matter how hard they work or how much they neglect their own lives to “get the job done” . Can you think of other reasons?

Guilt and Coercion

Orchestrated Reviews

November 9, 2009 3 comments

If you think your design is perfect, it means you haven’t shown it to anyone yet – Harry Hillaker

Open, frequent, and well-engineered reviews and demonstrations are great ways to uncover and fix mistakes and errors before they grow into downstream money and time sucking abominations. In spite of this, some project cultures innocently but surely thwart effective reviews.

Out of fear of criticism, designers in dysfunctional cultures take precautions against “looking bad“. Camouflage is generated in the form of too much or too little detail.  Subject matter experts are left off the list of reviewers in order to uphold a false image of infallibility.

Another survival tactic  is to pre-load the reviewer list with friends and cream puffs who won’t point out errors and ambiguities for fear of losing their status as nice people and good team players. In really fearful cultures, tough reviewers who consistently point out nasty and potential budget-busting errors are tarred and feathered so that they never provide substantive input again. In the worst cases, reviews and demonstrations aren’t even performed at all. Bummer.

cupcakes

Man, I Love This Guy

November 8, 2009 Leave a comment

I’m not gay (not that there’s anything wrong with that), but I love Scott Berkun. I’ve spoken about him before, and it’s time to speak about him again. Scott’s got a new book out titled “Confessions Of A Public Speaker“. Like all of his other work, it’s a funny and insightful page turner.

It’s incredibly hard to be original, but everyone has the innate capability to be authentic. Scott is authentic. Check out this quote from the new book:

“In the interest of transparency and satisfying your curiosity, I average 25–30 lectures a year. Sometimes I’m paid as much as $8,000, depending on the situation. Maybe one-third are paid only in travel expenses or small fees, since they’re selfpromotional or for causes I’d like to help. Roughly 40% of my income is from book royalties and the rest from speaking and workshop fees. So far, I average around $100,000 a year, less than I made at Microsoft. However, I work fewer hours, am free from the 9 to 5 life, and have complete independence, which is worth infinitely more. I limit travel to once or twice a month, which means I turn away many gigs; I’d prefer to have more time than money, since you can never earn more time.”

Do you think many people have the cajones to expose that amount of detail about how much money they make? I don’t. Maybe I don’t because I feel guilty that I’m an overpaid and underperforming slacker. Scott follows up that trench coat opener with:

“I also think it would be good if salaries were made public, which is why I offered my fees and income. If more people did this, the overpaid and underpaid would be visible and more likely to be corrected. Or, total anarchy would ensue and civilization would end. Either way, it would be fun to watch.”

LOL! I love that idea and I would sign up to it any day. Then I, and everyone else, especially the corpocrats that run the show, would have a reference point of relativity for determining whether or not they’re overpaid.

There’s at least one company that I know of that operates this way – Semco. I know this because CEO Ricardo Semler said so in his book “Maverick“. How about you and your company? Would you try it out? Why not? If the result turned out to be FUBAR, you could always revert back to the same-old same-old and do what everybody else in the moo-herd does.

Public Salaries

Few people are capable of expressing with equanimity opinions which differ from the prejudices of their social environment. Most people are even incapable of forming such opinions. – Albert Einstein