Innovation is not a Linear Phenomenon: The Faraday FF Zero 1 Example

Innovation ‘R’ Us

Every company is trying to “innovate” these days… no matter how large or small. Some of the bigger ones are virtually pleading with their multinational workforce through challenges, awards and incentives to come up with the magic pill that will help the company sail through stormy waters (As Alf Rehn summarized it [1], “in April we innovate, in May we fire people”) .

The smaller ones… well, there are companies based entirely on nothing else but “an innovative solution” to do something you could already do before (but this time in a Javascript framework). Looking at it from the Lean Startup perspective, I find it a bit weak when a whole business is based on the USP of “innovative”. Your solution could be based on quality attributes [2] that make it faster, scalable, interoperable, customizable, streamlined, or really 100 other ways that could maximize value… the means to achieve these better be innovative, because that’s the very least your customer expects from you!

Have you ever heard a Formula 1 driver call himself fast? Or a firefighter call him/herself brave? Or a surgeon boast about how precise she is? No, because these are attributes that are inherently expected of them. If they weren’t fast or brave or precise, they wouldn’t last very long in their line of work. Similarly, today all technology companies are expected to be innovative in order to survive. You know who boosts their own ego publicly? Pop stars:


Innovation is… Not Where You Think it is

Now, about Faraday. Earlier this year at CES I picked up this leaflet from the Faraday FF Zero 1 booth. Since then, I have thought often of the part marked in red below:


“SVP of R&D … spotted a drawing of a racecar on a designer’s desk and thought …”

BOOM. Innovation happened. Did the designer have a mandate to come up with a supercar? No. Was the SVP in an in offsite innovation workshop, brainstorming with other employees? No. Was there an innovation competition or challenge going on in the company, with an award at the end of it? Probably not. This is possibly the best example that innovation does not happen in an institutionalized manner. When successful innovation happens, it comes from the most unexpected places, more often than not driven by synergy, and it opens up a non-linear value proposition:


Original image credit: [3]


An Indicator of Innovation

These days some people are solving more problems with a Raspberry Pi over a weekend, than during a whole week of work in front of a corporate laptop. What can leaders do to harness this immense creative potential? I think the answer is to build an organization conducive to innovation, geared up to quickly change course when an innovation potential appears on the horizon, and… basically get out of the way. Easier said than done, you say… there are risks, budgets, stakeholders, possibly even (shudder) committees… no way this is going to work.

Which brings me to the final point: how deeply is trust rooted in the company’s culture? In Faraday’s example, the SVP trusted that something produced by one of his designers was potentially a big deal. It did not come up through a chain of committees and approvals. It happened through synergy. And while structure can stifle synergy, trust can help it thrive.

I therefore argue that the amount of trust in a company is a solid indicator of innovation potential. How much employees trust the leadership’s direction, how much coworkers trust each other (even across borders and timezones) and how much the leadership believes in the people they hired: these factors determine how likely synergistic events will be recognized, and nurtured into products or solutions that are called “innovative” by customers and competition, not just by the companies themselves.

[1] Alf Rehn, “How to Save Innovation From Itself”. Craft Conf 2016 talk.

[2] George Fairbanks, “Just Enough Software Architecture: A Risk-Driven Approach”. InfoQ interview and excerpt.

[3] MintViz.


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):


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:


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

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

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 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.


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.






Evangelizing Lean Product Development

I’ve written and tweeted before about how influential I think Eric Ries’ The Lean Startup has been for me. While we wait for Eric’s next book, The Startup Waywhich is more focused on bringing lean thinking to big companies (and by the way is being researched in a very interesting way — read about it on KickStarter), the timing was right for me to assimilate my thoughts and share them with a group of colleagues.

Lean Prezi pub

While I’m still waiting for the feedback to pour in for my 3-part course, I’m very happy to have had the opportunity to share with others that “Lean” is not just some black art practiced in car manufacturing plants, and “Entrepreneurship” can take root even in large, established organizations. Now, more than ever, we are all living (and trying to thrive) in “conditions of extreme uncertainty”.

I hope I have been able to get across some of the thinking behind the concepts covered in Eric’s book: the Build-Measure-Learn feedback loop, the Minimum Viable Product, Innovation Accounting, Vanity Metrics, practical techniques like Cohort Analysis & Five Whys and finally the most relevant: The Innovation Sandbox.

I also threw in a bit of George Fairbanks’ Just Enough Software Architecturewhich addresses “engineering risk”, as opposed to “project management risk”. And of course, lessons learned from my enlightening weekend at Lean Startup Machine a couple of years ago.

The coming days will tell if the course was useful and comprehensible enough for others to practically apply some of the principles to their projects. I hope that over time we can build a community of like-minded lean practitioners within the organization, acting as enablers of sustainable innovation. #WasteNot.

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.

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:


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.


Here are some talks that I missed, but which received a lot of positive feedback. Thanks to 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)


Takeaways from Craft Conference 2014, Budapest – Day 2

I had the privilege of attending the speaker sessions of Craft Conference last week, the central theme of which was software craftsmanship. There were many inspiring talks and so was the venue. Think of it as TED for software developers. The icing on the cake was free beer, complimentary Palinka, unlimited coffee and a blues band. 20% of the speakers were women (but only 4% of the attendees) and ~350 of the 900+ attendees were from abroad. The event was virtually flawless. The usual systems that breakdown at scale: WiFi, food and toilets, all just worked. Plus there were small thoughtful touches such as English translations of useful Hungarian phrases on the attendee badge. Everything about the conference was impressive, including the raffle prizes which included a R/C drone!


Other interesting features were the use of to manage audience questions in real-time, and a live-projected twitter feed. I had the opportunity to interact with practicing or aspiring software crafts[wo]men from Ukraine, Japan (ok, technically SF), Netherlands, Sweden, North America, UK and… India!

I’ve tried to distil out the summary of talks that interested me. They are ordered by my preference, not the order in which talks were actually conducted. These are my interpretations and my views, so please bear in mind that they could be wrong or biased. There were 3 tracks (parallel talks) over 2 days, so essentially I attended only about 1/3rd of the total. Day 2 was the first day of the speaker talks… I didn’t attend day 1, which was workshops.

I strongly recommend checking out the agenda and viewing the talks that interest you online, you might find some that I didn’t attend but are of direct interest to you. To me the top 3 recurring themes of the conference seemed to be:

  1. State management in complex and distributed systems
  2. Better automated testing & TDD
  3. The abuse of agile (in development and in project management)

How I Learned to Stop Worrying and Love Flexible Scope

by Gojko Adzic (Slides | Video)

Probably one of the most-loved and honest talks at Craft. The storytelling was simply mind-blowing (an example of agile from 1628 AD, Ducati’s experience with the Second System Syndrome, threats to competitive advantage from Google & the Russians) and so was the message. I would highly recommend watching the video, Gojko is an outstanding speaker. The highlights were:

  • The most common software development methodology these days is WaterScrumFall, in which all the essential planning is done upfront by management and the development is done in a [predictable] number of sprints
  • This is because the concept of agile is not attractive to management, unless they truly believe in keeping scope flexible. Therefore agile generally remains underutilized.
  • Agile is not just about continuous delivery, but also continuously reacting to local, temporal and human factors
  • Project plans and roadmaps should not be linear, but literally a “map of roads”: multiple options with selection criteria (like a GPS). A roadmap with a pre-decided outcome is not a roadmap, but a road in a tunnel.
  • Try new things, at a survivable scale and select the ones that work (Throwing away bad code is a way to reduce your technical debt)
  • Don’t just ship software, make an impact
  • On the topic of outsourcing: Usually the objective is to minimize costs, so the focus is not on excellence or flexible scope
  • On User Stories:
    • Are a way to delegate details
    • Avoid translating the product roadmap into a set of JIRA stories, instead consider hierarchical backlogs
    • Add a victory condition to your user stories, which is related to changing user behavior rather than complying with the existing behavior (e.g. Monitor inventory *faster*)
    • A good user story is a survivable experiment

