Tag Archives: Steve Yegge

The Pendulum of Architecture

If you’re a developer, you’d probably have to have spent the last couple of years in a coma to not notice a trend towards simpler tools, but I want to write a bit about the changing tides in software architecture because I think there is more below the surface.

Around 3-5 years ago was the peak of an era that could be called “the Church of Martin Fowler”. Big software design patterns were in. All of our domains were to be modeled, everything needed a service class, and interface oriented design was all the rage.

Before anyone gets upset that I’m disparaging Martin’s name, let me see the man is a genius. And like any object of worship, terrible things have been done in his name, whether or not he asked for them. In other words, many of these patterns were applied to pieces of software that did not fit the patterns.

But I’m less interested in debating the past and more interesting in discussing where we are now. Rails was one of the first blows against large, complicated software creation. Today, many in the ruby community talk about the bloat of rails, preferring frameworks like padrino, sinatra, etc. Most new languages build super light weight web frameworks first. Look at compojure for clojure, or express for node. Personally, I happen to really like Sinatra, and have used it for a handful of sites that I help with in my personal time.

Does this mean software patterns are dead? Should we all move back to php (which may have been ahead of it’s time)?

I think there is something else going on, namely that tools are addressing a different level of the problem. Pragmatic programmers (literally, not referring to the publisher) often site the adage “use the tool for the job”. Combined with the long cited un*x philosophy that its tools “do one thing well” we can see a pattern emerging. Sites can do one thing well, expose their interactions via http, and build a system of of smaller systems and their interactions.

I don’t think the tools are moving away from complexity for simplicity’s sake, I think they are moving to a new way of dealing with complexity. The tools (sinatra, express, nancy) are designed to create subsystems and you are expected to stitch the subsystems into the complex systems.

It’s like SOA, with http as the service bus, and more explicit dependency bindings.

I think that’s an important distinction. Enterprise architects look at some of these simpler tools and feel that they are toys for smaller sites. But those that embrace them are saying back to that architect “why have tools that provide safety and assimilation across 50 developer product teams, when you can avoid having one big project with 50 developers?” And that’s not a bad question. There are some real analogies to Steve Yegge’s recent software conservatism vs liberalism post.

I’m not taking the position that one side is always right. These are approaches, and any approach tends to have contexts that are it’s sweet spot. But I think this new trend is massively misunderstood. Similar to how many folks think that NOSQL means “No SQL”, instead of “not only sql”.

One question is, can the vendors catch up? Or will this only be an open source trend? Microsoft cleaned up it’s web stack with ASP.Net MVC, but it’s still on the heavy side in comparison to the direction that the open source community is heading. Does Microsoft have the capability to embrace something the size of Nancy? Some would argue web pages (razor) was that answer, but it seems to lack the first class prioritization of routing and http that the open source frameworks do.

Thinking back, it’s easy to wonder why this didn’t happen sooner because of SOA. Maybe this is what the SOA community missed, that better (and simpler) tools were needed to build at the new level that SOA asked the developer to target.

Thoughts on Steve Yegge’s Google+ Rant

Let me say up front, Steve Yegge is my favorite blog writer. I think I started reading his blog in late 2007, and really picked up digging through the archives in 2008. He is the reason I still write blog posts. This blog does decent traffic for a hobbyist technical blog, but it’s still like pulling teeth to get comments. And blogs may just be fading in general, as people want more bite sized content. I’m not complaining, that’s just the 140 character world we live in.

Speaking of 140 characters, that’s one of the great things about Steve’s blog, brevity be damned, he writes what he wants to. Unlike twitter experts regular pithy updates, he drops novels, and then walks away for 3 months. But you need time to stew on the posts. I consider it an honor that one of my posts is cited on his wikipedia page.

So what did he do? He mistakenly posted an internal essay to Google on his public Google+ stream. It’s everything his best posts did and maybe even more. It’s brutally honest, funny, and making points at several different levels.

First, I wonder if it even was a mistake. His follow up on Google+ tends to make me think it was. But if not, there’s some “friggin’ genius” in his blundering. You can’t unsee things on the internet (insert your favorite internet porn meme here). By “accidentally” dropping a note like that, he may have just saved Google. Their lack of platform and dog-fooding is a real issue. And now, it’s clear to everyone at Google, and everyone outside of it. Every new product that Google launches will be scrutinized through the lense of that post. Google _HAS_ to react and take that demand serious. Speaking of, Facebook just launched an iOS Platform.

Again, I don’t think he did it purposefully. But you have to consider the analogy of a lawyer saying something inadmissible in front of the jury. You can tell them to forget it, but there is no “undo” button that takes you back to where you were.

Everyone wants to know what Google thinks. Will he be fired. First, I doubt it. Google’s “don’t be evil policy” would make it hard to fire a guy for being a public whistle blower, albeit on technical matters. But I want to know what Jeff Bezos thinks, as Steve takes him to task pretty well. Now he does call him the Dread Pirate Bezos at one point, which may be a hint that he’s just doing that for humor and realizes that Bezos is nothing like his own legend. But still, he may have done some career damage by talking that candidly about a former employer where he was pretty high on the chain, and for putting Google in that kind of spot. Facebook would certainly have some questions about that post before hiring him.

I thought he did a really nice job of summarizing what Microsoft does well, and what they don’t. Microsoft is baffled that it’s strength in tools (Visual Studio) and languages don’t trump environments like X-Code and Objective-C. Microsoft community members cite Objective-C as proof that developers just care about market share. That may bare truth, but Steve’s right about platform. Microsoft has opened up more API hooks into their products than you can imagine, but Apple does it elegantly. There is a much smaller surface, and a straight forward interface to working with things. I think that’s due to Apple’s desire for everything to have a clean design, and a gift that came when they chose to build a system with Unix under the hood. No wonder ever described Win32 as “by programmers, for programmers”. Want more proof that Steve is right? Look at what Microsoft just did at build. They didn’t release new languages, or new tools. They even resurrected C++. But they did release a new Platform, with a much cleaner API surface.

Finally, look at the community around Google for confirmation of what he’s saying. There are developers around Microsoft, Facebook, Adobe, Amazon and Apple. Because they can leverage those platforms while still striking out on their own. Adding value. How do you add value to Google Docs? Once you’ve configured a business account for a company, and trained their users, how do you continue to add value? You don’t. The only place Google has done this is with Android, and they screwed the pooch on the store model.

If Google rallies around his message, they could get their mojo back. After all, they understand Big Data better than anybody. They get horizontal scaling and Data Analysis like nobody’s business. And people generally still buy their ethics, and their is a culture around quality and intelligence. But marketing, innovation and what Steve calls Accessibility matter.

Now go read some of his best posts like:

That list may take you a day to read, and that’s if you can resist following the rabbit trail into further articles. Enjoy.

Finally, one of my favorite recent discoveries is his keynote inspiring developers to solve bigger problems:

Now if he would just write on his blog more often…

Oh, and for those new to following Steve Yegge, he’s one hell of a guitar player: