Your own company? You can do it
jacquesmattheij.com
jacquesmattheij.com
All these programmer stories about how they developed OS kernels in x86 MMX extensions when they were 4 years old on Sinclair machines while skipping 4 grades and making hundreds selling lemonade never make me feel like I could do the same. They just make me feel like those guys will always be ahead of me - they started so much earlier.
I want to hear about the talentless hack who used VB6 to clone some popular software and convinced a big company to purchase it for a few hundreds of thousands after he spent most of his teen years reading science fiction and watching movies. That would make me feel like I could do it.
At the time, I couldn't believe I can build a calculator that looked just like the Windows calculator.
Then I suggests you read one out of many salesletters from people trying to sell their e-books to get rich quickly. They are specifically written for people who want to get rich with no innovation and quality at all.
If I read stories like these, it reminds me I have to work a little bit harder to be able to compete with the talent out there who have an edge on me. Why? Because these stories tell me that hard work, curiosity and dedication pay off.
- Finding guys doing cutting-edge work like eye tracking software in the 80s
- Convincing those guys to invite me into their workshop and look at their code
- Glancing over any unfamiliar code--let alone math-heavy code--and making useful optimizations while the author looks over my shoulder.
And I find that unimaginable in Python. I can't even imagine considering the idea in assembler.
If you read it, you'll notice that story didn't really lead to much beyond a cool experience impressing a couple of guys who ought to know their stuff. It didn't look like Jacques got much in the way of referrals or anything out of it.
It also didn't sound like they took much convincing. If anything, they were probably pleased as punch to show off their cool project to someone interested enough to ask about it.
As for unfamiliar code, you can probably find a terabyte of it online, and most of it probably has something, somewhere, that could be written a little better, if you want the practice. No, you won't likely have the golden experience of the author watching you work on it, but that could be as much a blessing as a curse (Or is it the other way 'round...?)
If you do want to get involved with people working on cutting-edge technology, your best bet is probably hanging around some university's engineering department. If you're nice about it, and don't get in the way a lot, they might not even chase you out! ;) Seriously, though, just go where they are, and as long as you're not intrusive, you can probably make some connections.
I've been invited to some cutting-edge work just because I asked and showed a bit of interest. Almost all of the researchers I've met were more than happy to talk about their work and seem surprise even to have someone as enthusiastic about their work as them.
One researcher once said something along the lines that it was comforting to have someone contact him about his research - at least he knows his work didn't just disappear in the deep end.
Your compiler is almost certainly better at optimization than you are, though. This was just not always true, nor was it always true that you could even get a compiler.
On x86, for example, you've got a couple of registers and a bunch of instructions that operate on them. Adding two numbers goes something like:
mov eax,23
mov ebx,42
add eax,ebx
That's easier to reason about than what Python/Ruby/Whatever is doing behind the scenes when you do "23 + 42". In Python, for example, that expression is syntax sugar for 23.__add__(42). Both 23 and 42 are objects. How do they come into existence? How is the __add__ method looked up? How is it called? Where are these objects stored? How do they get cleaned up?Assembly is not hard. It's just tedious. I'd rather do "23+42" and have the Python interpreter spit out the result than move numbers into registers, add them, and then figure out how to call C's printf from asm so I can see nicely formatted results.
PS: the best way to learn asm is to read GCC output in Intel syntax. The worst way to learn asm is to read GCC output in AT&T syntax.
> You know what - actually the story does not make me feel like I can do it. It makes me feel like he's probably hundreds of time cleverer than me.
I'm not, it was just hard work. Lots of it. I suck at math and plenty of other subjects that would come in quite handy as a programmer, probably I'm very much unsuited to the job based on my 'talents'. It's all about persistence.
> He was handrolling assembler as a teen - back then I was doing VB6.
When I was a teen VB6 didn't exist for another decade or more, and assemblers were too expensive but an opcode list could be had as a 'datasheet' for free from the local electronics store.
> All these programmer stories about how they developed OS kernels in x86 MMX extensions when they were 4 years old on Sinclair machines while skipping 4 grades and making hundreds selling lemonade never make me feel like I could do the same.
Such stories do not exist.
> They just make me feel like those guys will always be ahead of me - they started so much earlier.
Yes, just like all those hardworking kids that started even later only to go to even bigger successes.
> I want to hear about the talentless hack who used VB6 to clone some popular software and convinced a big company to purchase it for a few hundreds of thousands after he spent most of his teen years reading science fiction and watching movies. That would make me feel like I could do it.
Why would you like to hear about that? Maybe this article wasn't for you? It is targeted specifically at people currently stuck in jobs held back by peer pressure wondering if they have what it takes to work for themselves and to pursue their own goals in life even if they're not born in to wealth or have a natural talent for 'X', whatever 'X' is.
Way to go to take a positive thing and to try to twist it around into a negative and a depressing thing.
Really, stop being a negative influence and try to see that talent is in large part offset by dedication and time put in. If you want to succeed at something, anything, that does not require some kind of genetic component then go and pursue it relentlessly and be excellent, or at least as good as you can do it, whatever it is.
And with that I will sink back in to retirement, congratulations to those that bet with me that I would get sucked back in, be assured this is a one time affair but I did not want to see Max undo my work.
A lot of people don't think themselves (and may not be) capable of the sustained effort you put in. (Generalizing from my own case is possibly unwarranted, but it's uncomfortable to say this about myself directly. =/ )
Seriously, the "depressing" message I got out of it was that guy was around when the ability to program a computer wasn't a widely-available commodity. That's not to say that commodity programming ability and straightforward ideas allied to some business nous can't be successful nowadays - there are a lot of channels for doing that today that don't involve persuading ignorant HR staff to become the apprentice in their IT department, and no shortage of mentors to point you in the direction of independence. It's just that other people's very different experiences don't necessarily translate well into the impetus to do something different.
FWIW I got my youthful enterprise anecdotes from my grandpa's stories of an ancestor who taught himself how to build one of the first motor cars in the county, and never once felt the inclination to get out the monkey wrench. The interwebby stuff... I should have done more a long time ago.
How a story makes you feel is probably the most important part of it. And I agree with Max: I feel disconnected from the person who says they were hacking awesome crap back when they were 16. I feel even more so because I almost had that opportunity - I learned Basic on my uncle's old C64 when I was 8! I wanted compilers so bad, I read C++ Windows API books from the library without any idea what the hell they meant, but nobody was there to guide me. I gave up. I know it's a bad way of looking at it, but I felt kind of cheated by the universe.
And implying that you need to be that kind of person - who has been hacking since their teens - to succeed, yeah, that makes me feel like I can't do it. I mean Jacques, come on. From that story it seems you a computing god at 17. And my 17-year-old parallel, writing some dumb Java apps, pales in comparison.
I looked at their code for a bit, saw that it was hopelessly inefficient and hand-assembled a much faster version using a look-up table and a bit mask instead of a bunch of math to figure out where in memory to dump the data from the converter.
I feel exactly the same way as parent and grandparent when I read stories like this.
We need less bi-polar, and more bi-winning up in here.
If you emphasize how people's jaws dropped when you did X or Y, then only other programmers who feel confident they can do the same will be nodding along (i.e., not most of them).
If you emphasize the limits of what you had figured out, show clearly how you learned how to do X or Y (and how it's not nearly as complicated as it seems), and puncture the illusion of genius as much as possible (it's mostly just persistence), you can give "normal" developers the chance to imagine themselves making jaws drop simply by putting in some time to learn something most people don't know.
Just my, er, 8 cents; I hope this is of some use.
What I do find remarkable is that you started a company by 22... I would have loved to have done that but maybe just didn't believe it was possible at the time.
Am enjoying reading HandBook Freemium.
Great post and more power!
♫ ... You can checkout any time you like... but you can never leave... ♫
(Did you know Hotel California was about heroin? That might actually be a valid comparison to HN...)
I know this is an unpopular sentiment on this site, but the problem is that everything has at least some genetic component. In the extreme case, rats share about 95% of their DNA with humans but are incapable of doing any of our jobs or even living a decade. Even amongst humans, large differences exist: short people can never become NBA centers, 200cm people can never be great gymnasts, someone with Down's syndrome isn't going to make it as a physicist.
One heart breaking example I witnessed personally was a family member. He wanted more than anything to be a classical musician. From the age of four, he was taught by the same teacher who trained a very successful NY Philharmonic pianist (opera coach). He practiced many hours a day all through his school years and earned both undergraduate and graduate degrees in clarinet performance. By any objective measure he was a very good clarinetist. But he wasn't good enough to make a real living at it. Unlike his mother, who had perfect pitch by the end of grade school, he never developed it. He saw more than one talented peer surpass him in despite his extreme work ethic. In the end, after putting over 25 years of his life and his passion into it, he finally gave up on his dream and became a programmer. Unlike his experiences in music, he very quickly rose to the top of development groups and it was he who was the one surpassing others who had been working at it longer and harder.
Talent matters. There probably haven't been any specific genes linked with business ability as there have been with musical or leaping abilities, but it would be naive to assume that everyone can win if only they sacrifice enough. In many marginal cases, I'm sure effort would make the difference. In other cases, it would just be robbing oneself of valuable time that could be better spent on another pursuit.
The examples that people give tend to be things like professional athletes and classical musicians, for the simple reason that these kinds of professions are exceptions that are dramatically different from just about anything else you can do with your life.
The reasons why professional athletes are exceptions are more obvious (how many kids want to be pro athletes vs. how many pro athletes does the world need?), so let's look at the professional classical musician.
How many clarinetists are there in the world that make a good living at it? If we rule out the ones making a fairly poor living teaching privately or in high schools, universities, conservatories, etc. (and I'm guessing your family member didn't want to go this route), it's an extremely small, extraordinarily competitive pool, and you need to be at the top of the game to get any chair at all in a good orchestra (and the "winners" may stay in the orchestra for many decades, so orchestras don't hire often...). You are competing against people who have all been in training since age 4, so whatever small influence genes have looms large... and like with pro athletes, there are certainly genetic factors -- musical performance relies very much on extremely fine control of your body, and the shape of your lips, natural size of your chest cavity, etc. etc. will also make some subtle difference beyond what you can achieve with training.
But now let's look at almost any other way to use your life. Almost everything I can think of is a completely different story. Look at what happened to your family member when he left the "pro classical musician" path and went into something else. He knew how to work hard, and he succeeded. I'll bet you he could choose some other field and also succeed.
It's telling that when I meet talented developers, I'm not tempted to hire someone to break their limbs (cf Tonya Harding). I want them to train others, and work with me. With programming (like with most jobs that are not reserved for a few elites in the world), most people currently doing it have done just enough work to be competent (or at least appear competent...), and anyone willing to put in some actual effort can do great things.
And what's even better is that if more people put in some actual effort, the result is that more great things get done, more cool businesses get started (and some actually succeed), and the world is a better place.
There's no end to problems in the world. Any job that's related to solving problems works this way (as opposed to jobs that serve as simple entertainment for the masses, a set of needs that can be met be comparatively few people).
On a "nicer-architecture" box and OS and while still coding assembler, it was still ten or so lines of assembler with a system call for the core of the output.
Why assembler? Well, you either didn't have a higher-level language around, or a C or Fortran compiler could cost you US$5,000 for a license, and US$36,000 for a memory upgrade from 4 to 8 megabytes.
Modern environments and tools are vastly more capable. And cheaper. And the tasks and applications that are now ubiquitous are massively more advanced. Debugging state by reading the front-panel accumulator lights (because you couldn't get the debugger to work) Stinks Large.
Would I trade knowing assembler? Donno. Probably. I just don't code assembler that much any more. Modern languages are vastly more capable. What you can do now with a couple-dozen lines of Objective C or Ruby code (and all the underpinnings) is massive in comparison.
I started in help desks, took some skills tests so recruiters could pitch me to shitty consulting gigs, and worked my way up through professional services and eventually into a fulltime dev role at real software shop with truly talented developers.
I definitely wasn't handrolling assembler in my teen years (or ever), but I've been able to make a great living by scratching and clawing my way in!
I'd personally rather see a story about a 30-something under-appreciated corporate developer who is supporting a family with their mid-level salary and benefits striking out and succeeding. I, and many others, are beyond the point where they can strike out and fund a startup, and who simply can not survive on a raman salary.
Sure, I might make more in one contract than I would normally make in a year. But the chances are probably better that I could end up with my family not having a home anymore.
You read the part where he applied for the programming jobs in his bank department for 2-something years, right?
Perhaps I'm just associating too much risk with this kind of move, but I don't think so.
Not sure I qualify, but here goes:
Teen years - flipped burgers & partied
Age 21 - graduated college, flipped burgers, & partied
Age 24 - touched my first computer
Age 25 - wrote my first program
Age 27 - touched my first PC
Age 31 - wrote my first low level code
Age 32 - started my first business
Age 39 - started my second business
Age 41 - accessed the internet for the first time
Age 44 - wrote my first browser-based app
Age 51 - found Hacker News
Now - starting my third business
It's never too late, you're never too old, and it's not whether the glass is half full or half empty.It's about getting up off your butt and filling the glass the rest of the way.
Start with the beginning: "When I was 17 and a high school drop-out..."
followed by the (near) ending: "I was 22 at the time and making roughly twice what she was..."
So there's about five years in between the high school dropout and twice his mom's income stages. Success, but not what I'd call overnight. In between, we have...
- "Burning the midnight oil..."
- "...I got turned down again and again and again."
- "After 18 months of me beating down the doors of the HR department..."
- "Another 9 months and I got a call."
- "...apply for *every* programming job in the last 2 1/2 years"
and so it goes for a little more.I have to say, I leaned a little more in Max' direction when I first read it, but give it a little thought, and the real message is, don't give up hope! Getting and running your own company isn't going to be easy. You'd be crazy to think it is! BUT, if you're willing to work your ass off for it, you can get there.
Even if it takes five years.
Hell, it could take ten, or even longer, but if that's enough to stop you, it'll probably take forever, so why worry?
As for the talentless hack, you might want to look a little closer at his story, too. He might not be so talentless, himself. The guy you describe apparently knows enough to:
- Program (even if it IS VB6)
- Reimplement existing software(?)
(Not so easy to do without the source, and if he *had* it, then he could...)
- Read other people's code (which could be even harder?!)
- Talk someone in the right position at a big company into investing in it
(and as if that weren't hard enough...)
- Talk said someone into investing *a lot* of money in it!
On top of all that, if a kid that talented spent most of his teen years reading science fiction and watching movies, I'd be very disappointed to learn he didn't at least try writing a little of either. You practically have to try, when you've got that kind of initiative.So, yeah, you can do it. You'll have to work your ass off. You'll have to keep your eyes open, and you'll probably need a boatload of patience.
But don't let that stop you.
[edited for formatting]
If you look around, you'll find plenty of average Joes who luck themselves into millions. Plenty of mediocre projects that you know you can better. Myspace, Plenty of Fish, Experts Exchange, etc. They're not all destined for failure, but they've all been mediocre products that were still able to generate tons of revenue.
Needless to say, i look up to him.
I want to believe it, but not necessarily true. We all have different abilities. The author is very talented and has acquired (and/or was born with) the ability to do business.
On the other hand, there is no way of really knowing, unless you try.
"When I announced that I was going 'solo' my mom freaked out. I was 22 at the time [...]"
Dude, after all that crap I figured you'd be around 35...
PS. If I'm lucky I'll be moving to Amsterdam next month with a new job. :)