Recommended reading:

Agility and the essence of software architecture

by Simon Brown (Slides | Video)

This was also one of my favorite talks. I like to think of it as Minimum Viable Architecture for developers. Simon is an inspiring speaker, more so because he eats his own dog food. The premise was simple:

  • Agile delivery does not imply agile architecture
  • Agile development still requires upfront thinking to define the overall architecture
  • The team must have a shared, consistent vision of the significant structural elements of the product
    • With this pragmatic tradeoffs can be achieved: e.g. a monolithic deployment container, containing microservices
  • UML was supposed to solve this problem, but it is poorly understood, not widely adopted and has its own overheads

The solution: NoUML! Abstraction is more important than notations. A team can define their own legend for these abstractions. Design diagrams are supposed to reduce complexity (through abstraction), not increase it. The 3 things that the team needs to have a common understanding of are:

  • Structure
  • Risks
  • Vision

In real life, we rarely have 1:1 mapping between design diagrams and code. In general, a hierarchical C4 architecture diagram can solve this problem:

  • Context
  • Container
  • Components
  • And optionally, Classes

And yes, while good architecture is a shared responsibility, it is important that only one person (or a small group of people) are responsible for maintaining the overall architecture definition.

Bring Software Architecture Back!

Recommended reading:

Getting Things Done at Scale

by Amber Case (Slides | Video)

This was a talk I could relate to a lot, because of GTD and the differences in corporate cultures of large, old organizations vs smaller, newer ones. Amber is a TED speaker, and it clearly shows. She shared her experiences during (and after) the acquisition of Geoloqi by ESRI.

Only 1 of 50 people she spoke to for advice had a happy acquisition experience, and the main reasons were:

Crippling management/overhead to get simple things done Culture clash
Founder flight Jealousy/blocking from parent company employees
Lack of detailed transition plan Sprinters vs Marathon Runners
Loss of passion for original product Loss of respect and cross-compromise

The solutions discussed were:

  • Pre-negotiate, don’t be vague. Predetermine your outcome.
  • Learn the local language (technical terms, tools, company culture)
  • Win friends to influence people. Develop trust.
  • “Beta test” people via small projects. Best code wins.
  • Scale teams down from unmanageable numbers to 5-6 “doers”
  • Communicate. Respect. Give first.
  • Small revolutions
  • Distribute stress

An interesting concept was the creative use of IRC bots, e.g. to send out a daily email summary of accomplishments (!done). Towards the end, she also shared an effective way of “organic hiring”: turning contractors into full-time employees.

It’s never too late to fight your legacy!

by Mate Nadansi (Slides | Video)

Mate delivered a very strong and reassuring message: Legacy code isn’t bad, just old or over-iterated… and, with some sensible planning, foresight, and many iterations of hard work, it can be replaced by more modern code. He explained how they achieved exactly that at The presentation requires some familiarity with web programming but it would still benefit anyone working with legacy code… because maintaining legacy code builds character. 😎

Programming, Only Better

by Bodil Stokke (Slides | Video)

The core message was about how the introduction of multiple [mutable] states makes programs unmanageably complex. Topics included:

  • Referential Transparency
  • Representation of state using numbers instead of objects to it remains immutable
  • “Encapsulated state” is still state
  • Effect on concurrency
  • Additional complexity added by control structures in contemporary program

The presentation itself was a work of art and for me the highlight was that Bodil was editing & running code from within the slides!

Recommended reading:

  • Out of the Tar Pit, a 2006 paper about Functional Relational Programming by Ben Moseley and Peter Marks

Going Reactive: Event-Driven, Scalable, Resilient & Responsive Systems

by Jonas Boner (Slides | Video)

Jonas gave an inspiring and pragmatic talk about how the nature of, and expectations from, applications have changed dramatically over the years. The highlight was that not only did he distill them into the 4 attributes mentioned in the topic of the talk, but also shared valuable insights into how to practically achieve them from a technical standpoint. Some of the approaches discussed were:

  • Loose coupling
  • Never blocking
  • Asynchronous operations
  • Actors and Agents
  • Futures in Scala
  • Minimizing contention
  • Maximizing locality of reference
  • Single Writer Principle
  • The relation between scaling up and scaling out
  • Decoupling error handling from business logic
  • Bulkheading to prevent cascading failures
  • Maintaining consistent latency across blue skies conditions, high traffic and failure

