Monthly Archives: February 2011

The Gap

The internet has a democracy problem. It has too much of it.

What? You might ask: how could having too much of a democracy be a bad thing?

Because pure democracies are non-functional. Some folks think if we each had a voting button on our iPhone that somehow the world would be a fairer place, but it wouldn’t. One week we’d be invading Egypt, the next week Libya. One month we’d be bailing out banks. The next month we’d be throwing all bankers in jail. One month we’d elect one bunch of guys, the next month we’d throw them all in jail. People are fickle and easily moved by emotion — pure democracy is the mob, which never is a good thing.

That’s why many nations have a representative republic: we elect people who then make decisions for us for a period of time. Using this “proxy”, we manage to slow down the tempers of the masses and get things done (or so the theory goes)

But you’d be lucky to get that far in a conversation online. Voting? Good thing! The more of it, the better.

I love watching groups of people reach decisions, and I love seeing how some structures work and some don’t. What I’m seeing online, however, is that hundreds of millions of folks are having discussions in which, although they know nothing of the background, they are perfectly willing to apply some 3rd grade social studies ideas to how the solution is supposed to work. As we continue to democratize everything online, this lack of foundational knowledge is going to really hurt all of us.

There exists a gap between what’s required to do stuff folks want to do and the actual knowledge they have to go make it happen.

Continue reading

If you've read this far and you're interested in Agile, you should take my No-frills Agile Tune-up Email Course, and follow me on Twitter.

Code Complete

When I started hn-books, it was just a lark. Still is, really.

One of the things I enjoyed doing was listening to hackers talk about how great certain books were, then going off and reading them myself.

With this latest book I’ve reviewed, I didn’t have to do that. Code Complete is my favorite programming book, so the review came very easily. In fact, it was downright impossible to say anything bad about it.

If you like the book, or if you’re interested in becoming a better programmer, check out the review.

If you've read this far and you're interested in Agile, you should take my No-frills Agile Tune-up Email Course, and follow me on Twitter.

Book Pushers

The last large contract I worked on, we had the book guy — you know, the guy who brought a new book in every week. Each book was awesome, and many of us usually gathered around to hear how he was enjoying it. We sat around drooling over the book jackets. Very sad. (grin)

I got some good books based on conversations with that guy, but I also got burnt-out. Every week a new book! After a couple of months my “to-read” stack had gotten completely out of control, taking up it’s own corner in the house. After four months I almost started dreading to see which new book he would bring.

You know, I got so burnt-out on books that I stopped reading for almost six months? I actually started resenting the guy, calling him a “book dealer” and “book pusher”, just like the comparable “drug dealer” and “drug pusher”. I tried to be friendly, and I liked the guy, but it was just too much.

Of course, it’s nothing like drugs: books are good for you, even books that aren’t written so well. Living in the boonies, I have learned everything I know from reading books, so of all people, I’m definitely not one to complain! And his and my reading speed were completely different: he took large chunks of time to read, while I found other things to do.

And — to beat all, I ended up starting hn-books, a site dedicated to using books to answering questions hackers might have by telling them what other hackers are recommending to each other.

If there is a Great Kahuna, he has to be laughing about now.

What I’ve found with my book experiences: with being self-taught, with getting great book ideas from other hackers, with writing a couple of small pieces for programming books, with starting my own site — is that books and hackers go together in a way that I think is even tighter than fiction authors and their readers. As hackers, things are changing constantly: somebody told me once that every two years, the cutting edge of programming ditches about 80% of what they knew and pick up something else. I don’t know if that’s true or not, but I know that this business is fast-moving and dynamically-changing in ways other businesses are not. And I know that books contain the key to mastering that in a way that conferences and verbal communication does not.

Not only do we learn around books, we socialize around books too. I’ll never forget the first team I had in which everybody had read Code Complete. Woo hoo! We’re really going to crank out some good code now! Or the first time I met somebody else who grokked analysis from reading Coad-Yourdon’s Object-Oriented Analysis. If you asked me today to name the one technical problem I see over and over again with companies, it’s failure to understand OOA and how it’s different from OOD or OOP. Everybody just lumps them all together, and nobody knows how to do analysis. Crying-out loud shame.

We even measure our professional lives by books. I can remember many points in my career where reading a certain book made a big difference in the way I did my job and the way I looked at others. Many times I took the ideas in the book too far, eventually figuring out that books are much more advisory than instructive, but that’s part of growing in your career as well.

So I have really enjoyed getting back into reading books on hn-books over the last couple of months. I’ve also enjoyed getting emails from other guys who are also writing book sites. Just today there was a cool one posted on hn, “hackerbooks” And I’ve had a bunch of other guys tell me their sites are almost done.

I think that’s great, and I can’t wait to see what ideas others have. The stuff we do as hackers is so complex, there are so many moving pieces, that we need to do whatever we can to help each other try to sort out what’s a good thing to read versus what’s a waste of time. Because if we don’t do it, the book publishers aren’t going to do it for us. This isn’t “what did Stephen King write lately”. This is “What do I need to know to achieve goal X?” A hell of a lot more important.

