Amuse UX Conference, Budapest

Last week, I had the privilege of being part of a group attending the first edition of AmuseConf on behalf of our company. Amuse is “an international conference for anyone interested in how to design and develop successful products that users love”. It’s organized by the same good folks that bring us the outstanding CraftConf year after year, sponsored primarily by Prezi and UStream (and SAP in case of Amuse). They did a near-perfect job, with only minor glitches with the seating and catering on the first day. Considering that the Big Data oriented CrunchConf was also literally next door, the event was practically flawless. Fast, uninterrupted WiFi and no food options for vegetarians/vegans remained a hallmark this organizing team (even though Tom Illmensee, event MC is himself vegetarian 😉 ).

(BTW, if you’re wondering why so many tech conferences are being hosted in Budapest, the event’s WiFi password should give you a hint):

20151103_083708867_iOS

510 attendees from 32 countries (as far away as Australia) made Amuse a roaring success, as did its impressive lineup of Speakers27% of the speakers were women, which is great for a tech conference — I hope next year we have even more!

Below is a summary of the talks I found the most relevant to my work. But by no means does that mean you should skip the other talks… depending on where you are and what you’re doing, you might be interested in some of the eclectic topics covered such as:

  • Designing web interfaces for children by Trine Falbe
  • Conducting research outside “sample of convenience” by Bill Selman from Mozilla Foundation
  • Design Thinking by Tobias Haug of SAP (my favorite quote: “Innovation = Execution x Creativity”)
  • How to get your dream UX job by Andrew Doherty of Google (worth checking out just for his mad presentation skills)
  • The Ethical Designer by Cennydd Bowles
  • Storytelling in a multidevice landscape by Anna Dahlstrom

Design Equilibrium

By Jonathan Lupo

Jonathan opened the conference with a very engaging talk drawing parallels between businesses and ecosystems: a “balanced exchange of value between Actors, Enterprise and Brand”. He gave practical examples citing the application of Lynn Shostack’s work on Service Blueprinting to a transformation in the healthcare industry. I strongly encourage viewing his inspiring talk on YouTube.

His core suggestion is a separation of Product Design from Service Design. The latter “fills in whitespaces between points of [rich] engagement provided by products”, helping to restore balance to the overall experience, and hence the business ecosystem. This is the real intangible value of services, as opposed to products.

He also proposed the concept of an “Engagement Model”: a framework to contextualize all the data a business collects.

UX: Design as a Science

By Joel Marsh, author of the UX Crash Course

Joel’s key message was that “Scientific UX Design is reproducible”: essentially drawing on the principles of the Lean Startup and applying them to the UX domain. His presentation was one of the most popular and engaging ones, and his quotes and examples garnered a lot tons of positive feedback. One thing that struck me was his exposition on the two types of creativity: Creative expression and creative problem solving. He noted that an over-applicability of creative expression can make you feel good as a designer, but result in an over-designed and bloated product:

ArtVsDesign

Another talk I would highly recommend watching when it comes out on UStream.tv.

Making Dog Food a Part of Your Balanced Diet

By Toby Sterrett

Toby used his work at Simple Bank to highlight the pros and cons of “eating your own dogfood”. The initial employees used the app themselves, and one of the downsides was that the missed revelation that users of such a smooth app had to deal with a paper form-based process to close their account, which took up to 20 days.

Another inspiring talk that you should definitely check out, full of quotes of wisdom like:

  • “Delight is design’s superpower”
  • A past discussion on Leadership strategy: “Build a shared vision, get the **** out of the way”
  • “UX is not about throwing technology at a problem, but throwing people at a problem”

On the other hand, Simple A/B tested as many as 16 variations of their login page (for more examples, check out UserOnboard.com).

Live posters being created by @remarker_eu

Live posters being created by @remarker_eu

How We Built Hotjar and Onboarded 50k Users in a Year

By Dr. David Darmanin

David used practical examples from Hotjar to support his model of “Drivers, Barriers and Hooks” when dealing with site visitors. He also put a quirky twist on some timeless wisdom:

The two most amazing insights for me were:

  • Hotjar captures every single customer interaction on a Trello board, and uses that feedback to prioritize their features.
    • They also make their roadmap public, which demonstrates their commitment and at the same time reduces enquiries about feature requests
  • They use the income from their paid customers to fund the creative freedom to build features for their free customers

The Invisible Interface: Designing the Screenless Experience

By Avi Itzkovich

Avi, founder of UXSalon, opened with a discourse on recent editions of Microsoft Productivity Future Vision. From there he led the discussion on towards a future without bigger and wider screens (which wouldn’t require “superhuman arm strength”):

  • “The most profound technologies are the ones that become invisible” 
    • Like automatically opening sliding doors
  • “Voice UI is the future”
  • “Gesture control is here to stay, but not on screens”

The Best Interface is No Interface

By Golden Krishna

Golden surmised that we are all “chipping away at digital chores”, and we don’t have to be “slaves to screens”. He has laid the foundations of the #NoUI movement with his book“The Best Interface is No Interface”. His excellent talk (slides here) was supported by book reading and real examples. Also, don’t forget to check out his accompanying toolkit on “how to create elegant solutions with no screens”.

For further inspiration to join the movement,  take a look at his Producthunt collection of “interfaces that require little or no time with screens”.

Magical UX and the Internet of Things

By Josh Clark

Josh opened with an announcement of his book release: “Designing for Touch”. His presentation was literally magical, complete with a wand, to the point that he managed to tie in together excerpts from preceding talks and put the whole conference in perspective. I found a similar slidedeck from one of his previous talks here, and I highly recommend taking a look at it while we wait for the official conference videos to come up on Ustream.tv. It was a treasure trove of out-of-the box examples like:

  •  Augmented REality Sandtable (ARES), which literally turns dirt into a high-tech, military-grade user interface… using not much more than a Kinect and projector
  • Grab Magic, which brings superpowers to data transfer
  • Propeller Health, which connects Asthma inhalers to phones for health monitoring

Josh’s key message was “interaction at the point of inspiration”: that we should think of “the whole world is an interface, just like it has always been”. He proposed “thereables” instead of wearables: bits of smart technology in the physical space where we would expect to interact with them, not something we burden ourselves by carrying or wearing all day long. To this end, he suggested that “the smartphone is Magic Wand 1.0 for everyone” and we should start thinking of it as just more than a screen.

IMG_4185

Regarding user interfaces, he had 3 bits of advice that I found remarkable:

  • “Technology should amplify our humanity”
  • “We shouldn’t educate users on how technology works, unless we really *have* to”
  • “Honor intention, don’t assume it”

Josh ended with a call to action:

Like this one.

 

 

 

 

 

Advertisements

Scrum, Kanban, Scrumban or Just Ban Scrum? (Part 2 of 2)

Part II: Some Solutions

Continued from Part 1, with the same disclaimer applied.

frAgile

 

Collaboration and Distributed Scrum

If you’ve been in a successful Scrum Team with geographically distributed members, I would really like to hear from you, O Venerable Master. After all, team effectiveness has been known to diminish with as much as 2 meters of physical separation. If you must do Distributed Scrum (hopefully as a transitory step), then here are a few tips that will (I hope) save you the trouble of learning the hard way:

  1. Obviously, ensure everyone on the team is fully aware of language and cultural differences, especially the Power Distance Index (if that sounds familiar, it’s from Malcolm Gladwell’s Outliers)
  2. Email is only 14-17% effective as a medium of communication (Videoconferencing helps)
  3. Further, information is lost exponentially as a function of distance and overhead of tools used (simply put, people are inherently lazy…)
  4. …Which may prevent you from achieving fully cross-functional teams without specialists
  5. Agile at scale requires trust at scale
  6. Everyone needs to have access to the same infrastructure (at the same latency) and an identical development environment
  7. Get Agile Evangelists (SM, Coaches, stakeholders) at every location and get them to agree on your organization’s Scrum process
  8. Eliminate mixed signals, possibly by having a Proxy Product Owner
  9. Empowerment and Autonomy are useless without Feedback
  10. Establish an Exchange Program where [at least some] developers from different locations get to experience the reality of their counterparts (This will probably be your best investment)

