I graduated from college with a pretty solid understanding of how to build software.
I was able to hold my own in many design meetings with other engineers, managers, and test folks.
But I was unprepared for certain meetings that I had with marketing.
Not every meeting, mind you. Just those particular meetings with marketing co-workers that were "overly-curious" about my software design. I used to be caught off guard in these situations.
Not any more.
As a public service I thought I'd relate a technique that a mentor of mine here at EMC uses quite often in these situations. It's a method that's invaluable for junior developers. I've seen it work, and it's powerful.
This technique is called expressable widgets.
You Need to End The Conversation
Software engineers do need to meet with marketing to understand software requirements. But, my young friend, if you are suddenly faced with the question: "How do you plan on building your software?", then the marketeer has crossed the line and is exhibiting inappropriate behavior.
In your desire to be a good corporate citizen and make a good impression with co-workers from other organizations, you may be tempted to answer the question directly. This is a mistake. Don't open the door to this conversation, not even one inch! Trust me, you'll regret it.
The question usually arises towards the end of meetings, when there are a few minutes to kill. Be ready. When you hear the words: "so.... how do you plan on building your software?", use the following simple 3 steps....
Step #1: Introduce Expressable Widgets
When you receive the question, immediate respond with "We're using expressable widgets". Try and say this before the words have come out of their mouth.
In 95% of cases, the conversation is over. They'll will likely say something like: "Oh, ok". Quickly leave the room. Well done.
You see, "widgets" is a safe term because it's a well know software paradigm, but your co-worker will not want to admit that they don't know what widgets are. You've won. In 5% of cases, however, you will get the inevitable follow up question:
"What are expressable widgets"?
Step #2: Define Expressable Widgets
Believe it or not I have actually been in the room when this question was asked, and I could sense that the desperation to engage in "tech-talk" had conquered the fear of feeling foolish.
Stay cool, and answer the question this way (try and use these exact words):
"They are widgets that express themselves".
Game over. I have never seen a marketeer recover from this one. Again, quickly leave the room. You've won. Of course, it's possible that they have not taken the hint and are so desperate to get nerdy with you that they may demand a further discourse on expressable widgets.
Not likely, but there's no harm in being prepared....
Step #3: Pull out the buzzword firehouse
"Expressable widgets are common abstract base classes characterized by pure virtual function definitions, which enable polymorphic override and strong encapsulation. We chose them due to the guarantees provided by their strong transactional semantics, wizard-based ease-of-use, and non-disruptive upgrade-centric high-availability. They are also language-neutral."
Just make stuff up! Think back to the courses you took in college and hit 'em with a stream of conciousness containing every buzzword related to your craft.
Friends, give it a try. Let me know how it goes!
I'm also interested in hearing other techniques that have been applied effectively in this situation.
Steve
P.S. I can't believe I'm not charging for this information!
P.P.S. This technique has broad applicability in the blogosphere.....
I made the mistake of engineering some of our software people in the "How are you going to build your software" conversation and it's a mistake I've never made again.
These days, those PowerPoints made of of boxes with labels that all fit together like a jigsaw puzzle do me just fine.
I know they have no bearing on reality at all but oh look, the management layer is on top and the piece closest to the metal is on the bottom and all the magic happens in those boxes in between.
Anything beyond that, the developer knows better.
Posted by: Storagezilla | December 12, 2008 at 08:04 AM
Well... I'll tell you why you don't charge for this information... because as soon as the marketing guys read your blog, your info has no value...
maybe that's why engineers need marketing guys ;-)
Posted by: VicenteM | December 12, 2008 at 08:34 AM
Overly curious, and then meddling, business people are certainly a challenge! It's better if you have smart business people and good training, though. I've been using XP (eXtreme Programming) practices for about six years now, and one of the planning tenets is "the customer is the only person who can meaningfully determine what the product should do, and prioritize the features; the developer is the only person who can meaningfully determine how long it will take and how it will be done." Once you play by these rules, everything gets much easier and more honest. I'd rather see more honesty rather than trying to snow (or ice) over your marketing team, so I can't really endorse your method despite its advantages...
A bigger question, what do you recommend when it's the end customer who's asking inappropriate questions so that they can offer "advice"?
Posted by: Jered Floyd | December 12, 2008 at 10:51 AM
Hi Jered,
My post is mainly "tongue-in-cheek" for those of us who have been there when someone wants to "play engineer" during a meeting.
I've never experienced a customer trying to do the same! Most of the customer questions are less about how it's built internally and more along the lines of "how can you build it so it's easy to use", which is an excellent question and highly appropriate.
Steve
Posted by: Steve Todd | December 12, 2008 at 11:59 AM
Actually, we do the same thing when people are arguing about web designs.
How are you building your web site?
Expressable widgets, naturally ...
Personally, as a marketing guy, I usually have an intellectual curiosity in how things are built.
Not because I want to play engineer, but because -- a very long time ago -- I actually built software.
Thanks!
Posted by: Chuck Hollis | December 12, 2008 at 12:03 PM