We are coming up on 12 reviews for hn-books, after which I promised to take a look at the numbers. My early impressions are the site will never be more than a hobby, perhaps paying for the books I read and maybe a bit more, but even if that’s the case, it’s still valuable to me. And I think to the community as a whole.

Maybe being a book pusher isn’t that bad of a thing after all.

If you've read this far and you're interested in Agile, you should take my No-frills Agile Tune-up Email Course, and follow me on Twitter.

The Mythical Man-Month

Just got through reading Fred Brook’s “The Mythical Man-Month” over the weekend.

Very interesting and thought-provoking book! It works both as a story of how the IBM System/360 was built, a story about how software development used to happen, and a warning that we keep making the same mistakes over and over again.

I’ll let you read the review for The Mythical Man-Month over on hn-books. Hope you like it!

If you've read this far and you're interested in Agile, you should take my No-frills Agile Tune-up Email Course, and follow me on Twitter.

Programmer as Market

Something has been bugging me about Microsoft and other tech vendors for some time. As I was reading and responding to a comment over on Hacker News it finally jelled in my mind.

The commenter wanted to know if TDD/BDD was useful in startups. Of course, the answer, like all answers to these questions, is “it depends”. But feeling a bit punchy, I just said “no”, then outlined why the answer was no.

I got a bit of pushback, much of it along the lines of “but TDD/BDD is _good_ development. Surely you’re not telling us to be bad developers!”

Yes, I am.

Fact is, startups are all about making things people want, not being a great developer. Your program is number 50 on the list of important things for you to do. You might write 10 lines of Javascript and make a million bucks. Or you might write the cleanest, most gorgeous code anybody has ever seen and make zero.

It has nothing to do with code. It has to do with finding and meeting customer needs at scale. In fact, the odds are 20-1 that your entire effort is worthless no matter what or how much you code, so don’t write code to be maintained. Don’t write code to be pretty. Write code to get it done as quickly as possible so you can move on to the real game: customers.

This doesn’t go over well with most folks. I know it didn’t go over well with me.

The problem is that we developers have become a market, and like all markets, people are trying to sell us stuff. These people do not have our customers in mind — for them we are the customer. Instead they have us in mind.

People try to sell us stuff based on whether or not we want to consume it, not whether or not it’s useful to the people as programmers we are trying to help. This creates a bit of perverse incentives.

Don’t like talking to people? No problem. You can read a hundred programming books and none of them will tell you that you need to do that — even though “talking to people” has to be the most important thing a programmer does. Like cool little widgets instead of fuzzy problems? No problem. There are myriad vendors out there who will sell you all sorts of cool little widgets. You can spend the next ten years becoming a widget expert.

You see, what I found with Microsoft — and what’s true in the industry as a whole — is that they could care less about helping me help other folks. What they want to do is meet whatever pre-existing prejudices I might have as a programmer. Wonder what cool features C# 5.0 will have? Wonder who in the real world cares aside from us programmers?

This feeling was a long time coming, and like every person that has been conned, it took me a while to wake up. What? You mean all those things I spent money for were useless?

Last week I went through my office cleaning up. You know how many tools and languages and other pieces of crap I’ve bought over the years? A zillion. Just how many calendar controls does one person need, anyway? Will there be some calendar control Apocalypse, where everyone will suddenly have to write their own day-planner?

I have spent hundreds of thousands of dollars on software, tools, books, and equipment that tell me what I want to hear — that programming is a complicated yet noble profession which involves mastering lots of technical details and being plugged into the latest technology. But programming is helping people, not any of that stuff.

The same goes for TDD/BDD — and a lot of other things. We get sold this idea that programming is high craftsmanship. That there are “good” programmers and “bad” programmers. The “good” programmers all do things this certain way.

Yes, some things work better than others. No doubt about it. But people who sell us stuff don’t necessarily give us all the times when their stuff shouldn’t be used. For them, it’s good for almost everything. They have no incentive to provide context to us, because many times the context in which what they are selling is useful is very small, but the context in which we might imagine their stuff is useful can be very large indeed.

Do you know how many hundreds of millions of dollars — perhaps billions — I have seen spent on enterprise tools which all boil down to “your programmers need help to do things the right way. Our tools will change their behavior so you don’t have to”

Never works, but still folks spend. Marketers are selling folks on a vision of what they would like the world to be, instead of what the world really is.

Yes, I would to live in a world where having some cool new set of programming tools would mean that I have an awesome startup, or that I’m able to help people simply by clicking a button somewhere, but that world doesn’t exist anywhere outside a seminar, conference or sales pitch. In the real world, real people grapple with fuzzy difficult questions, they don’t always get along, and they implement suboptimal solutions that are better than nothing.