Recommended reading:

What Makes a Good Development Process?

by Bruce Eckel (Slides | Video)

Bruce Eckel is an industry veteran an author who needs no introduction (I read his textbooks in high school). I highly recommend going over his slides, they are very comprehensive, thoughtfully put together and highly informative. He has already distilled years of experience into a few pages, and I don’t think I can add any more value except quoting the one thing that stood out for me: The cognitive load of carrying tensions prevents us from doing creative tasks well.

Acknowledging CAP at the Root – in the Domain Model

by Eric Evans (Slides | Video)

This talk dealt with a very specific type of problem (CAP = Consistency, Availability & Partition tolerance), and solving it using a domain-driven programming model. One of the interesting concepts was that of defining aggregates within a distributed system. Instead of trying to keep the entire system in a consistent state, the contents of each aggregate are guaranteed to be consistent (even if equally stale). There is only a single point of reference into an aggregate. Aggregates are contained within a bounded context and transactional consistency must not cross these boundaries. Domain events interpreted within this context cause state changes. Eventually overall system consistency can be achieved through synchronization according to a reasonable SLA.

Don’t forget to check out Day 3!

You Should Work for a Startup

(This post is mostly applicable to Software Engineers in Bangalore with 0 – 4 years of experience, but I’d like to believe there is something in it for everyone. It contains a lot of [mostly informative] links, which are its true purpose, but by no means do they form a comprehensive list. I’d like to thank the respective authors/creators for their hard work and inspiration. The views expressed are my personal, representative over-generalization and are not intended to single out any individual or company.)

We’re Living in Startup Decade

Never before in history has this planet witnessed the co-existence of:

  1. So many people with innovative & creative ideas to solve problems;
  2. The mass availability of education, tools & technologies to turn their ideas into reality;
  3. Such a large number of rich people looking to get richer by risking investments in the problem solvers’ ventures, a.k.a. Startups.

I’m not just talking about “tech”, “web”, “internet” or “IT” startups (which is the popular usage), problems being solved and new markets being explored by startups include mobile banking, solar power and curated fashion products, not to mention anything that can be sold or re-sold online (a.k.a. e-commerce). Although the term “startup” is fairly recent, the concept isn’t new: 30 years ago if you couldn’t get a government job and rented a shop to sell your cousin’s home-made jewellery instead, you were an entrepreneur. The only difference is that now startups have become fashionable gained popular recognition.


The Numbers

Consider the statistics: last year, 1200 new technology companies were started in Bangalore alone. Many of them were funded. Some of them probably won’t make it through to the end of this year. Yet others will pivot as they struggle to narrow the gap between the need as perceived by them vs as perceived by their customers. But by any standard, this is a large number of companies to be starting in one city in a single year (Bangalore ranks 19th in Startup Ecosystems globally).

With all these opportunities around, is a 9-to-9 job at a well-established “corporate organization” (that typically still works on principles established decades ago) the best use of your time & skills? Take a few minutes to reflect on “Why I Quit A Six Figure Job” and “Doing What You Love”.

While we’re on the topic of figures, starting salaries at most large organizations (You know the ones I’m talking about, the ones that established a thriving “outsourcing” ecosystem many years ago but neglected to evolve further, with the result that in 32 years of IT they produced zero software products, only services. But there is hope yet.) have remained stagnant for the last 4 years, if not more. The unabated rise of Social Networking has made the concepts of “individuality” and “personal branding” popular, accessible and increasingly, a replacement for traditional thought. Unfortunately, organizations of yesteryear are still struggling with that concept. They are still looking for “skilled resources”, whereas the rest of us have moved on to become, well, human beings with personalities, interests and capabilities beyond skills granted to us by formal education. Which is probably why applying for jobs doesn’t really work that well anymore.

