Killing Off Wasabi (2015)
blog.fogcreek.com
blog.fogcreek.com
The drawback to this though was that the best are easily bored. FogBugz was an important cash cow for the company, but there were few truly novel problems to solve. This was not a "web scale" effort -- it was self-hosted software for tens to hundreds of seats.
So I speculate that they okay'ed the project just because it was an interesting thing to do that solved the underlying problem (albeit in a bit of a convoluted way). The simple cost/benefit analysis from a management point of view is simple; pros: your devs are happy and you get linux support; cons: it's a little more complicated and people make fun of you on the Internet.
Over time, Fog Creek came up with better outlets for this kind of nerd energy -- kiln was fun because there were mercurial nerds around; trello was a foray into server-side javascript. There was still a bit of that "the nerds rule" bad decision making that made FogCreek an awesome place to work, but it was more constrained.
Since then (and I'm way out of it now), a lot of the old school "just badass" programmers have kind of gone their own way and Fog Creek has hired folks who are better aligned with what they do and how they do it. I'm not sure if this is because of a masterful shift in recruiting philosophy or if the diminishing recruiting brand (due to Joel's blogging pause) led to the right kind of developers becoming interested naturally.
In either event, it was definitely a very interesting culture, and I'm happy to have been able to play along for a summer :)
A summer intern created their compiler ...
Anyway, I was always curious just how elite of a team they managed to maintain, so thanks for your comment.
Edit to add: whoever the devs were and are, hat tip for a remarkably stable system that does what it’s supposed to do. Since Kiln 2.2 or so landed way back when, the FogBugz/Kiln combo has done everything we need for support and development. Much to their sales team’s chagrin, it can be difficult to justify an upgrade, despite the allure of feature and performance updates.
At this point I think everyone who was working at Fog Creek in 2007 has left, including me. (Though I came back in 2013 and am still here.)
We have an excellent team, continuing to innovate on Manuscript and Glitch.
We spun off Trello, which was acquired by Atlassian for almost half a billion dollars.
We co-created Stack Overflow, which continues to be incredible.
1 Build for now
2 Choose tech based on ability to evolve
3 Evolve one use case at a time
Despite the (imho) horrors of having to maintain their own compiler, it seems Wasabi was a vehicle that supported the company's evolution. Once it became obsolete, the next evolutionary step was to get rid of it. Perfectly fine imho.
[0]: https://medium.com/@shoup.randy/evolutionary-architecture-27...
It seemed like a fun challenge to work on, but just like "lets rewrite everything from scratch", the kind of ideas developers come up with when they don't have to consider the big picture and overall cost.
The main problem most people make about rewriting from scratch or switching architectures or what-have-you is not doing it at all but thinking that it'll be a cheaper and easier transition that it will actually be and also committing too early to the new product.
A lot of this comes down to the arrogance of engineers and the devaluation of testing. The reality is that testing and real-world use have tremendous value in shaping products. Actual usage is one of the best ways to discover bugs, of course, and over time those bugs get fixed, leading to a more mature product. Similarly, actual usage is the best way to discover the gaps between the developers' design and vision for the software and what people actually want and need. More so when people trade hard-earned dollars for software. Developed software thus represents not just X number of hours of dev. work it also represents a tremendous number of hours of refinement, validation, and verification through "beta testing" (product use), in short: product maturity.
Trying to replace a mature product with an immature product is a disaster waiting to happen, even if the immature product is technically built on a superior foundation. The right way to do this sort of thing is to spend time running parallel development efforts, giving time for the new thing to mature and compete against the established product and allowing the market/customer base to make the transition as the new product gains maturity and becomes superior in practice not just in theory. Or, as people avoid the new product due to it failing to achieve its promises.
How much time could have been saved if they'd picked a cross-platform language, e.g., Java or PHP, and done the rewrite once the market had been validated with what was essentially a prototype? Instead they tried to shoehorn it into what they'd already written by writing half-baked solutions at the wrong layer.
Don't get me wrong, it's impressive technical wizardry to get as much of it working as they did, but the work was always going to have a short shelf life. They've done well for themselves either way, but I wonder what might've happened if they'd rewritten it upfront.
https://www.quora.com/In-Japanese-food-how-can-I-differentia...
/me wonders if it died in the forty-degree heat today
http://www.thewasabistore.com/
They sell the graters too. (You don't want to use an ordinary grater.)
I haven't tried their wasabi myself, but heard about them a few years ago and have been meaning to order some ever since, so this thread reminded me to look them up again.
Yes, definitely there can be valid reasons to write your own language/compiler etc. Of course, the size of the Facebook code base, not to mention engineering team, put it in a clear class of its own. And the Hack project was run by people with extensive experience in compilers and type systems, not a summer intern... hah. But yeah, it’s not a bad idea in all cases. Facebook, google, Microsoft and many others have invented new languages and/or written compilers. And I’m sure there are valid reasons for a small organization to do it as well — but I fail to see what made it justified in this case. Then again the product didn’t go belly-up, so there’s that.
I think it's cute that he thinks he could have open sourced his appalling kludge and gotten some free labor from unpaid OSS devs. He may have been right.