Genii Weblog

The very opposite of YAGNI - more like IYBITWCE

Wed 20 Aug 2014, 12:14 PM



by Ben Langhinrichs
There is a philosophy called YAGNI that many software developers and programmers will recognize. The acronym stands for You Aren't Gonna Need It, and it has been popularized along with the ideas of extreme programming and continuous refactoring (see YAGNI definition). The basic idea is that you shouldn't build anything until you actually need it. It probably even helps a lot of developers and teams, but at Genii Software, we go the opposite direction. A good part of what we build is not currently necessary, is purely speculative, or is sufficiently far ahead of what customers want that it could be considered a waste of time.

Yet we virtually always need it, and we seldom have to the time to create it at the time it becomes necessary. While this is mostly true of smaller parts of the code which nobody externally will see, it can also be seen in the larger, more visible efforts, such as:

CoexLinks Fidelity: Most of the functionality and development was done in 2009 as part of iFidelity, but the world wasn't ready. Now, after more enhancements protecting against data loss (see 4 minute demo) and the addition of the Message Store (see 3 minute demo), companies large and small are lining up to take advantage of the product whether because they are moving to Outlook or Gmail and need better rendering of application emails, or simply have the budget available now to enhance their outbound email without a huge commitment. If we were to recognize that need now and start development, a finished product would be two years away.

Exporting to EPUB - Building on even earlier work to manipulate and process XML and zip files for Open Document Format, we put a lot of time in 2011 to export rich content to EPUB format so that a customer could make an instant eBook. I posted the results of this a few times in 2011 in posts such as Viewing Notes/Domino fixes on a mobile device, though the functionality was not released until Midas LSX V5.00 in November 2013. We kept working on it, winding up with a fairly elegant and powerful solution (see 5 minute demo). At first, nobody paid attention. The video only has 65 views, yet we have had five companies buy Midas for the Export to EPUB feature in the past three months, and three more are evaluating it. The main reason seems to be that the mobile devices, especially iPhone/iPad, have added native support for EPUB files, so sending customized on-the-fly polished eBooks to customers is more and more appealing. Again, if we saw that need now, we'd be years away from a polished product.

So, YAGNI? Not so much. More of IYBITWCE (IYou Build It, They Will Come... Eventually)

Copyright © 2014 Genii Software Ltd.

What has been said:


1069.1. Doug Finner
(08/20/2014 06:59 PM)

Keep in mind the whole 'vision' thing. There are lots of folks who have ideas for useful tools that turn out to have little value (and probably the reason YAGNI was invented). There is a subset of the development community who have a very good understanding of what businesses actually do and the kinds of tools that add real value. I'd suggest that you fall into that second category and your decision to work on these concepts was grounded in a deep understanding of how to make systems work better.


1069.2. Ben Langhinrichs
(08/20/2014 07:14 PM)

Thanks, Doug. I appreciate your kind words. (And I certainly like that interpretation more than my simply being so damn stubborn that once I've built something I won't rest until I find some use for it, which is another alternative.)


1069.3. Andrew Magerman
(08/21/2014 05:14 AM)

I'd agree with Doug. YAGNI is not arguing against product development nor making estimate's of customer's needs. I see it more as an effort to fight the anti-pattern of having too many layers of abstraction - i.e. fighting the urge to change a practical solution to a more general one, which introduces too many abstractions. Take WAS for instance: it's massively configurable, but the added complexity is of the same order of magnitude as that which it tries to simplify --> waste of time.


1069.4. Ben Langhinrichs
(08/21/2014 06:07 AM)

Andrew - That's a helpful perspective, actually. I've spent a lot of years in my own company (in more ways than one), and don't always understand completely what the trends are out there. The WAS example helps a lot.