Monthly Archives: February 2012

The Copycats at HackerNews

I’ve been a regular on a site called HackerNews for a few years now. It’s supposed to be a place where technical folks can talk startups, but mostly it’s kind of evolved into a sharing place for stuff that interests hackers.

But damn, the place has grown. From just a few hundred members, the site regularly gets hundreds of thousands of people viewing per day.

Over all this time I’ve noticed one clear trend: the rise of the copycat. Whatever you do or say that might be popular, there are hundreds if not thousands of people ready to jump on the bandwagon.

About 18 months ago I got tired of having to create lists of books for people to share on HN. Lots of new folks wanted to know what the best thing to read was. So I thought: why not make a site where we list only the best hacking books and people can create and share lists of them? was born.

But it wasn’t alone. I spoke about my intentions online while I was building it. Within the next month there were a dozen book sites spawned by the members of HackerNews.

I’m not saying it was my original idea, simply that once it was mentioned there were a zillion deployments of the same idea.

At first this was really cool. When the community discussed the need to have some app to strip websites of all the annoying visual garbage on them, wham! A bunch of different really cool sites do that now. (Which I think is awesome.)

But it has a dark side. The problem here is that while ideas are cheap, having 100 people all trying the same idea puts an extra amount of time pressure on an entrepreneur that normally isn’t there. Everything that is mentioned is copied a hundred or a thousand times. It’s as if you, a non-painter, decided to paint a picture of a house. So you set up your easel and get out your paints in front of a nice-looking house and start to puzzle over how to start. Suddenly 500 other people all arrive — some of them who actually know how to paint — and set up all around you. Not only is it annoying, it’s also distracting. And it can lead to a kind of herd mentality where everything is attempted, but nothing is really tried. Next week all the same noob painters are all setting up around a nice-looking barn. Repeat and rinse.

It’s gotten so bad that mentions of a specific business strategy on HN have become counter-indicative of the prospects of your successfully trying it out. The more directly-instructive an article was, the more folks that were going to go out and follow the directions, especially if there’s no cost involved.

It took me a while to figure this out. I finally understood it by observing what was not being done: founders were not giving specific details of their business model execution at the level where others could actually use it. So you’d get a great blog article about how some guy made his startup, and how awesome it was, but somewhere in his actual business would be a few tricks he used that he’d never mention. After all, who wants a thousand people all using your tricks? You’d be crazy to publish that stuff.

It actually happened to me once. About three years ago I came across something very unique: a step-by-step guide on how to set up an internet business online that was written by somebody who was not trying to sell me something. I found it on some obscure user’s group online — I don’t even remember the search terms. At the time, I was willing to try anything. What could a month or two trying this hurt? So I tried it.

Did it work? Yes and no. I learned something very useful from this exercise. Whatever you do for a startup is going to take a long, long time. Take however long you are willing to work, then multiply it times three. It requires a lot of dedication and attention to detail that I (and most others) probably don’t have. As it turns out, getting good at painting is more about the attention, dedication, and mentoring you receive in your work, and not so much about the house you choose to paint. But good luck learning that the first time out. Most folks never learn it.

Most of us are great at thrashing around for a few months! Tell us an idea about an app that mines Facebook data and makes money and there will be a hundred guys tomorrow firing up their code editors. Sure, in a few months most will be gone, but expect to see everybody and his brother coming out with the same idea in a short amount of time.

I get a lot of SEO spam on the blog and in emails. Some of it is automated, but I actually get a lot of people following me because I’ve dealt with SEO in the past. For most all of these people, SEO is a shortcut to riches. Write some crap, make a landing page, then script up enough code so that you generate links back and start making conversions. Sure, Google might shut you down in a few months, but you’ll be thousands of dollars richer and will have used fake credentials anyway.

It’s the ultimate in ADHD money-making. Crap + Code + Conversions = money.

Here’s the crux of the matter: there are people who actually invent an iFart and make hundreds of thousands of dollars in a month, there are people who sit down to paint and make something that sells right away, but odds are overwhelmingly that you aren’t that guy. Odds are you will generally develop as most other startups develop; over a long period of time as you assemble these various business execution ideas into something workable that supports some grand idea (what the grand idea is — not important. The less you focus on that the better.)

We’d all would like step-by-step instructions on how to make a million dollars in a month. But if somebody published it, guess what? Everybody would be doing it and it wouldn’t work. The system is rigged so that the easier it is to connect effort to money, and the more that know how to do it, the less likely it is for a newcomer to make it happen.

That’s not saying that short projects are a waste of time. I love short projects that stand on their own and compete for my attention. Do something for 2-4 weeks and then be done with it. Move on. But don’t expect to see any results for a few years, if ever. What I learn from these exercises is being able to repeat the entire span of startups: idea, execution, business model, marketing channel, and so on. If you ask me, anybody who wanted to teach startups would have people actually learning all of these things with “practice” ideas, over and over. As they gain competence through trial and error and repetition, they’ll develop a voice and style that will carry over to a working business.

So if you want to be a copycat, fine. Go for it. But pick your poison: pick one idea and stick with it for a year or two, or do the micro-startup idea thing I did for a while where you develop something new every couple of weeks. Whatever you do, don’t fall into the death zone. Don’t “fall in love” with an idea, screw around with it for 4-6 months, then give up. That’s the worst of both worlds: you’ve picked something and stayed with it long enough to get really emotionally attached, yet you haven’t given it the attention it needs to actually grow (or die). Then when you finally switch to something new, it comes as a failure.

And whatever you do, don’t follow along with some idea mentioned on a popular website like HackerNews — unless you like learning through pain. The only thing that’s going to happen is that you’re going to be reading about somebody else who tried the same thing and is now living the high life — without telling you exactly what they did that you missed out on. That’s not a learning experience, that’s self-torture.

tl;dr: because of both the mixed messages we send and the size of the HN audience, we’ve actually created something we didn’t mean to: an environment where lots of copying goes on, but not many are really working in a way that generates good learning about startups. Instead it’s much more of a copycat, cool-for-a-day, chase-the-herd atmosphere.

That hurts. Don’t do that.

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.

Stop Creating Content You Evil Bastard

Over the last few years, I’ve been somewhat of an internet startup/content junkie: I’ve bought dozens of domains and developed sites that do all sorts of things. Some are webapps. Some are targeted niche content. Some are a mix. Some are aggregation sites. I’ve tried to get a feel for most all the different ways to create content on the web. As I’ve tried these ideas, usually I post my experiences over on HackerNews to get some feedback from the technical community.

And do I have news for you. Whatever kind of content you create on the web, you’re an evil bastard. There’s just no getting around it.

Surprised? Here are a few ways you are unknowingly nefarious:

Registrar selection. Stay away from GoDaddy. Aside from having the morals of used-car salesmen, they’ll turn off your site in an instance if they get any complaints from the feds — even if you’re doing nothing wrong.

User cookies (third party and others). If you own several web properties, surely you’re not going to keep track of the same user across them, will you?

Javascript. Scripting is the gateway to insecurity. Sites who use scripting could be trying to break into your system. Your site should not rely on Javascript.

Email collection. Don’t even think of asking for an email address, because all email lists are always just spam tools.

Content ads. The average content ad on the average blog makes something like 3 pennies a month. But to hear readers tell it, you spent 2 hours writing that blog entry just so you can pitch iPods at them. They have no idea of how web value is created, so they are suspicious of anything that’s associated with money.

Source cloaking/reader customization. Like to put up one banner for folks visiting from Reddit and another for folks visiting from HN? Be very careful. Search engines and the public distrust sites that change their text based on visitor properties (although I think if instead of calling it an article you called it an app that would work?)

Blog spam. I used to be a freelance writer back in the late 80s. We’d read stuff, do some work, then publish other stuff. This was called writing. Sometimes you only read one other article, then you created a news story from it. Sometimes you read ten articles and did three interviews. Sometimes you might watch a TV report and write an article. It all depended on your deadline and the nature of the topic.

Nowadays if you read a couple of current news stories on Apple and then write that same kind of piece, it’s called “blogspam”. If you read a couple of stories on Apple, one story on interface design back in your college days, and the Steve Jobs biography last week, then write a story, it’s called original. The premise is that style counts for shit. It’s all facts If you are adding no new facts from what appeared in some other source (say Wikipedia), you’re spamming. To hear some tell it, the internet is a collection of facts all having authoritative/original sources that should be respected. Nobody cares about your unique way of looking at current news or idiomatic way of explaining facts we all know, especially if you have, gasp, ads on your site. You can post an asinine and ill-informed rant about Apple or Microsoft on your blog, we might love that, but don’t dare just tell us the same thing we could find out reading TechCrunch in your own style. Very bad.

Niche writing. My editor used to talk to his advertisers, read the demographics of his audience, and then assign me things to write about. Sometimes they seemed pretty trite or boring. But he was always joining up the audience, the advertising money, and interesting content. My job was to make it work. Today if you do the same thing, you’re somehow being dishonest or a sell-out. Writing in the same fashion that I spent years putting food on the table is considered a modern-day form of slavery for English majors (admittedly the rates are much lower, but I’m not sure that has anything to do with the way the topics and content are created.)

Link spam. Spend some time googling for blog articles that cover things you care about, then make informed and interesting comments on them, linking back to your site? (I don’t do this much at all, by the way) This is a terrible thing to do. You are actually visiting and reading somebody else’s content simply as a way to help yourself!

Pictures. I have a site where I tag and share my funny picture collection. (I started collecting interesting/funny images a couple of years ago. The collection got so big I had to do something with it.) Best I can figure, any sharing of pictures is terrible — except with your friends on Facebook, G+, or Twitter. You’re not crediting the photographer (good luck finding him/her), you’re not creating things yourself, only sharing, you’re not adding a bunch of detailed new material, only curating other people’s stuff. And so on.

Self-promotion. Mention and pump something you did, like I just did with my funny picture site above? Stand-by to be accused of being a self-promoter. On some aggregation sites, it’s even a bad thing to do to submit your own material. Heaven forfend! My youngest son Jack got a Facebook account a few years ago. When he posted things, he always clicked he liked them. It struck me as odd, but then I thought “Why not? Why would you post things you didn’t like?” But of course the faux pas he made was in actually saying something nice about his own contribution to the universe. That should only be done by others.

Fake user accounts. A large number of the major sites you use on the web have used fake user accounts some time in the past in order to make the site look more busy than it was. This is because nobody wants to use an empty site. (Good luck getting the actual numbers on this. Nobody will talk about it.)

It’s gotten to the point I could look at any site on the Internet and start making a list of how they’re not to be trusted and are screwing over the public — if I wanted to.

And let me assure you, there’s no feeling in the world like spending a week or two carefully and lovingly creating a site in order to do something nice for folks — only to have somebody online treat you as if you just knocked over a liquor store.

My internet friend Swombat recently tweeted something like “Hey! I got my first hate mail! Must be doing something right.”

He has a point: the problem here is that you can’t stay away from being declared immoral once your audience is big enough. It’s impossible. If you garner enough eyeballs, people will snark at you — your motives are poor, your methods are low, and your values are sick. If you keep getting more popular, people will start actively making arguments that you’re the devil. Hell, they’ll start following you around.

One of the first lessons I learned as a blogger is the high number of readers to participants on a blog article. You might have 100 people read, and only 1 will upvote it on an aggregation site or make a comment. The same thing is at work here. I’d guess somewhere around 1-in-1000 consumers of your content will be pissed at you. Maybe they had a bad day, maybe they misunderstood your purpose, maybe their puppy died, maybe they’re 12 and don’t understand what you’re saying, maybe they didn’t even read the article, maybe they just don’t like the cut of your jib. And here’s a huge list of reasons they can pull off the shelf to use when they vent. We’re just getting started. There are lots more.

The bigger you are, the badder you’re going to be.

(In defense of the people making critiques, many of these technicques have been overused and/or smeared by people on the web who have taken them too far and acted in poor taste. It’s reached the point that, in some consumer’s eyes, any use of these things is very suspicious. They don’t trust anybody. That’s a throw-out-the-baby-with-the-bathwater kind of thinking, but all too prevalent, sadly.)

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 Rich Will Kill Your Startup

And again I say unto you, It is easier for a camel to go through the eye of a needle, than for a rich man to enter into the kingdom of God.” — Attributed to Jesus (Matthew 19:24)

I’m not a religious person at all, but I think I grok what Jesus is saying here. If you are in the frame of mind that most rich people are in, you’re going to have a hard time of it spiritually.

He might as well have been talking about startups, because the more you think like a rich person in a startup, the more likely you’re going to flame out.


Because a consumer’s mindset is fundamentally different from a creator’s mindset.

When I’m a consumer and I want something, I go out looking for information. During my quest, providers tell me a narrative of how using their product makes my problems go away. In general, those with a better narrative — and one supported by friends and people I respect — get my business. I “buy into” the narrative, placing myself in the role of protagonist.

Need an oil change for the car? Do some googling, find a few local shops and read their main page. Each page tells me how fast, careful, or courteous they are — they tell me a story of how if I showed up with my car, the experience would be great and by the time I left I’d be happy. Poking around on Facebook, friend Amit verifies this narrative for one of the shops. He went there, found the help friendly and the service quick. His story ends happily, just like I read on the website.

So I buy into this narrative and become a customer. I go, pay my money, get an oil change, and I leave happy. I bought the narrative and lived it. Life is good!

So what’s the problem?

If I’m a rich guy forming a startup, I’ll go about doing things exactly the same way. Need hosting? Google some, find some sites, read their material, pick a provider. While this model still might work for hosting, how about marketing? Need to sell something to doctors? Here’s a bunch of sites that will sell you an email list. Want more people to visit your page? Here’s a bunch of sites that guarantee traffic to your web page. Want to find out what doctors like? Here’s a site that will create survey forms. And so on.

As it turns out, no matter what you worry about when creating a startup, the marketplace will provide you those same narratives and recommendations. Whatever your worry, you can find stories of folks with the same worry who bought some service or product. Now they’re happy.

Just like with the oil change, except not.

You can’t write a check to solve all the worries a startup might have. But you can certainly write a lot of checks! Take a look at the thousands of startups each year that burn through piles of cash buying into narratives about how if they only purchase X, their problems will go away.

There’s a fundamental problem here. Startups are about creating narratives, not consuming them. That is, the mindset of the browsing rich consumer is exactly the opposite of the creative startup. You should be more like the genius painter of a large mural: very carefully using resources you’ve hand-selected, in a very controlled fashion, tending the product every day, watching to see how it slowly progresses, seeking an end state where the eventual emotional impact on the viewer is the greatest.

Genius painters don’t spend all their time at the art shop reading art magazines gushing over the latest paints and brushes. They see, understand, and use other people’s products, but the focus is on creation, not consumption. Consumption is for chumps.

Good founders take little pieces of inexpensive (or free) resources and cobble them together experimentally, slowly discovering a narrative where somebody else finds value. They try to make something people want. Consumers read other people’s narratives, get out the checkbook, and buy big, beautiful honking solutions to life, the universe, and everything. Then they’re confused and let down that things didn’t work out for them.

When I’m a consumer, I buy into a narrative that I know exactly where it will end: with my being happy. In exchange for my money, I know for certain my problem will be solved. When I’m a creator, I’m the one creating a narrative for somebody else. I have no idea how the narrative is going to go until it actually starts working — making somebody else happy. There’s much uncertainty and doubt. There is no happy narrative you can buy into when forming a startup. Pay attention to this when reading books and hanging out places that cater to startups. There’s a lot of money to be made selling you, the future founder, on narratives that sound good but aren’t going to end happily.

Be the painter, not the rich guy.

ADD: This article is about “thinking like a rich consumer” not being rich. I apologize for the hyperbole in the headline, but I thought it was pretty clear that the problem here is in your attitude in how you appropriate services and products, not how much money you have.

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.

Agile Edge Cases are Where you Really Learn

I was thinking last night that Agile Edge Cases — the situations where multiple principles collide and it’s difficult to choose one over the other — make the best learning experiences for people.

So I decided that they would make a good topic for this week’s Tiny Giant blog series on Agile principles. Once again this time, I came in at over 1500 words. I was shooting for half that. I think I either I desperately need an editor, or I just have a lot to say about Agile. Probably both!

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.

Or to put the programming levels another way…

Here’s a refactor of the last post:

  • Advanced O/S and text editor usage
  • Dealing with symbols you don’t understand
  • Dealing with symbols you do understand
  • Dealing with complex groupings of symbols you understand
  • Creating your own symbols
  • Creating your own complex groupings of symbols
  • Dealing with meta symbols
  • Dealing with complex groupings of meta symbols
  • Creating your own meta symbols
  • Creating your own complex groupings of meta symbols
  • Creating your own language (allowing others to join your meta symbols together in a structured way)
  • Creating your own complex languages
  • Be a scientist

And no, it’s not like you are either in one level or another. It’s very typical to move among the levels depending on the nature of the project. The point is which level you are able to consistently work at given the need.

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.

What Level Programmer Are You?

Everybody’s talking about how programming is the skill that we all are going to need. [Except those folks who might feel that most programming could be turned into wizard-like tools. Insert long discussion about Strong AI.]

But what’s a programmer? Is the guy who set up his own Apache Web Server a programmer? How about the guy who created a complex Excel spreadsheet? The guy who made his own RPG level? Minecraft players? When we say “Everybody is going to have to know programming” what, exactly, does that mean?

We need a set of programming levels.

  • Level 1, The Read-and-Type: This is the guy who can read how to set up a web server, go through the directions, and get the thing working — as long as nothing goes wrong. He knows how to use a text editor and basics of the file system he’s on. He also has to have some ability to move and manipulate files, like using zip or FTP. He can use abstract symbols in a structured, explained way along with having system skills.
  • Level 2, The Script Kiddie: Can write a linear script to tell the computer to do something. Able to learn and use symbols on his own. Should be able to script out a very simple solution to do something useful for himself in bash or VB if given enough time and written instruction.
  • Level 3, The Librarian: This is someone who has learned some libraries or APIs and have the ability to learn more. He knows that for whatever scripting language he is using, he needs to be able to connect libraries to it. If he had to, he is able to read manuals and do that on his own. He is also able to search for libraries on the net and use them. He is able to find and sometimes even create his own symbols for his job. (Can write a function or declare and use a struct). Most beginning system administrators fall around here. Also beginning users of advanced Macro systems, like Excel.
  • Level 4, Object-Dot-Method Guy: Beginning to learn coupling and cohesion, this person starts organizing their scripts into objects with public and private members and methods. This is your six-week-programming miracle, the introductory .NET programmer. He’s supposed to play with a wizard, know the libraries, and then construct something that fits inside of classes that are given to him. If he’s not using classes, he can create his own modules or code files. Some advanced users of scripting systems get this far. There are a lot of advanced Excel shops with stock brokers who have basically coded their own VBA application without really knowing it who are in this level.
  • Level 5, Multiple Paradigm Man: Once you are able to crawl, you get into all sorts of trouble. A common next step on the programming ladder is being able to work in multiple paradigms. You can code C#, but you also know how to build tables and write SQL. You can write acceptable C, but you also can work with Javascript and HTML. You’re not a master of either skill, but you’re able to understand different ways of looking at the same problem. You know you’ve reached this step when you stop saying “We could fix this in X” for every question where X is the language you first really understood.
  • Level 6, Architect Apprentice: This comes as you really begin to engage in the craft of programming. You begin to deeply understand the libraries and APIs that you use everyday for work. It’s not that you have memorized them. It’s that you understand the different patterns the architects use to accomplish their goals. Want to draw in Win32? Probably going to need a handle to some GDI resource. Maybe a few. You know that a handle is a UInt32 hash into a system table somewhere — a common paradigm for Win32. Want to add your own library to JQuery? There’s a format for any new library. You know how that works and can explain why it works that way. As you work your tools, you begin to start thinking like the people who put the tools together. You also begin to learn how to refactor your code to the point it rocks. You start learning what code quality looks like. You begin to understand.
  • Level 7, Architect Astronaut: The time comes for you to build your own API, platform, or library. Maybe it’s a large project that requires it. Maybe you just want to take your new knowledge out for a spin. While your system is designed to solve a real-world problem for users, your target audience is maintenance programmers at Level 5. At this phase you’re deeply into the Gang of Four, OOAD, templating, and best practices. Most of us make a mess the first few times into this area, not understanding that it’s easier to make something complex than it is to make it simple. During this phase, which can go on for a long time, you continually mistake creating more complex and flexible libraries with building higher quality systems. Many times you (and hopefully a few others on your team) understand what you’re doing, but to bring in somebody from the outside would take months of domain-specific training. Support personnel don’t stand a chance — most all support calls end up on the team’s desk.
  • Level 8, Meta Man: At some point, hopefully, you realize that much of the complexity you have put into architectures and frameworks can better be described as a Domain-Specific Language. Your target audience becomes programmers at Level 4. Yes, the coding complexity is greater, but the code itself is much shorter and the DSL opens up your code to go all kinds of places. In short, you become the writer of the script languages that beginning programmers use. Your systems are open to beginners through easy-to-use scripts and wizards. You can learn this skill separately, but most times after many large complex architectures, eventually you factor your way to a DSL. And then again. And again. Pretty soon you start seeing the pattern: well-understood problems lend themselves to DSLs.
  • Level 9, Functional Nirvana: Moving into the bonus round, you start really learning how to program by learning Functional Programming. Your target audience is maintenance programmers at Level 3. FP makes you a better imperative programmer, helps you easily kick out DSLs faster, and can massively reduce the amount of code it takes to solve a problem. It can also be highly-scalable. With some functional languages you can even hot-swap while the system is running. Just like with all these other advanced levels, at some point you start feeling getting a bit of nirvana going on. FP must be the answer to everything! By this time, however, you’ve been through several of these stages of euphoria, so this one isn’t as bad as the rest. The real world intrudes. FP, although less buggy and many times much faster, can be very difficult to code. Programmers have to carry a linker around in their head much of the time — they have to keep track of lots of symbols. Eventually you realize FP is also just a step on the path, much similar to OOAD.
  • Level 10, Language Oriented Designer: You view all programming as creating new programming languages. The only difference is what the new language is supposed to do. You understand how to create Object-Oriented languages, Functional languages, and simple untyped scripting languages. You know when each is appropriate. Your target audience is maintenance programmers at Level 2. You sit down for each project and ask “What kind of language do we need here?” At the end of your project you have a nice tool that both fixes the problem and is easily understood and extensible by entry-level programmers, freeing you up to move on to other things. You can easily make the case that most projects do not require language-oriented designers, but that’s a story for another day.
  • Mystery Level, Computer Scientist: This is either the pinnacle of programming or doesn’t exist on the spectrum at all, depending on your perspective. This is the science of programming. Lots of cool stuff here. Your target audience is everybody else in the universe. But the focus is not on making things people want, it’s advancing the state of knowledge. Because most other capability levels of programming are so people-based, these guys live in a different world, but a necessary one. How easy is it to cross back and forth between the two worlds? Beats me.

You could construct many alternate paths here — for instance, functional programming might come first for you, then OOP later on. You might also put in building your own compiler — wasn’t that fun in college? Or assembly. Or really understanding set theory and how it applies to both databases and programming data structures. Or writing your first true programming tool.

But this is the path I see most programmers follow.

ADD: Please read the (very short) follow-up for another look at this.

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.

Too Many Manifestos

I spent several hours this morning scouring the internet for manifestos.

Why I did this, I do not know. Seemed like a good idea at the time.

As a result, I have a new blog entry up on my Tiny Giant Books site entitled “After the Agile Manifesto, Stop Writing Any More. Please.”

Didn’t get a lot of traction for the article on the aggregate sites I submitted it to.

I find that many times when I find a small detail and chase it down, nobody is really interested. But if I get really emotional about a big, broad topic, articles become much more popular.

I’m not sure if that’s a quality of my writing — perhaps I suck at being interesting about narrow subjects — or the “market” for blog readers. Need to think about this some more.

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.