I have never been in a situation helping somebody where having some little cool piece of tech actually helped. Sure, I’ve thought that having the tech helped. You betcha. I’ve been programmed by vendors to think “Gee, good thing I have X! This will make the problem much easier to solve!” but it’s never actually been the case. (The only exceptions I would make to that statement would be relational databases and web applications, which standardized information storage and application distribution)

On the contrary, I have seen hundreds of programmers and dozens of teams get caught wasting huge chunks of time with stuff somebody bought that is getting in the way of their work. I have seen teams who are basically paralyzed because of all the “help” in the form of tools, languages, tech, and methodologies they have purchased. I had one client that had a hundred people working on a problem. It had reached the point where they were thinking their problem was insolvable. After prototyping for a week, I showed them how to solve their problem very simply.

Their reply? This won’t work because it doesn’t match up with our tools! Not that the customer would hate it, or that it failed to solve the problem. They couldn’t implement it because their existing tools selection prevented them from solving the very problem the tools were supposed to help them solve!

I have good friends who constantly tweet about getting hung up by tool X or technology Y — instead of solving somebody’s problem. They keep feeling like that by mastering this latest tech somehow their productivity will shoot ahead. But it never does. There’s just a new set of magical tools and tech that come out next year. This is a treadmill that will never stop. Vendors will keep making things and promising that problems will go away, increasing the overall complexity and depth — as long as programmers have money to spend.

A lot of tools are very useful, no doubt. But we need to be extremely careful that we are not being taken into some kind of imaginary marketing world that doesn’t exist for anybody else just for purposes of feeling like we’re cool. We do so at our own peril.

Continue your journey with the book I wrote on being a ScrumMaster.

If you've read this far and you're interested in Agile, you should take my No-frills Agile Tune-up Email Course, and follow me on Twitter.

Understanding Flowcharts

Cleaning out my office this week, I happened across this graphic on an old xeroxed piece of paper that I picked up somewhere.

I thought it might make for a lighthearted way to start the weekend. Enjoy!

Understanding Flowcharts

A commenter told us that this was originally an xkcd article. Apologies for posting it here without attribution. Since this is a personal story for me — finding old xeroxes and such of things from various places I’ve worked, I’m keeping the article on the site. There are a few others I’ve found that I’ll post over the next week or two. Maybe you guys can help me source them as well.

If you've read this far and you're interested in Agile, you should take my No-frills Agile Tune-up Email Course, and follow me on Twitter.

The 3-Letter Hacker Dirty Word: SEO

It’s interesting that whenever you mention “SEO” in the context of startups many folks get very bothered.

I think it’s because, as hackers, we view everything in the world as some sort of computer program. We program the computer, we program the car, we program the DVR. And when somebody talks about programming people’s behavior through SEO, it makes them feel like they are not in control anymore.

What did the Google CEO say a while back? “People just want us to tell them what to do”

I think he’s probably right. And whenever we talk about purposely doing things to change the way Google works? That hits just too close to a raw nerve. No matter how you slice it — even if you say that the current system of site ranking is perfect — there’s still something disturbing about watching the popularity contest operate.

Last night I had a great interview with Rand Fishkin, CEO and founder of SEOMoz. Rand had a lot good things to say, and I’m still chewing on them. SEO is something that’s intrigued me for a while. Because it happens at that boundary layer between the irrationality of people and the rigorous logic of machine code, I imagine it will continue to intrigue me for a long time to come.

If you’re interested, the review is over on hn-books. There also might be some discussion over on HackerNews.

If you've read this far and you're interested in Agile, you should take my No-frills Agile Tune-up Email Course, and follow me on Twitter.

Being Left Alone

Where does your right to be left alone end and society’s right to bother you begin? I’m not talking about what constitutes a crime — what the laws should be or not is a different issue. I’m talking about the general question of how much it is acceptable to, without any kind of government or politics involved, go next door and ask your neighbor to do something he doesn’t want to do. If we can answer that question consistently, then we could move up to the next higher level and talk about how governments should operate. But I doubt we’ll make it that far.

It’s such a simple question, but it covers such a broad range of situations. When we’re given just one scenario, many times we can come up with an answer quite easily, but when we start comparing our opinions across various situations, our positions don’t add up. I find that coming up with a consistent opinion, a principle I can use in all sorts of situations, is a non-trivial exercise.

The members of this tribe wish to be left alone

But more and more, civilization is encroaching on their home

Our reaction to the desires of these tribes — and how we fit our moral standards in regards to them with our moral standards in regards to out fellow countrymen — says a lot about our own hypocrisy.

Continue reading

If you've read this far and you're interested in Agile, you should take my No-frills Agile Tune-up Email Course, and follow me on Twitter.

Nourishing a Culture of Failure

Everybody and their brother is talking about creating innovation nowadays.

Where I live, our president, my state governor, my legislators (both local, state, and national), and the newspapers are all talking about how great startups and innovation is and how it’s all going to transform the world.

Total horse manure.

What’s going to transform the world is failure.

Continue reading

If you've read this far and you're interested in Agile, you should take my No-frills Agile Tune-up Email Course, and follow me on Twitter.