Showing posts with label Alan Cooper. Show all posts
Showing posts with label Alan Cooper. Show all posts

28 July 2015

Women on the Rise

illustration by Sascia Däumichen
The demand for women programmers is on the rise because the software industry realized it has a long-standing brogrammer problem and remains economically stunted from a lack of gender and socio-economic diversity.

After decades of observing teams, I recognize that braggadocious brogrammer behavior, lock-step certainty, and baseless hubris, diminishes the opportunity to foster a learning team.

In my experience,
A diverse team raises the bar of social intelligence and civility.
Contrary to popular notion, few people want to get pummeled by a sophomoric pack of Nerf Gun Nincompoops for breaking the build or making a mistake.

Software is no longer produced by pre-historic rock quarry workers like Fred Flintstone.
"People unfamiliar with the nuts & bolts of software development imagine it's an engineering process, but it's a profoundly human activity."
Alan Cooper
Diverse, learning teams are much more fun, and by extension, more productive than mono-cultural, humiliation-centric teams.


REFERENCES

23 October 2014

Raising Products

Sunrise to sunset, products have a time-honored cycle. In the realm of software development, I prefer Products over Projects.

Product life-cycle
Who are the best people to raise a software product? As a contractor in dozens of IT departments, I've found IT to be the most ill-staffed and culturally stifling place for raising software products.
IT is where What's Possible goes to die.
For user-centric software developers, having the human activity of making software under the yoke of an IT department is like a fish in outer space.
Wrong environment. Wrong vibe.
What should be the goals and purposes of product development are frequently at odds with the raison d'etre of IT. By popular definition, IT deals with all things electronic.
Information Technology - Often the name of the part of an enterprise that deals with all things electronic. Free On-Line Dictionary of Computing
All things electronic is hardly a human activity. Successful software involves people. The most successful software focuses on human pains and gains.
People unfamiliar with the nuts & bolts of software development imagine it's an engineering process, but it's a profoundly human activity.
Alan Cooper
The product-focused team is rooted in the common cause of serving people by relieving pains or offering gains. In Product vs. IT MindsetMarty Cagan chose the words Mercenaries and Missionaries to distinguish the IT Mindset from the Product Mindset.
In an IT mindset organization, product and tech are mercenaries. There is little to no product passion. They are there to build whatever. In a product organization, product and tech are missionaries. They have joined the organization because they care about the mission and helping customers solve real problems.
Marty Cagan

IT programmers tend to make marginally consequential changes to existing applications. The applications built and supported by IT serve people in other departments ― users that frequently harbor contempt for IT. IT programmers derisively refer to these users as The Business.

Because there is a death of product passion in IT, programmers tend to gold plate dubious features behind the guise of some perceived benefit to The Business. If The Business doesn't use the feature, no one loses their job or their life-savings.

Contrast the IT mindset to a product-centric developer's mindset in a startup. Product-centric developers know the existential narrative is:
Deliver value or die.
For software startups, continuous innovation and connecting with customers are dual imperatives. On the other hand, IT departments focus on support and execution over innovation.
"A business that isn’t investing in tomorrow, is a business that’s already in the process of dying.”
Reid Hoffman
IT departments are better equipped to handle knowns than unknowns. IT is ladened with processes, governance, and gratuitous ceremony.
"Every time another execution process is added, corporate innovation dies a little more.”
Steve Blank
The product mindset is that the product is paramount so all but the most pragmatic of processes falls by the wayside. Products have an inception and an end of life. IT tends to fund ongoing projects, rather than products with a beginning, middle, and end.
Delivery teams deliver software products - not projects - that run from inception to retirement.
Jez Humble
Product-minded behemoths like Apple, Amazon, and Google demonstrate that people-pleasing products are not limited to startups.
My philosophy is that everything starts with a great product. So, you know, I obviously believed in listening to customers, but customers can't tell you about the next breakthrough that's going to happen next year that's going to change the whole industry. So you have to listen very carefully. But then you have to go and sort of stow away -- you have to go hide away with people that really understand the technology, but also really care about the customers, and dream up this next breakthrough. And that's my perspective, that everything starts with a great product.
Steve Jobs
To raise my killer product, I'm determined to partner with people steeped in a product mindset, then rally them around our product to change the world.

REFERENCES

27 April 2014

The Learning Team

A Learning Organization seems so obviously desirable as to be ubiquitous yet most of us will never experience one.
Learning Organization
A term for an organization that fosters ongoing learning among its members. Because learning is ongoing, the organization continuously transforms itself.
If we can't fix our inept organization, perhaps we can influence our team.
All politics is local.
Tip O'Neill
All politics is local means that our success is tied to our ability to understand and influence our constituents.