The most important consideration, given all the specific limitations of your situation, must be that whatever arrangement you come up with, is sustainable. Create success stories and replicate the model. And note that Distributed Team can very well exist without Distributed Scrum.

Why Are You Doing Scrum, Anyway?

One day I’m going to be an Anti-Agile Coach. Because I’m convinced they’re so many people getting it wrong, that there’s a lot of money to be made from it. But first, some free advice: You should really consider if Agile or Scrum is really applicable to your Organization, Industry and Business Context. A good starting point is the following thought process:

You would like to adopt Scrum (or Agile) because…

  1. …Your scope/specifications/customer commitments change often (If not, you might be indulging in WaterScrumFall)
  2. …Your market changes often, requiring quick adaptability (e.g. Competition pops up out of nowhere overnight)
  3. …You need to deliver (or release) continuously (As opposed to a one-time deployment, followed by maintenance)
  4. …Your technology stack can/will change often (i.e. you haven’t invested tons of $ in license fees, and/or you will evaluate multiple options)
  5. …You have the flexibility to experiment/take risks, and your organization rewards failure (or at the very least, doesn’t penalize it)
  6. …Your dev team is nascent, so you expect dev processes to evolve
  7. …Your industry is neither mission-critical nor heavily regulated (although there are exceptions as Nancy Van Schooenderwoert explains)
  8. …You have metrics to show that Scrum would be more effective
  9. …Your Admin/HR/IT teams have Daily Standups (yes, I have seen them happen)
  10. …Everyone else is doing it

If you scored low on the above checklist, please consider that Iterative Software Development is still a thing, especially if you’re dealing with hardware or manufacturing. It’s not Waterfall, but it’s Scrum with a bit more commitment.

On the other hand, you might be in a field of work where you’re ready to treat software development more like Surgery than Civil Engineering (as Dan North explains in his talk).

Whatever you do, don’t indulge in Reverse Waterfall: Convincing yourselves that what you delivered is in fact what you intended to deliver.

(Please share your thoughts and experiences as a comment or connect with me on Twitter: @survivalcrziest)

 

Scrum, Kanban, Scrumban or Just Ban Scrum? (Part 1 of 2)

Part I: Some Problems

I have been playing the Scrum Master role off and on since 2008, almost all of it for geographically distributed teams. During this period, I have been lucky enough to work for 3 different companies in 4 countries. Over the years, a sinking feeling has been growing within me that we have started using “Agility” to mask unwillingness (or I dare say, often, inability) to commit. Allow me to crystallize some of the thoughts that are forming in my head.

(My usual disclaimer applies: none of the below is intended to reflect on my employer(s) or specific colleagues, whether past or present. These are my personal, generalized opinions intended for retrospection.)

ScrumTF

Ceremonies and Metrics

First and foremost, if you don’t have Sprint Retrospectives, or in your organizational/business context, are unable to enforce accountability for, or effectively followup on, action items identified in the Retrospective, then read no further. Your Scrum is Doomed.

Sprint iteration size matters, too: “A 2-week sprint is just enough time for a mini-waterfall, and thus we are all basically whitewater rafting all the time” ( — Dan North).

If:

  • you’re not collecting metrics (at the very least: Capacity, Velocity, Committed vs Completed Story Points, Release Burn Up, possibly correlation between Story Points and Hours, if you’re organization is into that sort of thing, and various forms of Lead Time)
  • or not really paying attention to what they’re telling you
  • and they are not visible to and understood by the whole team

then you have already failed, you just can’t see it yet.

Demo vs Release

On the other end of the spectrum, when the mandate for Scrum or Agile comes top-down, often there is excessive emphasis on ceremonies. Specifically, the end-goal of the Sprint becomes the Demo, rather than the Release. Scrum clearly dictates that no additional or specific effort must be spent on the Demo, it should be more like a natural outcome.

You can have as many Demos as you want, but what really matters for a product is Customer Feedback. Which, just to be clear, is not the same as Internal Management Feedback. Management is inherently biased in favor of your team, after all they very likely played a big part in hiring and building it. 10 internal demos are worth a single demo in front of a potentially paying customer.

The focus, then, should be on the Release of the Potentially Shippable Product Increment (complete with changelog, user documentation, installers, troubleshooting guides and quality reports) rather than an orchestrated demo in a controlled environment. This is where Continuous Integration, Continuous Deployment and more recently, DevOps comes in to the picture. If your Release Process is time consuming, unpredictable, not automated and/or has too many dependencies that are not in your control, your team is not yet Agile.

Dependencies

If your software dev team is Agile, but the rest of the organization is not, Agile is going to fail. By rest of the organization, I mean other dev teams that they have dependencies on, manufacturing, HR, Admin, IT — every single department in the organization needs to understand, live and breathe Agile. Because if they can’t respond to change effectively, then they will hold your software dev team back.

The most effective way of crippling a self-organizing Agile team is to give them full accountability, with limited or no influence over those responsible for potential impediments.

Another assured path to mayhem is when multiple teams work on a shared codebase in concurrent sprints, or when a dependency is being iterated on in the same sprint as a feature that needs to be delivered.

The Bottomless Backlog

Often in geographically distributed teams, and/or on large scale projects, the physical Scrum Task Board is replaced by a more practical virtual one. Such task boards, like those provided by JIRA Agile, Rally, Trello and several others, replace Post-Its by virtual cards, enhanced by features such as attachments, comments, time tracking and reporting. Just like any other application of technology, there is a flip side: It just a matter of a few clicks and keystrokes to add something to your Product Backlog, or to alter project plans in a significant way by moving tasks around. It’s very easy to get carried away, and often we start injecting scope creep into the Backlog, disguised as finer details of existing features (for example see User Stories vs The User’s Story).

If your organization uses different tools for Requirements Management and Project Tracking, and if there’s no strict mapping from requirements to user stories (yes, it happens 🙂 ), then it becomes very easy to lose control of the project without realizing it. A more typical scenario is working with a limited budget (usually allocated upfront),  but adding tasks endlessly — kind of like a fractal with fixed surface area, but infinite perimeter. Even with regular Backlog Grooming and prioritization, your team will still feel dissatisfied because a major chunk of the Product Backlog will end up remaining undelivered.

Finally, if you’re not in a position where you can compromise features over quality, then your Agility is severely limited.

Upfront Architecture and Specification

Probably the biggest excuse we use Agile for is to do away with high-level architecture altogether. Different Sprint teams work on different areas of the project, each optimizing locally and focused on the immediate Sprint (or two). Eventually it becomes apparent that several teams have been solving the same problem, maybe (surprise) even in different ways. The Scrum of Scrums can help, but on the rare occasions when it does happen, it is more focused on execution than design. Towards the end, more incompatibilities surface and there is a rush to “adapt the Architecture to the Business Reality”, which is basically an update of the Architectural artifacts based on the code being delivered, rather than the other way round.

So let’s recap:

  1. Being Agile does not mean no design, it means less upfront design.
  2. There needs to be traceability from Requirements to Specification to Architecture to Design to Execution to Validation to Deployment. It doesn’t matter what you call these things in the context of your Industry, but just because you aren’t doing Waterfall doesn’t mean you can decouple execution from specification.
  3. Technical Delegation is not the same as Management Delegation. If you ask 5 teams to report progress using a specific tool, they will all report it the same way. But if you ask 5 self-organizing Scrum Teams to architect a technical solution, you will get at least 3 different results, if not 5 (or 7 with secondary recommendations).

Read on for some recommended solutions. I would love to hear your thoughts and experiences, please leave a comment or connect with me on Twitter: @survivalcrziest

Types of Managers

We’ve all seen them. We’ve worked with them. Some of us are one of them. Leave a comment if you think I missed any.

Disclaimer: Any resemblance to a single real person is purely your imagination. This is an article about Management Personas.

The Soccer Coach Manager

Angry. Disbelieving. Distrustful. Ageing. Frustrated. Abusive. Resting on decades-old laurels. Often wears a suit.

The Stayin’ Alive Manager

Dances from one meeting to another. Struggles to make it through the day. Seems to be constantly falling behind. Emails you on Saturday nights and Sunday afternoons. Is always forgetting something important.

The Stealth Manager

Never available for important meetings because he’s attending other important meetings. Never responds to emails because he has too many emails to read. Known to be sending out important emails while being away from his laptop and phone. Only seen at office parties and team buliding events, or anywhere else where either alcohol is served or upper management is present. Delegates everything, tracks nothing.

The Null Manager

A stealth manager who made him/herself redundant.

The Mismanager

Destroys every project s/he touches. Announces deadlines when they are looming so close you can physically feel the heat. Generally clueless and relies on others to complete his/her sentences with facts. Then rephrases what other said as his own ideas. Following the Dilbert Principle, usually found in high places.

The Smooth Operator Manager

Wildly successful. Impeccably dressed (often in blue or pink). Never seen without sunglasses, even indoors. Highly educated, with at least one degree being an MBA. Knows his/her scotch and wine. Hasn’t travelled in anything below Business Class in a decade. Has expensive hobbies. Fitness freak. Possibly good at his/her job. Either deeply envied or deeply hated.

The Commando Manager

Ex-military, with a pair of Ray Ban Aviators. Bossy, dominating. Often mixes brown shoes with black suits (and vice versa). Well meaning but possibly anachronic. Always has a war story or joke to share. Often repeats them.

The Forced Manager

Just wants to sit in a corner with his headphones on and get some real work done. Instead spends his day juggling colorful Excel sheets, whining employees and dissatisfied customers. Despondent, maybe even dejected or depressed. Has a picture of a tropical island and/or his family in a discrete corner (or as his/her wallpaper) to remind him/herself about why they still need this job. Falls sick often because of the stress.

The Leader

The only type of manager we really need. Rose up from the ranks. Knows what s/he’s talking about. Is willing to take risks and stand up for his/her people. Good humored. Well organized. Compassionate. Possibly eccentric.

This is a Revolution, Not a Recession

TheFutureIsAlreadyHere

“In human history, there have been three great technological revolutions and many smaller ones.  The three great ones are the agricultural revolution, the industrial revolution, and the one we are now in the middle of—the software revolution. […] It appears that the software revolution will do what technology usually does—create wealth but destroy jobs.”

– Sam Altman, “The Software Revolution”

A lot has been said and written about the great recession, the rise of the robot economy and the loss of jobs (or the creation of them in the new sharing economy – nobody is really sure yet). Let’s take a step back and get some perspective:

“Coming out the recession” and “Economic recovery”

What I think those people (and governments) who say this don’t realize is, that the jobs that were destroyed in the recession, are not going to come back. Because just like individuals, businesses too found ways of making ends meet during the hard times. This surge in demand for more cost effective labor was met by increased automation. And jobs that were automated then are not likely to come back now.

On the other hand, for decades science fiction movies and books have painted a promising picture of a utopian future where machines would do all the work and we humans would engage ourselves in higher pursuits. Yet, here we are, wanting to get our jobs back from the machines.

At the same time, we are heading towards a global workforce crisis by 2030.

Something doesn’t add up.

The Dignity of Wage

Maybe the answer is in what I call “the dignity of wage”. It’s the same reason why people are driven to crime. Our modern economy is robbing people of the opportunities to make money, while at the same time the media constantly bombards them with the notion of spending it. I believe many of the prisoners (who, by the way, in some places outnumber students) would be willing to mend their ways, if only society would give them a fair chance at earning a decent living for themselves and their families. People need something to do, to give meaning to their lives.

Especially in a society and value system in which the education and value system is so heavily employability oriented.

Maybe it’s time for a political debate on Basic Income.

“Humans will be able to move up to more ‘creative’ jobs…”

“…while machines will do the more routine ones”. The problem with creativity is, it’s not for everyone. Neither are tech jobs. Both require a certain mindset that takes years of training to master. Finally, “higher” creative jobs are only relative to “lower” mundane jobs. If all jobs became equally creative, people would have nothing to aspire to. We will be back to square one. For example, The Netherlands’s success is based on acknowledging this distinction.

Automation or Population: Pick One

There are some other longer-term issues with our current employment scenario. Life on this planet is heavily dependent on two things: oil, which we are rapidly running out of, and electricity, which, if disrupted, could instantly send us back to the stone age. Collectively as a civilization, we are not very well prepared for large-scale change.

This planet is currently on an unsustainable trajectory. And automation is only unbalancing our society more. In order to ensure continued “dignity of wage” we need to either limit automation, or limit our population. The reason is that automation is that it can transcend international borders without a visa, but human beings can not.

Sometimes this leads to strange side effects. When I was in Bangalore, the parking lot at my office had a security guard who would flag you down while entering and note down the vehicle’s registration number. Years later, someone decided it would be a good idea to install an automated parking gate, as seen around Europe and North America. I’m not sure what they were thinking, but then we had 3 security guards instead of one: one to press the button on the gate since it was installed too high up to be reachable by drivers of average Indian height in average Indian cars, one to make a manual note in the register as a back up, and a third to supervise over the first two.

Which brings me to the next point: Any transaction that involves a human being is inherently potentially flawed. No amount of automation will make our world perfect or optimal, as long as it’s still “our world”.

“Creating Jobs”

The tobacco industry employs more than a 100 million people worldwide. If we want to create more jobs, we should all smoke more cigarettes. By extension, conflict has traditionally been the biggest source of employment: In research, manufacturing, exports, destroying settlements, and providing private security while rebuilding them. As a Green Beret recently pointed out, in today’s job market a Special Forces training is better than an MBA.

So there you have it, the solution to all our economic problems is perpetual war.

Or we can take inspiration from a bunch of African kids, and grin and share it. In other words, a Resource Based Economy instead of an Employment Based Economy.

Endnote: You really should read the link about the rise of the robot economy.

Update 2015-05-25: More food for thought: Self-Driving Trucks Are Going to Hit Us Like a Human-Driven Truck

“I just have to…” Project Management

(EDIT: This post was republished by PMHut.com here)

If you’ve worked in/with a software development team, in any capacity, you have heard this optimistic statement before: “I just have to <insert_trivial_sounding_technical_task_here> and then I’m done!”

  • “The new approach worked. I tested it. I just have to move this method to the other class, and then I’m done!”
  • “I’ve committed my changes in a branch. I just have to re-run the tests once more, and then I’m done!”
  • “I’ve finished everything. I’m ready to start the next task. I just have to update the README and then I’m done!”

Well, you know what they say: in any software project, 90% of the work is completed in the first half of the schedule. To complete the rest 10%, it requires the rest half of the schedule, plus another 50% schedule overrun, plus x extra resources, everyone working overtime and oh yeah, we’ll ship the documentation later because we were focussing on delivering the functionality… you get the point.

You know Brook’s Law? It applies to machines as well. When you write tools and post-build scripts to automate development tasks, when you adopt the latest DVCS, when you start using the latest test automation framework… you are adding resources to your project. And it has been clearly established that adding resources to a project that is already behind schedule (and which project isn’t) is only going to make it later.

Here are a few things I’ve learnt over the years:

  1. Nothing on planet Earth is a zero-time activity. Your plan: “I just have to move this method to the other class, and then I’m done!”. What happens in real life:
    • You need to get your code peer reviewed.
    • But there is nobody available at the moment to review.
    • You finally interrupt someone, because y’know, it’s just one method, you just have to quickly review it… (of course you would conveniently forget how you would feel if you were the one being interrupted)
    • What? It’s a public API? Then you have to update the acceptance tests.
    • And the unit tests.
    • Go back for peer review and sign off. After lunch.
    • OK, all done, just commit and… WTF now I need to merge?!
    • And rebuild.
    • And re-run the tests.
    • And re-start the PC because of that pesky Visual Studio bug.
    • WTF? Windows updates? Now?!
  1. Murphy’s Law is as fundamental to computer science as boolean algebra. It’s a pity they don’t teach it in school.
  2. Remember algorithmic analysis? When you estimate something, don’t always consider the best case. The worst case happens more often than you’d think.
  3. ABC: Always Be Collecting. Data. Statistics. Your past project data will show unrealistic your estimates really are. Nothing else can convince you as much.
  4. If you haven’t been able to solve a problem for too long (confused customer, unreliable dev environment, too many distractions or interruptions), then maybe it’s not a problem, it’s a fact. So adjust your future estimates accordingly.
  5. Say “out of scope” more often. Just because it’s software and easy to modify, doesn’t mean it should be modified. Agile doesn’t mean the freedom to constantly change requirements, it means adapting to changing requirements (amongst other things). Changing requirements doesn’t mean freedom to change fundamental constraints. Think of it this way: if you were building a bridge, it would be acceptable to try out different road surfaces. But would you change the bridge into a tunnel because it offers less wind resistance? And should there be a need in the future, you can just drop the already built tunnel underwater? Some software change requests and developer’s grand visions are equally unrealistic, and unnecessary.
  6. Life is a fractal. If you’re late every day, you will be late every month, every year… and you will feel the same way about your whole life. It happens at home too: “I just have to get dressed, and I’m ready to leave”. Real life: Get dressed, grab snack, drink water, close window, remove phone from charging, respond to missed call, tie shoelaces, oops mismatched socks, find keys, lock door, wait for stuck elevator…
  7. Work-life balance doesn’t mean work-life separation. Bring your good habits to work. Inculcate learnings from your work into your personal life. Why limit Continuous Improvement only 8 hours in a day?
  8. Learn from other’s mistakes. Every time someone is being a moron, they are secretly trying to teach you something. The daily standup is not only about you, it’s also an opportunity to improve based on others’ experience.
  9. Most importantly: Stop saying “I just have to…”  🙂

Takeaways from Craft Conference 2014, Budapest – Day 3

Continued from Day 2, here are the talks from Day 3 in order of my personal preference (and relevance) which may differ from yours:

Complex Projects aren’t planable but controllable

by Jutta Eckstein (Slides | Video)

Sadly, Jutta’s slides aren’t available online but the talk was packed with solid advice for Project Managers. Some of them were:

  • Our predictions are usually based on a coherent story, not a complex, dynamically changing reality
  • Targets should be ambitions, not absolute
  • Focus on the value gained, rather estimates of the effort required
  • Having an  annual budget is like having a bank that opens for business only once a year
  • Annual budgets are not optimal because they are never underutilized: the excess (if any) is still used up, never returned back
  • Consider [event-based] rolling budgets, rolling plans and rolling control
  • Check value and progress regularly
  • Don’t just trust the experts, seek feedback from diverse groups
  • Have different planning strategies for Roadmap (themes only), Release (features based on value & velocity) and Iteration (Stories based on value (+estimate) & velocity)

Recommended reading:

Architecture War Stories

by Stefan Tilkov (Slides | Video)

Probably the most amusing talk of the event. Stefan shared some hilarious real-life examples of architectural disasters… some of them still very much in use (of course no names were revealed). His advice was to go back to the basics:

  • Make data free of code dependencies
  • If it makes you want to pull your eyes out, maybe you shouldn’t be doing it
  • Better ask for forgiveness than permission
  • Development environment is not the same as production environment
  • Feedback, reflection, iteration

Responsibly maximizing craftsmanship in software engineering

by Theo Schlossnagle (Slides | Video)

Theo revisited the basic problems plaguing software development today and went on to share some of his experiences at Circonus. One of the tips was to treat all software you write as open-source within the organization, even if you don’t plan to release the source outside. Other highlights:

  • Turtles all the way down: Software at scale is tied together with loose string & hope
  • We use human language to describe software specifications, and this can be interpreted by different people in different ways (like poetry)
  • Technical debt is non-linear; large monolithic components are more likely to fail because they are hard to maintain
  • Reusability is good, but use the right tools for the right purpose. Accept that that right tool may not yet exist and may need to be written
  • Diversity is an emergent property of scale
  • Thou shalt be judged by your API