Small, Specialized & Smart Companies are the Future

There was a time when government jobs were considered secure. Then massive organizations employing hordes of engineers became the employers of choice (not just for the engineers, they also brought up ancillary administrative & support industries such as transportation, security, food, facilities management and so on). In today’s unpredictable economy, you’re fooling yourself if you think any job (or investment) is secure. For a deep long-term view, read this. When a planet’s resources are stressed by a single overpopulated species, unexpected outcomes occur. Therefore, work for a startup. Chances are that your job, as long as you have one, will be more satisfying than any other. It is also more likely that you will be solving a real problem rather than an imaginary one (imaginary problems  are the ones that created by overstaffing, micromanagement, megareporting, multitasking, email ping-pong and customer interfacing by the wrong people at the wrong time).

So Where do I Start?

Boy, am I glad you asked.

1. Networking

The very foundation of the digital age is Networking. Not just networking as in the Internet. Here, by networking I mean the kind that involves stepping out of your comfort zone, going to places (events) you haven’t been to before, talking to people you don’t know, and most importantly, remaining in touch with them. Diversify your personal network into newer areas, technologies and ideologies. Give something back, help other people out and remain active all year round. If your LinkedIn activity suddenly grows 300% around the time you’re looking for a new job, you’re not networking, you’re leeching. On the topic of LinkedIn, (a) please be considerate: who you choose to add also reflects on those already in your network, and (b) please don’t be discourteous: e.g. don’t request someone you just spent 15 minutes with to write you a recommendation.

LinkedIn is not just for working professionals. Even as a fresher (or student), you can showcase Projects, Test Scores, Certifications & Skills, besides joining special interest groups (which exist for virtually every professional topic imaginable). Besides LinkedIn, you can get expert answers at Quora and StackExchange.

In the real world, here are a few events you can check out: BarCamp Bangalore, Startup Jobs Fair, Unpluggd and of course, always keep an eye on HasGeek. Look out for interesting events happening at co-working spaces like Jaaga. Bangalore is also proud home to several accelerators, such as Microsoft Accelerator, GSF and Kyron. Make yourself known in these circles as a smart person with skills, and you might just find an opportunity of a lifetime (startups are always looking for cheap labour 🙂 ). But let me tell you that “Myself XYZ, looking for a job” is not the way to go about it. We’re talking non-traditional methods here, and they work best through sheer serendipity.

Finally, when an opportunity presents itself, grab it.

2. Other Non-Traditional Job Sources

When was the last time you met someone who got their current job through Naukri or Monster? I can’t recall. Try the more relevant HasGeek Job Board instead. Keep yourself abreast of the latest happenings and trends in the startup ecosystem through NextBigWhat and YourStory. Get in touch directly with founders and co-founders of fresh companies that interest you, using a creative approach that convinces them that you can add value. Even if they don’t hire you, they might refer you to another startup where your skills are a better fit (because entrepreneurs network, too).

The conditions are right in India for unprecedented growth in Social Entrepreneurship, and social enterprises need skilled people, too. There are focused portals and job listings for that.

3. Building Skills

If you’re stuck in a dead-end job doing something (or nothing at all) that is not relevant to your educational background, past experience and/or future aspirations, fear not, you are simply experiencing real life.  The good news is, with an Internet connection, a little bit of self-discipline & motivation, and lots of coffee, you can learn any skills you want. Online courses started catching on from the time when MIT put their courseware online (M as in Massachusetts, not Manipal), and gained traction with Edx, Udacity, Coursera, Khan Academy and the like, and have gained such popular recognition that now you can get actual credits for them. You can use these courses to pursue technical competencies, management skills, design expertise, communication skills, foreign languages or anything else for which you haven’t had the opportunity yet.