My constituents are my teammates.

We owe ourselves the courtesy of modeling the kind of behavior we want to see in our teammates. We owe ourselves the courtesy of striving to be good learners and aspiring to be good teachers.
“You cannot force commitment, what you can do…You nudge a little here, inspire a little there, and provide a role model. Your primary influence is the environment you create.”
Peter Senge
Fun teams cultivate learning. The rest suffered from varying degrees of toxicity. I resolve to choose fun. I urge you to join me.
People unfamiliar with the nuts & bolts of software development imagine it's an engineering process, but it's a profoundly human activity.
Alan Cooper
A Learning Team

The closest I've been to a learning organization has been flashes of a learning team practiced by me and my teammates.
If your teammate responds to a question by affirming, "That's a good question", all indicators point to a learning team.
A well-tended and searchable wiki  ― thanks Ward ― that has up-to-date on-boarding instructions, and frequently used command sequences, is one sign of a learning team. On the other hand, admonishing a teammate to "look it up on the wiki" is a red flag your teammate is missing a teaching opportunity. Such opportunities occur whenever a teammate asks a question.
Missed teaching opportunities occur whenever a teammate stops asking or regrets asking.
A few red flags that you're falling short of a learning team are:
  1. Defensive Postures
  2. Shaming Mechanisms
  3. Cynicism
Defensive Postures:

We often recognize defensive postures in ourselves and in our teammates. Defensiveness is a burden and a buzz-kill. Excise it.
“It is not the absence of defensiveness that characterizes learning teams but the way defensiveness is faced”
Peter Senge
Your teammate doesn't want a knife in the back. He wants to you have his back. When your teammate is defensive, she's probably not pro-active.

Shaming Mechanisms:

Sometimes the original idea for a practice, or the spirit of an idea, gets lost over time.
Practices should never devolve into a mechanism for shaming.
Examples of sound practices that have gone toxic:
  • Continuous integration is a highly recommended, ongoing health-check, BUT never shame a teammate for breaking the build, or for failed functional tests. I suffered through an immature team that handed around a stuffed Build Monkey to anyone who broke the build. I deep-sixed the monkey.
  • Test-First is a valuable learning tool, as is Test-Driven. Both play a role in ensuring quality. BUT avoid shaming a teammate for not adopting them as a matter of course. If one or the other is an agreed upon team practice, then reward good behavior rather than shaming people for slip-ups or for regressing under pressure.
  • Estimation and burn-down charts, once handy tools to make wild-ass-guesses at story sizes and to make progress visible, have become blunt instruments for flogging in the hands of command-and-control managers. NEVER use a tool or a process to hurt people.
Process alone is usually innocent. It is converting ideals into expectations that can be toxic. For more on shaming, see Say No To Brogrammers.

Cynicism:

Cynicism grows from the loam of unmet expectations. One tip:
Don't romanticize your teammate's abilities to be a "craftsman" ― particularly if he must measure up to a poorly articulated definition of craftsmanship.
By avoiding romanticizing the notion that developers are craftsman, you'll be better equipped to avoid the psychological baggage of unmet expectations.
“In combating cynicism, it helps to know its source. Scratch the surface of most cynics and you find a frustrated idealist – someone who made the mistake of converting his ideals into expectations.”
― Peter Senge
Cynicism grows from trying to change too much. Forget about the larger broken organization for now. Remember all politics is local.

Get to root causes. If it's something the team can fix, fix it before it devours all optimism.

Lastly, try modeling vulnerability rather than oozing cynicism. Your teammates will appreciate it.

Getting to the Learning Team
A learning team, like a happy family, requires practice and vigilance. A learning team gets sustenance from people expressing ideas and opinions with reckless abandon.
Remember everyone has a different take. The spectrum might range from Michelangelo to Cowboy Coder.
To voice an opinion or posit an idea we need to feel comfortable speaking up and we need to be practiced at listening. A learning team starts by modeling listening, practicing Beginner's Mind, and aspiring to teach.
"In the beginner's mind there are many possibilities, but in the expert's mind there are few"
Shunryu Suzuki
Learning frequently calls upon us to step out into the vast unfamiliar. Learning can make us uncomfortable because it means exposing our weaknesses. But humility goes a long way toward learning. Practice humility.

The place I'd start to cultivate a learning team is a distributed source control system that supports the Pull Request Workflow.

Pull Request Workflow:

If you use no other means to get to a learning team, try the Pull Request Workflow on GitHub and Bitbucket. The PR Workflow encourages you and your teammates to:
  • publicly view proposed code changes,
  • publicly offer options or discuss alternatives, and
  • approve all changes ― shared responsibility.
Two outcomes of the PR workflow are:
  1. Quality - Under the assumption that two-plus heads are better than one, quality invariably improves from peer-reviewed code; and
  2. Learning - Newbies can view other's code before it's merged and benefit from the public dialogue about how the code might be improved. Old hand's are given the golden opportunity to learn and the golden opportunity to teach. Double gold. Be respectful. No one loses.

See Pull Requests for Teams for more details.

An ideal teammate teaches you something and wants to learn from you. Seek or grow a learning team. Resolve to choose fun.

REFERENCES

ACKNOWLEDGEMENT

Hat tip to Chris Bartling for introducing me to aspects of the learning environment and for nudging me into the vast unfamiliar of open source.

28 June 2012

Should Designers Code?

Bobtuse Honeybee Pagoda
I am an long-time programmer. I have a keen interest in simple design and providing a pleasurable aesthetic experience in most things I build.

Jon Kolko's post code is material: why designers must learn to code got me thinking, and predicting:
Designers don't need to learn to code. The code will come to them.
My Programming Arc

I wrote my Hello World in FORTRAN at the University of Minnesota in the early 1980s. But I started programming in earnest as a Civil Engineering undergraduate in the mid 1980s in the days when fast was turbo.

Today I am handsomely compensated to jerk around coughed up hair balls of client-side JavaScript.

Thankfully I never had to program in machine code. One great programming leap was the advent of commonly used computer languages like FORTRAN that abstracted the complexities of machine code.

Another Great Leap

Alan Cooper in his office
at Cooper in San Francisco
Programming made a quantum leap when Visual Basic 1.0 was introduced in 1991. Visual Basic pioneered drag and drop design for crafting user interfaces.

Visual Basic derived from a form generator prototype developed by Alan Cooper and his company called Tripod.
Alan Cooper put the "visual" in Visual Basic
The visual nature of the new Visual Basic paradigm abstracted the software maker from the underlying sausage.

The Visual Basic leap for occurred after the 1991 COMDEX/Windows trade show. There have been no equivalent leaps since. We're overdue.

The Next Great Leap - A Future for Creatives

Returning to my assertion that
Designers don't need to learn to code. The code will come to them.
I suspect there will be a bright future for creative types. All that's needed is another revolutionary leap in development tooling that will enable designers to do what programmers do without having to know how to code. Someone will abstract the complexity.

The explosion of rich client applications, and all of the attending JavaScript schmutz, is a programming nightmare for cats like me who have known better times.

Today's rich client frameworks and persistence schemes have lots of hoop-jumping complications.
 Too much sausage meat! 
Take heart, I think tooling will be invented that will put the sausage back in the case.

It is laudable to know the your work environment and the materials you work with through and through. But in the case of making applications, simplification by abstraction is what frees us to be creative.

Already tools are appearing that enable applications to be built without the gratuitous and frustrating hair balls that require the services of a programmer.

So I think the code will come to the designers. Application development will be made visual, gestural, instinctual and intuitive.

31 January 2012

Design Quest - Interaction Design Day #1

Day One of Cooper's Interaction Design Practicum had many highlights. Some of the topics covered includes the following ideas, practices & tips:
  • Design Is - Groundwork Definitions
  • Synthesizers and Generators 
  • Pretend It's Magic
  • Goal-Directed Design
  • Alan Cooper Q&A
  • User Interviews - Guidance & Tips


Design Is...

Cooper managing director of interaction design Doug Lemoine was our practicum leader. Doug established groundwork design definitions.
Design is the conscious and intuitive effort to impose meaningful order.
~ Victor Papanek, Design for the Real World: Human Ecology and Social Change
Good design ensures usefulness. The web-based file hosing service Dropbox is useful. The Segway Personal Transporter, not so much.

Humorous snark about the perceived need and Segway price point from fellow-attendee Matthew:
I wish I had 10 grand to make me even lazier.
In a well-executed design, people delight in simple, intuitive interactions


Synthesizers and Generators

It has been said that Cooper's secret sauce is to work in design pairs. Cooper pairs consist of a Generator and a Synthesizer. The Generator leads concept creation,while the Synthesizer leads narrative creation.

Generator Synthesizer
  • Good at visualizing systems
  • Versed in usability & IxD principles
  • Responsible for screen sketches
  • Good at narrative, facilitation, and detail
  • Versed in communication and process
  • Responsible for documenting Research & Development

Cooper's paired design balances generative thinking (what could the product do) and evaluative thinking (what should the product do).

Pretend It's Magic

One pitfall is thinking about what the system can do at the expense of what the system should do. Edward de Bono's Lateral Thinking was presented as a problem-solving technique that uses an indirect, creative approach. Problem solving can follow a practical path, or a magical path (shown below). Often considering the ridiculous, the ludicrous, and the impossible -- the magical path -- leads to a great idea.


Sometimes a product vision is blurred by a natural tendency to focus on product implementation. That's when it is time to switch off our internal editor and pretend it's magic (e.g., what would a magical device do) or pretend the product is human (e.g., what would a human assistant do?)

Goal-Directed Design

Goal-Directed Design considers what should be built before starting to build it. Cooper has observed that goals are stable targets. The supporting example is a cross-country trip. The goals of cross-country trip, whether in 1850 or today, are the same. Cross-country travelers want get there as soon as possible, be as comfortable as possible, and travel safely.

Context, tasks, needs and tools change, but the goal remains the same. For example, air travel can be non-stop where one needs something to read for 5 hours, whereas stage coach travel had 20 stops where one needed something to read for 22 days. With air travel one wants to clear airport security, whereas with stage coach travel one had to be sure to bring a firearm.

A visualization of Cooper's Goal-Directed Design appeared to be a DNA chain with the following elements:
  • Research - Understanding business and user's needs.
  • Modeling - Digest the research and build consensus among stakeholders and project team. Modeling of personas and modeling scenarios.
  • Requirements Definition - Define the product experience (i.e., key user goals, functional needs, and emotional needs). Looking for the sweet spot of business goals, user needs, and technical constraints.
  • Framework Definition -A holistic view of the design using scenarios as the foundation. Focus on most appropriate concept.
  • Detailed Design - Design the product in enough detail to prove feasibility. Collaborate with engineers to ensure feasibility.
  • Implementation Support - Ensure the product is built as intended. Advocate and build empathy for the user.
Rinse and repeat!  The process is iterative


Alan Cooper Q&A 

Alan Cooper entertained questions in the afternoon. One of several things Alan said that resonated with the audience involved the conventional title of Software Architect. Cooper feels Software Architect is a misappropriated of term. The role of an interaction designer is more akin to the title Software Architect.
An architect is a person at the nexus of people, purpose, and technology -- not someone working in isolation close to the metal. ~Alan Cooper
User Interviews

User interviews are one of the primary methods of acquiring intelligence for the product design. Two approaches found to work are:
  1. One-on-One Interviews - looking for an understanding of user motivations, biases, and concerns;
  2. Conduct Workshops - looking at multiple stakeholders thinking creatively and moving toward a shared vision of the product.
Some fundamental questions discussed for an effective interview:
  • What's your role?
  • What are the benefits for the business? For you?
  • How will it make money?
  • How do you define success?

Snapshots

View of Bay Bridge from Cooper Reception



Alan Cooper signing my copies of his books

20 August 2011

Agile Adaptations

I've been following the Lean-Startup movement since I wrote about it in Framing Product Development. In the Spring of 2010 I was jazzed up about Lean-Startup following a gathering at DevJam with a small group of friends where we viewed a simulcast of the Startup Lessons Learned Conference --the brain child of Eric Ries.

Yesterday I tweeted:


Several RT'd. Others commented about this distillation of ideas.

My Admission


 My Tweet was cribbed from Abby Fichtner's (a.k.a., Hacker Chick) screencast Pushing Agile to the Next Level. The side by side comparison of Agile and Lean Startup (below) is a concise and helpful representation of an evolution of thinking in the Agile software development realm.


Of Hacker Chicks's excellent slide and presentation, I pass on Alan Cooper's tweet - ostensibly directed at her vision of the evolution of the Agile movement...
Most accurate, succinct, and wise demarcation of the two disciplines.Alan Cooper
Agile 2.0

I share Hacker Chick's vision. For me Lean-Startup has become Agile 2.0. True to the spirit of Agile, movements must adapt and adopt, or die. I recognize that Hacker Chick has shown the Agile community a bridge to the future. The challenge for any ponderous old-paradigm organization producing custom software products is
How to behave like a startup?
Lean-Startup teaches us to create the infrastructure necessary to test our business models (our products). That means getting it into the hands of the users, testing hypotheses (fail early / fail often), and pivoting toward viability -- like a heat-seeking missile follows heat.


Previous Posts About Lean-Startup For those new to Lean-Startup, I've written several posts on my understanding the constituent principles: