Readit News logoReadit News
Posted by u/polycaster 2 years ago
Ask HN: Outstanding Programmers
After reading today's post "Curl is just the hobby," I stumbled upon Ludvig Strigeus while researching Daniel Stenberg (connection: both have won the Polhem Prize). I'm somewhat astonished by his life's work so far. Here are some of his key creations:

    μTorrent - a small footprint BitTorrent client for Microsoft Windows and OS X
    ScummVM - an interpreter for adventure game engines, notably LucasArts's SCUMM
    OpenTTD - a reverse-engineered game engine of Transport Tycoon, which led to numerous ports and improvements over the original
    Ports of Dr. Mario and Kwirk for the TI-89 calculator
    "The Idiot" - a card game for Windows
    WebWorks - a text HTML editor
    Spotify - a commercial music streaming service
    Spotiamp - a lightweight Spotify Premium client for Windows, created as a tribute to Winamp
    TunSafe - a VPN client for Windows using the WireGuard protocol
It's clear that some programmers have far-above-average productivity and a keen sense for solutions that the world still needs. Having success with one program might be luck or coincidence, but there seems to be a system to this series of successes. Any of the above programs could easily become the life's work for many developers.

What's the secret?

sph · 2 years ago
> What's the secret?

I am not an Outstanding Programmer, but I like the advice on productivity from Jonathan Blow, paraphrased: "you don't need time management or productivity tips. If you want to complete a project, maximise the time you spend sat on your chair, with the editor open." That's all there is to it.

The best way to build a cathedral is one brick at a time. Effort and consistency trumps all. Being a 10x developer has no effect whatsoever on what you can accomplish in work or in life.

eps · 2 years ago
To each their own.

Committed sitting in a chair works well. But it's not the only option. When my kid was born it completely destroyed the routine of long uninterrupted coding sessions. However it also made me realize that you can prototype and refactor in your head while pushing a stroller. Then you get back to the computer and just flush it all in its final form. The cherry on top is that, end to end, this takes less time than sitting in front of a machine and coding and re-coding.

But, again, this worked for me because of how I code. Sitting in chair worked for Blow because of how he codes. So YMMV.

sph · 2 years ago
The chair is also a metaphor. Planning a project in a hammock is as much work as typing on Emacs.

But googling productivity advice, asking people what should they work on, and faffing about on HN is NOT work. Jumping on another project instead of taking one to completion as soon as it starts to get unfun is NOT work (which is OK for a hobby, but work gets harder the closer you are to completion)

In any case, you can do a lot of work away from the keyboard, but until you type it in in your editor, it's just an idea that exists in your head, and those are worthless.

tinco · 2 years ago
It has got to be more than that. I almost always have an editor open, working on some ambitious project. Without bashing myself too much, I have have 96 original Github projects, 90% of which unfinished.

All the finished ones are either tiny, or in such a small niche no one would ever use them or pay attention to them. Of the unfinished ones, they're all so unfinished that even if there would be something worthy of note in there, it would not be in a state that's marketable to anyone.

Of course I finished everything I worked on professionally, and there's some cool products amongst those, but no one ever paid me to work on something with global/cultural impact.

I'm not complaining at all by the way. I'm always having fun when I'm coding. But there's a definite difference between what I do, and what someone like Ludwig, or mitchellh, or Linus Torvalds, or Bellard, etc is doing.

At the very least, there's some focus and speed. I was pretty close to finishing my non standard conforming C compiler, and then Rust came out and it did everything I wanted to do in my C compiler and more. And then a couple years later I was pretty close to finishing my ECS system in Rust, and then my day job became super stressful for a couple months, making me too tired to code at night, and then SPECS was released which basically did what I was trying to do.

My favourite OSS project I ever finished was a Ruby framework for writing an AI for the Starcraft: Broodwar game. The amount of active people in the BWAPI community at that point was definitely less than 50. Most of them either did it in Java, or just in C++ directly, I'm pretty sure everyone raised their eyebrows at someone going through the effort of making Ruby bindings.

Arisaka1 · 2 years ago
>It has got to be more than that. I almost always have an editor open, working on some ambitious project. Without bashing myself too much, I have have 96 original Github projects, 90% of which unfinished. All the finished ones are either tiny, or which such a small niche no one would ever use them or pay attention to them. Of the unfinished ones, they're all so unfinished that even if there would be something worthy of note in there, it would not be in a state that's marketable to anyone.

I'll bring up a remark John Carmack made (paraphrasing): "All the small games we made for Softdisk were not worth remembering, but I'd like to think that the work that we've put during that time was what ultimately allowed us to build better games".

With that I mean, we romanticize programmers to the point where we forget what they made them great. They worked and made stuff no one will ever remember or know, but it was NECESSARY work that led them to build the stuff worth remembering.

lylejantzi3rd · 2 years ago
There is a little bit more. Look up the concepts of social proof and compound interest.

Here's a helpful piece on compound interest: https://tynan.com/thekey/

