Jason Fried: How to Kill a Bad Idea
inc.com
inc.com
"Are you in the software business? I bet most of you would answer no. So let me put it another way: Do you have a website? If the answer is yes, you're in the software business. A website is software. It has utility, and that utility is accessed via an interface on a computer or mobile device. That's software."
Most business with a website are no more in the software business than they are in the electricity business or the plumbing business or the furniture business, even though without these things they would not be able to operate. Using software tools does not mean you are a software engineer/developer any more than flipping on a light switch or changing a bulb makes you an electrician.
Does your dentist have his diplomas, fellowships, and awards on his shelf? He's in the marketing business.
Does your dentist work on your teeth and makes you suffer and withstand amazing pains? He's in the dentistry business.
Does your dentist have a website? He's in the software business, regardless of if the website is a simple website so you can find his phone number or if the website provides a way to check your appointment date (or some other service).
Someone mentioned a dentist. If his website includes anything interactive, then part of his product to you is software. It might be a stretch to say he is in the "software business", but he (or an employee or contractor) is definitely delivering a software product.
"Because the purpose of business is to create and keep a customer, the business enterprise has two--and only two--basic functions: marketing and innovation. Marketing and innovation produce results; all the rest are costs. Marketing is the distinguishing, unique function of the business."
If you accept his logic, which I do, then to be in business is to be in the marketing and innovation business.
Marketers are in the marketing business. Programmers are in the programming business. Having a website that you use as a marketing tool doesn't make you a marketer, it means you use a product for marketing.
Chairs in your office for your customers? You have taken on the responsibilities of being a host.
We can debate indirect services, such as electricity to run a website, and I would say that that line of discussion is pointless. I rely on my electric company, but my customers rely on my website, and the customers blame me, not the provider I chose to host this feature, not the electric company that provides power to the web services provider.
Remember that the customer does not care about your problems. They care about theirs, and they see you as their cause.
Most businesses with a website are in the software business the same way most businesses with personnel that deals with clients are in the customer relations business and the same way most businesses with a product are in the marketing business. Using whatever tools you use to create a piece of software which you later put at your clients disposal automagically enters your company into the world of the software business. Granted most companies have simple websites that you don't really need to give much thought to after launch as a company, but that doesn't exempt you from the fact that you're offering a service based on software the moment you put that website up.
I'll buy the argument that operating an e-commerce facility so that customers' requirements being met and payments being received depends on some non-trivial lines of code have entered the software business though.
Hell I've seen some programs back in the day which where made just to display a box of with text. That's software also. Boring, small and useless software, but software nonetheless. The Irc warez scene used to be full with these type of ridiculous programs, though at least some had awesome 8 bit music.
However, the idea that all software should be pruned to the essentials does not work in all cases. Simple software does not always scale at the enterprise level.
What I mean by that is that resisting a commonly requested feature for Basecamp means that maybe 5000 of your x-million customers have a problem and need a workaround 5 times a day - 25000 workarounds, but only 5 times per company per day.
If you resist a feature for Massive Company 1, then they have to execute a workaround 700,000 times per day. That doesn't scale. Then, if you resist feature 2 for Massive Company 2, they have to execute a workaround 600,000 times a day.
So, software aimed at the enterprise gets bloated and terrible to use. However, this leaves a gap at the bottom for those who can choose a good minimal feature set to exploit. We should not condemn them.
The 37signals philosophy could certainly be applied to some extent if the key people had the right training and the appreciation for the complexity costs of software, but the particular challenges of doing this in the enterprise, and fraught with obstacles which 37signals wisely chooses to avoid by their very business model. And what percentage of stakeholders in a large enterprise have anything approaching the usability or complexity sense of the average 37signals employee? Certainly everyone creating software should be aware of what 37signals has to say, but they don't actually offer any insight on the truly hard problems of enterprise software. They choose not to solve those problems, but it doesn't mean they aren't real.
I disagree.
I have no problem with software being carefully managed to ensure that it remains coherent and that new features added are genuinely useful and not at the expense of existing features. But this can only go so far!
Would I prefer to develop software in Visual Studio 5 rather than 20xx to avoid bloat? Would a professional graphic designer prefer to use a 15 year old version of Photoshop because it's not suffered feature bloat? It doesn't make sense; the extra features have been added because people asked for them, because people find them useful. Something as simple as auto-checkout source control in VS2005 made my day when I first found it, saved me so much needless hassle, yet it's a feature outside the app's core purpose and so unnecessary? Rubbish.
What we want is well designed, coherent applications with equality of 'fit and finish' throughout. This is easier to achieve with a simpler application, so simple is being trumpeted as a virtue in itself. It isn't, though - we should be looking to develop applications as complex and powerful as both we can manage to develop well and our users can manage to use easily. This is complex, though, so we're dumbing down to 'simpler is better' and forgetting _why_ we're asking for simplicity - to retain a focus on quality.
Growing assumption? No, its an assumption that's always been there. I mean, isn't this the core of the Unix philosophy - small sharp tools? I'd rather have three separate programs that each are really good at what they do than a single program that's mediocre at what it does.
>Would I prefer to develop software in Visual Studio 5 rather than 20xx to avoid bloat?
I'd rather develop software in vim than either, and that goes back to what I was saying above. Vim is a tool that does one thing - edit text. I don't need my text editor to automatically suggest my next function call. I don't want my text editor to automatically compile code in the background. I don't want my text editor to take up hundreds of megabytes of memory to load metadata that I'll never use. I don't want my text editor to handle source control.
I want my text editor to edit text.
>What we want is well designed, coherent applications with equality of 'fit and finish' throughout. This is easier to achieve with a simpler application, so simple is being trumpeted as a virtue in itself. It isn't, though - we should be looking to develop applications as complex and powerful as both we can manage to develop well and our users can manage to use easily.
Specialization doesn't imply simplicity or lack of sophistication. Look at vim. Its unbelievably complex. I've spent years working with it, and I'm still learning new things about it. Its just that all the complexity and sophistication is focused towards one goal - making text editing faster. I can code faster in vim than I could in Visual Studio. The way I see it, a lot of VS's aids are like training wheels - they're great when you're starting out, but if you want to go fast, you'll have to leave them behind.
I'm pleased for you that you like the Vi family of editors - I'm relatively familiar with them, but can't stand them. I'll never understand its continuing popularity; I know other editors I'd judge as powerful in practical usage but which are no harder for an ordinary user than Notepad. When I want a straight text editor I use one, but there's more to developing code than just editing text and that's why I like Visual Studio (not that it's the best IDE necessarily, just the one I use for work) - it gives me a single, coherent, consistent interface for developing the program in a way that I find vastly more productive than when I was having to use plain text editors and jump between tools to accomplish routine tasks. I don't for one minute miss having to compile code to find I'd made a one-character typo that didn't compile, or had made a type referencing error. Nor do I miss having a separate window to jump to whenever I realised I needed to check out an individual file while on a bug hunt. I don't dispute IDEs have their training wheels and some of them get in the way, but plain editors have their obstructive limitations too. I use IDEs willingly having come from the other approach, not in ignorance of it.
To get back to my original point - we shouldn't be looking to make our tools simple but to make them ruthlessly focused on improving the user experience for our users. Talking paperclips are a bad idea but I don't believe that source control integration in an environment that will largely be used with source control is anything but a boon to developers or that other similar examples in other software are bad. We should be looking to make software as powerful as we can keep under control, not as simple / narrowly focused (I'm aware they're not the same but I don't believe the article would cite Vim as an example of simplicity) as we can manage. Workflow is good, context switch is bad.
I had a laugh reading your comment though and thought how one day there will be an app for that.
I recommended MMM to a friend when problems at his workplace sounded like things that came up in software design or project management. But when I reviewed the book, I found that a lot of the big-picture concepts required if not understanding, then at least familiarity with programming and/or older computer systems. It's still a good book, but I ended up feeling like he wouldn't get what I got out of it.
If we're talking about project management issues, though, I'd recommend Yourdon's "Death March" over "The Mythical Man-Month". That book has a lot more to say on how to deal with management that refuses to pick two out of "good, fast, cheap" and insists that all three are achievable.
Or should I say software business?
My feeling is that developing good software requires balancing saying 'yes' with saying 'no'. 37signals seem to advocate an extreme 'no' position with their software, which I think is probably as bad as saying 'yes' to everything.
That's all I had to read to know that Jason Fried was giving that lecture. Seriously though. Is there anyone here who pays any attention to Jason Fried and hasn't heard the water bottle analogy? It's been in every public presentation that I've ever heard him give.
For example, if water bottles were filled with ads, you wouldn't be able to tell if the water was clean inside. Likewise, if your site is filled with ads, people have a hard time finding the content they want to "drink".