For software developers, the message was loud and clear:

kPhone_IMG_0951

Data-Driven Software Engineering

by Jevgeni Kabanov (Slides | Video)

Jevgeni went thorough the effort of analyzing 1000+ projects on Productivity, Quality and Predictability. Sadly the slides aren’t available, but the raw data they were based on is. You can still watch the video and grasp the most important points, such as the fact that the best software projects are delivered 80% of the time on schedule and still have 25% critical issues. Or that automated tests improve quality by 26%. There were also secondary interpretations such as code reviews improve architecture, not just code quality.

Jevgeni emphasized on the importance of measure & experiment over simply “doing agile”. Some suggestions for measurement were:

  • Deadline misses
  • Scope changes
  • Blockers after release
  • User satisfaction

The presentation became a bit controversial later but as Jevgeni said: “People, chill – I gathered data and presented my analysis – feel free to take the data and do a better job”. And I think this talk had the most creative closing slide ever 😉

Without Present or Past: How to Think Distributed – The Hard Way

by Endre Sandor Varga (Slides | Video)
By far the most profound and philosophical talks at Craft. If you have an interest in Distributed Systems, AI or Information Architecture, I would strongly recommend watching the video. The core concept was based on applying epsitemic thinking to systems that are distributed, concurrent, able to fail independently, and communicate over a lossy medium with non-deterministic communication delay. Endre touched upon:
  • Two Armies Problem
  • The final important message
  • Difference between actual state and observed state
  • The Omnipotent Observer (doesn’t exist, because state is always queried)
  • Global introspection and self-awareness
  • Cone of the past
  • The present is volatile and subjective
  • Going from someone knows -> someone knows everyone knows -> everyone knows everyone knows

Endre ended with this advice:

  • Have a properly defined failure model
  • Never assume reliable communication
  • Never assume common knowledge

Functional Reactive Programming in Elm and JS

by Evan Czaplicki (Slides | Video)

Evan is the designer of the Elm language and his enthusiasm is infectious. Over the course of his talk, he built and demonstrated a simplified (yet slick) Mario game complete with physics and reaction to keyboard inputs. Elm is a Functional Reactive Programming language for web browser based GUIs and this game was a fine demonstration of concepts that Bodil Stokke and Jonas Boner touched upon in their respective talks.

There is no doubt that Elm is a game-changer. Here is another example of traffic simulation.

Further reading:

Find the Right Abstraction Level for Your Tests

by Gerard Meszaros (Slides | Video)

If you’ve ever been haunted by the question of what level of testing is enough (and who hasn’t?) then this presentation was for you. The key message was to think in terms of not what you can add, but what you can leave out of the test: “if it isn’t essential to conveying the essence of the behavior, it is essential to not include it”. Over 39 slides, Gerard illustrated this step-by-step with one, continuous, easy-to-follow example.

Software Psychology: The Art of Listening to Code

by Bjorn Freeman-Benson (Slides | Video)

Bjorn talked about the concept of code screams: behavioral indications of a deeper problem in the system. For me the key takeaway was that you should continuously monitor your processes as well as your systems in production (e.g. by gathering usage statistics) and fix the root cause when a problem is found.

Others

Here are some talks that I missed, but which received a lot of positive feedback. Thanks to ustream.tv they are available online. Also check out #CraftConf on Eventifier.

Jackstones: the journey to mastery

by Dan North (Slides | Video)

McDonalds, Six Sigma, and Offshore Outsourcing: Unexpected Sources of Insight

by Chad Fowler (Slides | Video)

Testing the Hard Stuff and Staying Sane

by John Hughes (Slides | Video)

The Better Parts

by Douglas Crockford (Slides | Video)

Functional Examples from Category Theory

by Alissa Pajer (Slides | Video)