As for social proof, here's the concept: your reputation consists of your greatest achievements, not your greatest failures. I'll use Jonathan Blow as an example. He's the creator of Braid. He will always be known as the creator of Braid. One huge massively loved breakout hit is all you need to cement your reputation as an outstanding programmer. You could work on a dozen things nobody's ever heard of before and after that breakout hit and it doesn't matter.

The tricky thing is you never know what's going to be big and successful and what's going to be forgotten. That's why most outstanding programmers swing for the fences. They make things that are BIG. They're ambitious. You're not going to become recognized for outstanding work by making yet another ECS system in Rust. It has to be a step above in some way.

That said, to make a big, ambitious, impressive ECS system in Rust, you need to understand the problem extremely well. You do that by making unimpressive ECS systems in Rust. See previous point about compound interest.

Bjartr · 2 years ago
The Unreasonable Effectiveness of Just Showing Up

https://news.ycombinator.com/item?id=27833064

AnimalMuppet · 2 years ago
What you say is true, but not enough. It is also essential to have a clear idea of what you are trying to build and how you are going to build it. Without those, time in the chair is not going to be used well.
danielvaughn · 2 years ago
Agreed. I've showed up nearly every saturday and sunday morning for the past decade, and I'm still working on the same stupid side project because I keep rethinking the fundamentals and going back to the drawing board. I'm finally nearing completion, but looking back, some time management and a clearer vision would have radically improved the outcome of my life thus far.
doctor_eval · 2 years ago
Absolutely correct. At a minimum you need:

- the vision of what you want to achieve

- the skill to achieve it

- the time to build it

I find that time is the most difficult problem to solve, especially since I had a family.

moffkalast · 2 years ago
Why not? You just have to use the time in the chair to sketch out a clear idea of how/what you are trying to build first.
Arisaka1 · 2 years ago
I don't completely disagree with that, it's just that the ones who are really familiar with their tools will also iterate on half -baked ideas faster, because there are many things that come come up while on the chair.

And this is something that I actually intended to bring this point up in a thread I saw yesterday regarding thinking time and typing time but I procrastinated on it until today.

I follow the same principle whenever I type a reply. I'm not gonna pretend that the text I'm currently typing is a draft, but thinking about the things that are worth mentioning is something that I can afford after I started typing a response to your comment, if that makes sense.

scottwick · 2 years ago
Yeah, that's definitely true. I find that I'll often be excited about an idea and immediately start putting in the time to build a rough prototype. Once I realize the true scale of the effort involved I second-guess my commitment to the idea - is this really something I want to spend the next year+ working on? I think having that clear vision and enough conviction that the results will be worthwhile is very important and definitely something I struggle with.
nkozyra · 2 years ago
Focus is incredibly underrated and probably why a bunch of us are on ADHD medication, but I'll also highlight the importance of _environment_ that allows focus.

Disruption-based workflows, lack of direction, applied pressure on developers that leads to stress can all kill even the most productive dev. I've worked places (most of my career) where that space to fail and space to take a bit longer on things that have value not immediately visible and produced a lot and a couple places where negative attributes have killed the momentum that can come from the general joy & excitement of development.

A lot of these 'outstanding' people work within an environment where development is mostly joy. Where spending 3 days on a small problem incites a drive to tackle more. They're either established and trusted, wealthy enough to not be affected by these things, or just work within another flexible space.

It makes development pleasurable and as a result the output maximizes over time.

buremba · 2 years ago
^ this but it’s very hard to keep that editor open all the time if you’re not “obsessed” with what you are doing.
lordswork · 2 years ago
Agreed. Also, caring is another high order bit in your output and growth. Butt-in-seat time can be extremely wasteful if you are not engaged with or invested in your work. If you are passionate about what you're working on, it can be a huge productivity multiplier.
blowski · 2 years ago
I agree with the general ethos - good code doesn't get written by attending meetings all day, or fiddling with org mode. But like all advice, it needs caveats. If you're on a brownfield project where you have very little knowledge of the domain or legacy code, just jumping straight in and spending lots of time in your editor is probably going to result in a lot of frustration and wasted effort.
nbaugh1 · 2 years ago
Googled this guy to look into his background. Time-in-chair is definitely something he's got an edge on over the average person
piaste · 2 years ago
Yep, I'm not sure Blow is the person I would take productivity advice from, to put it mildly.
polycaster · 2 years ago
Background: He is wheelchair-bound.
nebulous1 · 2 years ago
> Effort and consistency trumps all. Being a 10x developer has no effect whatsoever on what you can accomplish in work or in life.

Ehhh. There may be issues with the term 10x developer, but if you're using it then it literally means developers that are more productive than most other developers.

kevinsync · 2 years ago
I would encourage people to not waste time searching for secrets and shortcuts through life. "Formulas for success" are highly-dependent on too many factors to replicate, and often are specific to the person who used it to their advantage.

The overwhelming vast majority of people (in any industry, art or craft) will never achieve fame, fortune and recognition, and many that DO actually find it to be an empty, existentially-void experience. Others receive it posthumously, at which point you could argue 'does it even matter?'

Just write programs if you love to do it! Your ideas aren't that good (mine aren't either), and you aren't special (nor am I), but plenty of 'unremarkable' people have conjured pure magic out of seemingly-mediocre concepts that end up helping people solve a problem, or bring them delight, or impact their lives positively.

I personally believe anybody can find success if they just focus on the journey and the joy of coding, make sure they show up and participate, be present, stay curious and playful, and don't expect any rewards for their efforts. The real reward is having fun and feeling fulfilled while you're creating something.

appplication · 2 years ago
This is ultimately the highest quality advice, though I think many will not be primed to receive it. It’s like diet fads, or the quest for the meaning of life. Many people want to believe there is some secret that some people know and others don’t.
awelxtr · 2 years ago
I think you're the only one that really answered OP's question.
mrkeen · 2 years ago
Don't build one project. You'll be forever putting it off or finding excuses not to work on it.

Build two. Then you can procrastinate on each by working on the other.

fluffet · 2 years ago
I'm Swedish. We have quite a few of these guys. For every "public" one of these, there are many that are absolute monster programmers that don't market themselves at all. I've worked with a few.

I'm just gonna throw in this link because I think it's great:

https://internetmuseum.se/english/

Among other crazy stories, Daniel is featured there. My favourite story is that the TLD .se was was ran by a guy in in his living room for years until The Swedish Internet foundation took it over.

There's also Kazaa and the guys behind The Pirate Bay. Real OG hackers from that era.

W.r.t. to your question I think it's relevant to say that "most things invented then" were "simple" ideas but hard to implement due to the tooling in that time and lack of programmers. But if you were good, you could go at it alone or with a small team. I think that it's a little bit inverted now: finding good, novel ideas in the space that can be done by one person or a small team is hard, but building and shipping it, if you do, is probably a lot easier due to OSS.

Oh and naturally the all-Swedish version is better at https://internetmuseum.se/

kreetx · 2 years ago
Regarding Kazaa (and also later, Skype), the OG developers were all Estonian. Zennström and Friis were the business people (and Friis is Danish).
mathgladiator · 2 years ago
I'm just a tryhard. However, I've been coding since a child out of a weird love/obsession. Nothing super successful in the public space, but I retired at 40 to spend time building my cathedral: https://www.adama-platform.com/

my history: https://www.adama-platform.com/2024/01/28/euler.html

manx · 2 years ago
This is next level. Have you heard of Rama by Redplanetlabs?
mathgladiator · 2 years ago
Some time ago, yes. Found it interesting.
moritonal · 2 years ago
I'd avoid hero worshiping someone's life given how much of success revolves around being smart enough to be able to take advantage of opportunities, whilst also not suffer from physical, mental or familial setbacks whilst being born into a class/race/gender that promotes you. All the while not being distracted by things such as family goals, drugs/vices or commitments and having time, experience and most critically reputation which can be used to snowball into greater achievements.

To take nothing from Ludvig, simply explaining why not everyone can be him.

JustLurking2022 · 2 years ago
Most also look like hobby projects more than professional, so I would imagine having a lot of free time is a prerequisite. I don't know anything about the guy but all of the things you listed are reimplementing something that already existed, which is faster given at least the requirements are very clear.
polycaster · 2 years ago
Reading through the comments, it seems a significant factor in success is perceived to be the availability of free time. This aligns with my own observations. However, as a father of young children, I wonder if there are examples of life plans that successfully combine family with exciting, successful software projects. I can only think of outstanding programmers who, during the prime of their creative work, were (apparently) free, unattached individuals without (forgive my blunt assumption) significant family ties. Am I mistaken? Are there counterexamples? In my experience, the most relevant skill one develops (and must develop) as a father is discipline and time management. Surely, that has to count for something, right?
codazoda · 2 years ago
I haven’t built amazing things, but I had opportunity for success even though I had children early in life. I’m now 48 and my youngest child moved out last weekend. Being an empty nester will give me even more opportunities.

A few tips off the top of my head…

Always set aside a “space” for your work. Mine has been as small as a drawer dedicated to my laptop and headphones. The more comfortable your space the better but it doesn’t need to be complex.

When my children were very young, my wife and I decided to get them in the habit of going to bed early. This gave us a couple hours of free time every night.

I’m a morning person so I wake up early, before everyone else in my house. I still get 7 or 8 hours of sleep. I’m most productive these two morning hours.

Dedicate some work time. For me, it’s morning.

Try to read more or do something else that stimulates your brain. My brain is much more active when I’m reading. I know, this is time you could be working, but for me it gets the mind moving. This should probably NOT be during your work time though.

I’ve had some mild success that I now consider failures. See my post, How to Lose Money With 25 Years of Failed Businesses:

https://joeldare.com/how-to-lose-money-with-25-years-of-fail...

danielvaughn · 2 years ago
I think it's more-or-less accepted that most extraordinarily accomplished people remained single throughout their lives. Intuitively it makes sense, though it doesn't mean you can't become greatly successful even with family commitments.

Off the top of my head, I can think of at least two people who are very successful and prolific, who also have several children.

rmsaksida · 2 years ago
Writers are the most common counter-example I can think of for this. There were many prolific, successful writers who had multiple children.