Next, there are millions of Free and Open Source (FOSS) projects out there, to which you can voluntarily contribute (why?) as a Developer, a Domain Expert, a Tester or just help out with Documentation & Translation. No matter what the size or scope of the project (ranging from small hobby projects to the widely used Firefox Web Browser). Moreover, just about every major platform in use today supports Apps (e.g. iPhone, Ubuntu and Facebook) or add-ons/extensions/plug-ins (e.g. aforementioned Firefox, Winamp and GIMP) which anyone can develop freely (in every sense of the word). You can start by exploring SourceForge, GitHub and CodePlex for projects either of your interest, or an area that you would like to build competency in. The possibilities (and repositories) are literally endless, including, if you’re feeling adventurous, to kick off your own project (you can even crowdsource the funding if you need it). Try as much as you can to stay active in the community and remember to continue to give back (if possible, more than you take).

If you already work for a badly managed organization that has put you in front of a computer with nothing productive to do, please get the hell off Facebook, YouTube and E-mail and try your luck at TopCoder, CodeChef or TechGig Skill Test instead. There really is no reason for you be frustrated with your employer if they have given you free Internet with access to such fine resources as HackerEarth. If you’re good, you can even make some extra money on the side while sharpening your skills on sites like oDesk, Freelancer, Elance, Guru, ProgrammingBids and Projects2Bid (or you can just do it for a noble cause). We don’t yet have such interesting programs as Hacker School, Tech@NYU, Code Club and DevLabMTL in India yet (an opportunity for you?), but there are resources to learn just about any type of programming skills, whether general or specific. And once in a while, you will come across something potentially life-altering like the C42 Launchpad. No matter where you are in your career, I strongly believe you should always be working on one (if not more) side project. And you don’t have to be a programmer or a techie, voluntary opportunities exist for every type of skill set.

If you are a programmer though, remember:

1. The best programmers in the world are self-taught (for example the ones that write mind-blowing game engines)

2. There are only two ways to become a better programmer: (a) Read code and (b) Write code

Companies of any size tend to keep their employees deeply rooted in their own culture, processes and practices (how else would they get work done?), so make sure you keep yourself up-to-date on the latest advancements & thoughts in your field of work (some useful links for software engineers are on the right). If you don’t already, use modern tools like Twitter, Feedly & weekly newsletters to filter the information inflow. With a little bit of luck though, you can actually use this to your advantage: Look around for opportunities for improvement within your own team or department, and offer to build smalls tools or utilities, e.g. to automate a laborious review process (This concept is called “taking control of your own destiny”). What better way to learn an emerging language, platform or paradigm?

Finally, don’t hesitate to showcase the above in your CV — your initiative to go beyond your circumstances (i.e. bad fit in your college or first company) will make all the difference.


Let me take this a notch up and say if that you think you have an idea that no else has thought of yet, start your own company. Not everyone can do it, and if you think you can, there is no reason why you should not. Besides the greatly increased freedom & and sense of self-worth, in India it has the added advantage of being able to generate [meaningful] employment. If you think you’re not ready yet, identify your weaknesses and work on them.

More than anything, think big and consider the possibility that the primary function of everyone else on this planet is to prevent you from achieving your full potential (because just about everyone you meet will discourage you). Life is too short to be stuck in the wrong job, and this is the only life that has been proven to exist. Make it count… Good luck.

Update 1: June 28, 2013

After having discussions with a few people who read this post, I’d like to emphasize that in order to achieve the above you first need to get organized. At the very least, do you use a decent mail client (as opposed to web mail), keep your bookmarks organized, use a calendar to stay focused, have a system to manage your tasks, an offline and/or online method of keeping notes,  a means to collaborate with others and maybe even keep track of where you’re spending your time? Or something else along these lines?

Update 2: July 01, 2013

If you’re a reasonably good programmer in any one language, you can learn another one in a few minutes.

Update 3: July 06, 2013

Programmer. Come work for us. (Bring sense of humour.)

Update 4: July 18, 2013

Dr. Dobbs summarizes the most relevant advice for new programmers here.

Update 5: September 24, 2013

Entrepreneurship is risk free.

Update 6: January 04, 2014

You Weren’t Meant to Have a Boss.

Update 7: March 16, 2014

Infosys, TCS or Wipro? Or proud to work for a startup?

Update 8: August 24, 2014