Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
I'm an 18 year old developer. How do I become one of the best programmers ever?
21 points by owenpalmer on Aug 25, 2022 | hide | past | favorite | 135 comments
Age 8: Started learning 3D software and CAD. Age 16: Got a job doing CNC programming for an aerospace mold tooling company. Age 17: Got my first web developer job. Age 18: Got my second web developer job.

On every team I've worked with, I've always been the youngest. I learn very quickly.

I want to be one of the best programmers in the world, but I have a long way to go.

What is the best use of my time outside of work? What are some strategies for success? I want to push my limits as far as possible.



You might be interested in John Carmack's recent interview on Lex Fridman's podcast. He'd probably be one of the leading candidates for "best programmer".

One thing that's common to people who are unreasonably great at something is that they do it a lot. Like, an order of magnitude more than what a normal person would consider reasonable. For Carmack that was pumping out a new game every week when he was working for a mail-order software company before he became famous. Everyone talks about how the Beatles played tons and tons of shows all over Germany before they made it big. Great comedians go on the road and hone their acts in thousands of clubs until they have something that can be a comedy special.

Quantity has a quality all its own and you have to just experience a lot of variations and run into a lot of different situations and try lots of different things to become really good.

Note, as others have pointed out, this may not be the same thing as having a happy and fulfilling life and the things you want to spend your time doing might change as you get older, but also, they might not. Best of luck.


On every team I've worked with, I've always been the youngest.

I found that early in my career too. It's been happening less and less as I get older. I can't understand why.


Don't compare yourselves to others, compare yourself to your past self. Comparisons to others will either make you think poorly of yourself or make you think poorly of others.

Some general tips that I've found useful to make myself better:

- Expose yourself to many different domains (frontend, backend, gaming, photorealistic rendering, scientific)

- Expose yourself to many different styles of programming (procedural, object oriented, functional, declarative). Spend a bit of time with languages across that spectrum: e.g.: c, rust, java, lisp, haskell, sql.

- Read codebases. Read code bases that have been around for a while. Postgres is a great example of a wonderful read. You can find notes in the repository passed down for decades. One of the hardest things in the software engineering world in my opinion is engineering with respect to time, and managing a codebase over time. Learn how what you do now might ripple out for years to come.

- Listen to lectures. MIT open courseware is your friend.

- Learn when to say "good enough". Don't let the perfect be the enemy of the good.

- Don't let it consume you. Be mindful about taking time off. Cultivate some other hobby that you can enjoy without pressures from the outside world.

- Stay humble. Be kind to yourself. You can't learn everything, find acceptance and prioritize what you do what to learn.

EDIT: - learn how to ask questions well. Don't be afraid to admit if you don't know something. Provide information about what you've already tried with your question, value the other persons time. Copy terminal output verbatim, don't paraphrase errors.

- Measure before thinking about performance.

- YAGNI


Unless your IQ is above 140 you stand no chance. The world has a lot of very smart people and it would be better for your mental health to make peace with the fact that you are probably just above average on the bell curve and that you are not anything special. You're not a beautiful and unique snowflake. You're the same decaying organic matter as everything else. We're all part of the same compost heap. We're all singing, all dancing crap of the world.


Is high iq an indicator for success? Would be interested in a source about that.


"Best programmer ever" =/= Success, the key word being "best".

You can no doubt be extremely successful without being the best at something, or particularly intelligent.

But becoming "one of the best programmers ever" would require an extremely high level of computer science knowledge and understanding (at least in my eyes), which boils down to many different disciplines of mathematics. This would obviously correlate with high intelligence.

I'm of course using a generous interpretation of the word "programmer" - someone who can analyze problems, design, and implement efficient solutions to any number of problems in computing.


Many moons ago I read a story on HN about a very successful programmer that was at the top of his field. He co founded a famous software company and his talent grew and grew until something strange happened. After achieving his greatest feats of engineering he suddenly, quite unexpectantly to everyone lost total interest in his art. He also lost interest in his partner. It was discovered that he had a rare kind of brain disease. The family was like a survivors group for a living person. He was young if I recall.

I don't mean to scare you but you are definitely smart enough to do what he did given the right environment and it looks like you are there. Unlike your peers learning is not a chore but it is exhilarating.

But remember we are finite, we have an experation date. Groups of people study us and determine when that date is and sell us life insurance.

Keep in mind that not all roads lead to happiness. You could have great riches, fame, respect, admiration. But it is all for nothing if there is no love.

For some love is in craft but craft cannot love you back.

Others find love in a mate and it is a rare couple that is happy. But that doesn't mean it isn't worth it to keep an eye for one that you like. If you find one that sees you as a partner, even if she isn't easy on the eyes, will give you a payback that is hard to measure. Family, inter-family fun. Vacation with meaning.

There is the final love that no one can take from you and that is your connection to the Almighty creator. His voice is a whisper. But it speaks love.


This is brilliant. Thank you.


Are you talking about Lee Holloway, the third co-founder of Cloudflare?


I think so. The article on Wired looked familiar.


Advice? Don’t push yourself as far as possible. You’re young, talented, and capable of kicking ass. Spread that ass kicking out over your lifetime and make sure you don’t burn out early.

Assuming you’re on the west coast, it’s 10 PM. Take a break and relax.


The best programmers ever are humble, they know their worth, and don't have to show off. I'm sure people around you will appreciate humility, so if you want to push your limits, why not helping that guy who just joined the team and seems a bit lost?


Depends on your definition. The most famous programmers often aren't so humble. If you're working for other people, being quiet is bad for your career path unless you have a rare manager.


Here's some concrete advice from someone ~3x your age who started programming at about the same time.

1. Keep at least one project going just for the fun of it. Remember the joy you've found in programming, and never lose it. A friend of mine is reverse-engineering the Civ IV AI so he can write mods for it. This will not make him famous or wealthy, but serves as something to look forward to when he's not pumping for The Man.

2. Stay in good shape physically. _Mens sana in corpore sano_ and all that. Your body is not just a dumb flesh robot that carries your brain around -- and even if it were, that enough is good reason to keep it healthy.

3. Learn to work with people remotely on important things. Find interesting or useful open source projects and contribute to them. The technical aspects will be easier than the social ones, likely. These are important skills. Vanishingly little non-trivial software is made by one person.

4. Keep learning programming languages. Software engineering is a discipline abstract from its tools. The more languages you learn the more approaches you will have to problems. E.g., learn lisp -- it'll permanently rewire parts of your brain.


I don't think you can really be. At my school years ago, i met this 18 or 19 yo girl who recoded most of 'ls' in 3 days (without printf or any va_arg as this was forbidden), then got bored and added all the options even some obscure ones and improved the efficiency using branchless tricks, all while teaching people with less than 2 month of experience in programming binary masks and bit shifting (successfully). She wasn't the best in my year, in this new school without reputation.

That's why I decided very early in my career than being the best was pretty much impossible and that i would focus on being a good teammate, knowledgeable on most subjects with a deep focus on one (7 years later i still haven't really chosen btw), and happy to share this knowledge. Write good code, follow the practice of your team even if it means letting go this fantastic python trick (or change them if you think they're inappropriate), document everything and ask for advice. And give advice


I would learn lots of different languages, databases, concurrency models and paradigms.

I felt like my life was stuck in a rut being very good at one language (Java), but then I tried Ruby and my mind was blown. That reinvigorated my interest in JavaScript/HTM/CSS. Then I felt road blocked by database performance and a good friend really pushed me to really know and understand how and why to use SQL well.

This then was a slippery slope to realizing that something that seems hard or impossible in one language/database/paradigm is trivial in another.

My personal goal is to learn a new language a year. I’m not always successful (I’m looking at you, Haskell!), and I don’t always use the new languages often, but every single time the process has always made my code better, tighter, more maintainable, etc.

A good place to start is the Pragmatic Programmer’s “Seven Languages in Seven Weeks” book and subsequent series of books.

As they quote in the first few pages:

“A language that doesn’t change how you think about a problem isn’t worth learning.”


I'd propose thinking carefully about what you mean by "best".

Most well-known? Most respected? Most influential? Most prolific? Most knowledgeable? Most hire-able?

How are you going to measure your progress?

---

> On every team I've worked with, I've always been the youngest.

I don't mean to be snarky, but why hit this point so hard? If your post started at "I want to be one of the best", it'd be less than half as long and get the same point across.

I applaud your initiative and ability; you are further on the road to expertise than many at your age. Still: be humble. It's hard to become the world's best if you're not a working programmer. Make sure companies continue to want to hire you by being a knowledgable programmer who is easy to work with.

---

Plan on working with people?

- Practice arguing a position effectively. - Get accustomed to communicating your ideas simply, with the goal of teaching your audience

---

Don't think about programming all the time. Read, look at art, push your brain in unexpected directions. It pays off in your work.


>I want to be one of the best programmers in the world, but I have a long way to go.

I think you have set a very noble goal for yourself; I certainly wish that you succeed in that endeavor!

But let me ask you something...

Do you really want to be the best programmer in the world?

?

What does it mean to be the best programmer in the world?

?

If you want to become the best programmer in the world because "companies like Facebook (Meta), Apple, Amazon, Netflix, Google (and Microsoft!) -- hire only the best programmers" -- then you DON'T actually want to be "the best programmer in the world" -- your goal would be to simply be hired by Facebook/Apple/Amazon/Netflix/Google/Microsoft!

That is (if that were the case!) -- getting hired by Facebook/Apple/Amazon/Netflix/Google/Microsoft -- would be the actual goal, the WHY of the goal!

You see, you'd make great progress towards your goal -- if you could better define the goal!

Let me ask you this:

WHY do you want to become one of the best programmers ever?

?


>Do you really want to be the best programmer in the world?

One of the best, yes.

>What does it mean to be the best programmer in the world?

I want to do incredible things. And those things don't need to include buzzwords. I want to solve big problems. I want to increase the quality of software in general, including the development experience.

I haven't really thought about working for FAANG. Money doesn't interest me. Interesting problems do.

Thank you for the high quality answer.


Then find a secret that was forgotten and blow it up to larger than life proportions. Or solve the problem of endlessly waiting at a traffic light waiting it to go green when the streets have been empty for a minute. Think of how much fuel that would save.

Find a bite sized solution for something incredible but before you do, imagine ways in which it can make a return to your wallet.

Realize that these sorts of things take a very long time to discover but you will know exactly what it is when you find it if you know there is no alternative to it.

The vast majority of my interest led no where but one did lead and it was the discovery of a popular textbook written in the 1800s which happens to be popular today. I used the material for an app that was pretty successful for a number of years.

Self publishing is tricky.

Perhaps find something like a bread and butter throw together thing. It can be amazing that people have learned how to turn a server in their bedroom into a 2k per month source of cash. Then you will have total freedom to explore any avenue, no matter how unlikely it is to pull it off.


Thank you for the high quality question!

>I want to do incredible things. And those things don't need to include buzzwords. I want to solve big problems.

OK, do you want to solve big problems solely in/with/by programming/software -- or do you wish to engage in problem solving where Programming -- is only one of many domains used to solve problems (sort of like cross-domain problem solving, where the solution to a problem may include elements of software/programming -- but also elements from other fields, including (but not limited to!) such things as Psychology, Philosophy, Business Theory, Math, Physics, Engineering, etc.) ?

>I want to increase the quality of software in general

How?

>including the development experience.

What specifically don't you like about the development experience?

?

(Note: It's OK not to like aspects of software development -- each software developer has their own specific dislikes -- I only ask this question to get more information to help me figure out exactly what you're trying to do! If I can, then maybe I can help!)


"Incredible things" ? There are so many potential fields. I would presume that "incredible" does not include yet another advertising channel, e.g. Meta/Alphabet/Amazon.

What about detection and treatment of various cancers; advancing the state of DNA techniques for better treatments, detection of diseases; new forms of energy storage, e.g. flow-batteries; assist conservation, e.g. detecting illegal deforestation and implementing rapid response; track and rescue endangered species; etc.

Being a good programmer is table stakes. It is your knowledge and work within a specialized domain that leads to incredible accomplishments.

Explore and enjoy the adventure.


> I want to increase the quality of software in general, including the development experience.

That just absolutely screams lack of experience.

If you think some software is lacking, then by all means knock yourself out and try to improve it.

If you're having issues with your 'development experience' then that's you, not the industry in general. Also development is not programming.


>That just absolutely screams lack of experience.

No, I think it shows I understand that many systems developers are forced to work with are poor design. You are misinterpreting me.

I don't blindly accept a system because everyone uses it. I understand what is happening under the hood and know it could be better.


This. Do you want to make lots of money? Solve hard problems? Have autonomy and ownership of code? Very different career paths!


Work on the hardest problems you can with the smartest people you know. Keep that up long enough and you'll be all on your own, with some crackpot idea nobody is really sure if it will work or not. That's when you've met the cutting edge, the boundary of what anyone knows or has done. At that point you just keep on exploring. Hack something important and useful together, and invent it into the world. Don't worry about the laurels, they'll come in due time.

If there was a book called "How to Become the Greatest Programmer Ever" I would recommend it to you. The fact of the matter is the world is a strange and lonely place: Your guess is as good as mine. Follow the well marked paths as long as you can, never let good advice fall on deaf ears, and pray to heaven for guidance when the going gets tough.


How do you get the smartest people to want to work with you when you are not as smart as them? The smartest people are all generally very successful and they themselves have wide-ranging preoccupations. What if the smartest people you know are decidedly interested in a different field than you do?


The same thing that makes them interesting to you is what could make you interesting to them: They are working on something that makes you curious. Keep hacking away on projects, invent the future you want to see. Share the vision and work with the world, and keep a kind heart. You can't guarantee you'll be paired with exactly who you want, but someone will come along for the journey.

Think of Joe Rogan, who arguably is the greatest in the world at getting smart people in the same room as him. He knows what he's good at and shares his knowledge, he keeps an open mind and curious character, and he always tries to stay polite and inviting. If you are looking for someone to model yourself after to meet more smart people, there are many worse choice than Joe Rogan.


What does it mean to be the "best programmer ever"? You probably want a more specific objective. Maybe you want to be the best at competitive programming? If so, then practice that, read books on DSA, etc. On the other hand, programming is a means to an end, and most people who are thought of as "great programmers" built something useful, such as an OS, a programming language or a software framework. Rather than focus on development skills in the abstract, it might be more productive to focus on a problem you want to solve, and learn what you need to achieve that.


You’re gonna have to give up a lot, like the girl you love, when she takes too much of your time or doesn’t understand what you’re trying to do. You’ll get over it. But sometimes sacrificing everything will actually break you so learn how to recognize that. If you make a mistake there then recover and move on, like always.

The companies you’re working at are shit and web dev is easy, try to get through that phase in the next year. There are unlimited loopholes for making money, pick one and extract from the world what you need to live, then get back to doing deep and difficult programming. Learn a lot of pure mathematics, because easy programming like web dev will become commoditized or automated and you need the mental flexibility given by pure math in order to come out on top in the future. You have to think longer term than you are now.

And living is an art, refine and trust your intuition constantly. Every ideology and group is wrong in some way. You have to be outside all of them and also take what they know.

Recognize when you’re fighting yourself and realize that you’re distracted. Probably by status or money or ego things. Accept the lost time and move on.

Regularly put everything on the line. You have no time to waste being risk-averse. Make really big bets and make sure they succeed. If they don’t then hopefully you’re fine physically and worst case you have nothing and go live in the woods and eat rice and beans and plot the next move. This is fine, you’ll learn to deal with catastrophic failure. That means you’re pushing the limits. Push harder.


If you become one of the best programmers in the world, what will you have achieved? What is there about programming that captures your passion? Will that be sustainable for the brief moment you are alive. What do you want as a legacy after 80 years of work?

One example: The Hacker's Conference ["Hackers"]. It is populated by a diverse group of people, . Attendees program, but I doubt that anyone of the attendees would call themselves a programmer except in jest.

Hackers do what they do. Some are mathematicians, some are musicians. At least one plays the organ. Others are into sex, drugs, and rock and roll. Some are spiritual, some agnostic. Some climb mountains. Others worry about how to planet-form the earth to recover from an over-abundance of CO2. Some have families and kids, some do not. Everyone is interested in everything. Hackers know things, observe, and learn things. They delight in sharing knowledge, particularly arcane knowledge. They are compassionate, ethical, and loving (although there are occasional exceptions).

If you are good at programming you are likely to be good at living an exploratory life. Be fearless and brash. Always wonder why and learn how.


Write a lot of programs.

If you learn quickly the rest will fall in to place. Don't pay too much attention to the constant flux of industry dogma, focus on working solutions.

Stop reading HN.


Good advice. Thank you.


> What are some strategies for success?

You want to be the best programmer or you want to be the best known (famous) programmer? Someone like John Carmack?

Create something extraordinary.


I'm in my late 30s and worked with an absolutely brilliant 18 year old who exceeded all of us oldies with his raw talent.

He had passion projects outside of work that were already popular within our technical niche when we hired him, and continued to deliver on these, very impressively!

We had him present at an international conference on some of the work he'd done for us, which really helped with his growth - it was very different from his other skill sets but he did an excellent job too.

But I think to be honest, the biggest change in his life was finding a romantic partner. Perhaps it was this, perhaps it was just maturing anyway, but he seemed to gain a lot of confidence and wellbeing. She certainly enriched his life in a way that the technical work didn't.

So my advice to you would be:

- keep doing what you're doing!

- but also, challenge yourself in other areas that you can branch out to

- and take some time find a candidate for your future life partner

Best of luck to you!


There is likely no such a thing as "best programmer" at all. A person can certainly excel in deep knowledge of the domain, speed and accuracy, but at a certain level it is hardly possible to discern one such programmer from another - no one is "best". Some of them go on to be famous, but that is because of a need to say something (Aaron Schwarz et al) or do something groundbreaking (Linus Torvalds et al), not because they stand out from their peers programming wise.

That said, congratulations on your achievements so far. You seem to be on track to be a great programmer. To achieve that goal I believe some formal CS training is useful if not required. Learn to master C, C++, Lisp and one of the functional languages and their related paradigms. Learn the different database technologies deeply. Understand how processors, memory and communication works close to the metal. And at that point you no doubt will have found you specialty, developing one such is really one of the requirements to excel. And, as others have said make sure you have a reasonable life/work balance.

Good luck!


Go fly a kite.

Programmers who only do programming, suck at programming. You can't get perspective by sitting still. You have to expose yourself to new things.

Learn how to sail. Take up stamp collecting. Grow exotic flowers in teacups. Earn a black belt. Become a baker. Go to a lindy hop dance night on the weekend. Take apart and put together an engine. Learn a new language. Travel the world.

After all that, programming will seem like a walk in the park. You'll probably get bored with it, honestly. Computer science is a pretty limited field and has had minor incremental improvements over the past two decades. Hardware stuff gets more advanced but the software is mostly the same as 30 years ago. Still, outside experiences will help inform your perspective on what works and what doesn't, where the sides of the box are. Aside from that, just practice a lot, in a lot of different fields.

Also, please don't make the mistake of trying to prove yourself through achievements. We would all much rather work with the best person in the world than the best programmer.


Being the best is just like that toy that you long wished for Christmas: once you get it and play long enough with it, it will no longer seem as desirable.

Make sure you fill your life with meaning and love. The rest is not as important. Recognition comes and goes. And even if it stays, it will lose its shine fast enough.

PS: And as a Jesuit once said, stay humble and you won't tumble :)


There's a lot you can learn by yourself in this field as you've probably realized.

But I find the best learnings for me have come from others. Mostly through observing their work and them observing mine. I think finding and surrounding yourself with people you admire is best.

Remember code is just a tool to achieve some end goal and it shouldn't be the goal itself imo.


There's always Leetcode and Hacker Rank. If you get involved in an open source project your horizons may narrow quickly, so it's best understanding the strengths of being a generalist or being best in a particular area. The key thing in the development sphere is that nothing stands still, and neither should you.


For best programmer that might be to learn more Data Structures and Algorithms. Maybe try some LeetCode. See if you can find a senior programmer to be your mentor.

For best developer, I think it is good to learn a bit about each team member's role. Learn some UX design, Scrum Master, Tester, Product Owner and Database Admin. You don’t need to learn enough to be able to do their job but enough to understand how and what they work with.

Keep learning programming, more languages, you come from the web, learn some Golang, Rust, Elixir, Python, to learn different paradigms. Do some side projects about things that you are passionate about (I play Dungeons & Dragons so I have built tools and websites to help with that).

Maybe get a job at a consultancy, you get to work with different clients in different domains and learn a lot.

But as others have pointed out, don’t burn yourself out. It sucks and takes a long time to come back from. Godspeed


I've seen many...so this is my advice...increase your output in software. Breed your software development especially opensource in public repositories like rabbits. Design your own programming language something like Lua scripting which is much easier to achieve wide usage than compiled one like Julia or Rust. Choose a field say AI and go real deep into it. Then you can also built your software output around it. Be shameless promoting your own...be as shameless as like Andrew Tate. Dont worry getting into FAMNG. When you're polific they will headhunt you. Focus on your output...everything elese like being the best and 10x 100x will automatically follows. Avoid hacking/cracking that is a dark path that you will be a great sith but rarely will the general public/compabies appreciate/reward you.


Being the best at something is a good ideal, but hopefully you'll never get there. Because if you do, what will be your drive? I'm serious about this. Think through your stated motivation, and ask yourself what you want out of life. Are they the same? If you are the best, what metrics are you using to determine that? A lot of money? Fame? When I was a programmer, I was happy knowing that my program was making someone's day a little easier. They certainly weren't the best programs, but they were what my users wanted, and I talked to my users often. I think a programmer who is a good people person would stand out, but it doesn't matter what I think; you need to answer these questions for yourself. Good luck.


There’s no way to measure or compare programmers, so we can’t say that anyone belongs to the group of “best programmers in the world.” You can strive to get really good at programming, do fun and interesting things, make money, help other programmers.

I remember feeling the excitement and drive you express. Young people learn fast, a big advantage. On the other hand young people lack experience, and don’t know how much they don’t know. Plenty of older people have the same problem but I think it’s more acute in younger people. Use your talents, energy, curiosity, and drive to practice and learn as much as you can. Learn from people who have more experience. Don’t worry about getting to “one of the best.” Instead get to the best you can do, or want to do.


Have fun. Don’t let anyone set limits on what you can or can’t do. Follow your curiosity, no matter how impractical it seems. If your goal is to really be the best programmer and not the best paid programmer, eschew the typical path and figure out how to earn money to fund your research (freelance, contract gigs, anything that gives you freedom with your time). Discipline yourself to take care of the money work and then do as you please. Above all else: write and teach as you go. Doing this significantly improves your ability to see flaws in your process/thinking and move much faster.

Last but not least, what my dad taught me: don’t let anyone steal your joy.


Becoming one of the best ever is only possible if your IQ is one of the best ever. There is going to be some biological upper limit. Minds like Torvalds, Richie, Thompson are rare; and there is nothing you can do to reach that level if your own source code isn't on the same level. However, there is a lot of great advice here in the comments that can take you to your full potential, whatever that may be. That's important too, because it's sure easy to keep yourself well below that level.

Go to YouTube and search for "Big Think Larry Wall" and "Big Think Bjarne Stroustrup" and listen to a couple of the greats.


> What is the best use of my time outside of work?

At your kind of age (a little older) both my children went travelling, one around Europe, the other South America, without any prompting. They both came back with a self confidence and respect for other people you couldn't believe. They did it when they felt it was what they wanted (but scared inside) and went alone - they joined up with others they met on the road. If you get to a stage where you feel ready it is worth considering. It is not risk free and as a parent it is petrifying! But as others have said here, it is worth working on who you are as well as what you can do.


I’d start by defining your goal more clearly. You said “one of the best programmers” but that means nothing. That’s like saying “one of the best athletes”. You could go all the way from horse shoe throwing to F1 to basketball to golf and be “one of the best” for that specific sport (again - how is that defined? By winning? By your individual stats? Which stats? How much money you make? How much fame you acquired? Who are you comparing against?). Does it mean you’re one of the best athletes?

Tbh - the lack of introspection here on the topic says enough. You won’t be the best cause you don’t even know what the best is.


Stay off time-sinks like HN, youtube, and social media. Do more of the hard things.


I usually only haunt HN after I'm exhausted :D


Exercise, build and maintain relationships, eat well, stay healthy, travel, make friends, stay open minded, be humble, find balance and joy in your life so you don't burn out at 25.

Learn the skills if you want. Go to school if you want. Get involved with open source projects.

But don't let it take over your whole life. By the time you're 40, nobody will really care if you're the best programmer in the world. Your friends and colleagues will have their own lives. Businesses will rise and fall. Languages will come and go. Will you still be happy?


He didn’t ask how to be happy and live a balanced life. He wants to be the best programmer ever and this is not the answer.


Of course it is. Lack of balance is invariable damaging to humans. OP is going to receive plenty of good programming and technical information in this thread. At least one person needs to remind them to have a life as well.


I agree. The best programmers I've worked with are happy outside of work. Leading a miserable life is very damaging.


This is a fun comment because "OP" are his initials.


Most programmers I know don't fulfill all the above, so it's a great way to climb up a standard deviation or two.

All programmers are within an order of magnitude in ability and productivity anyway, so you can't be a "super duper smart 10x SWE".


You can't be "the best" when you find yourself unable to work anymore.


I don't think they're mutually exclusive, are they? I'm not at all trying to dissuade the OP from pursuing excellence. I think that's a noble and beautiful goal and I strongly encourage the OP to pursue it :) Just not at the exclusion of self-care.

Already, there's every indication that the OP is very capable of picking up new knowledge and technologies quickly, on their own. And HN being what it is, there will be plenty of specific domain knowledge from people who've done it longer, better, than I have (or ever could, really).

But how many of us were young and brilliant once, standing out in a sea of averages, starry-eyed with the whole world ahead of us, filled with unlimited potential... and little awareness of our limitations and fragility, present or future? Life experience is harder won than technical skills. We are, at the end of the day, still primates with deeply-rooted biological, social, physical, and emotional needs. Unless the OP manages to transform us all into the Borg.

OP, if you're reading this, just know that I'm rooting for you and hope to you see your name in the news (or repos, or credits) for years and decades to come. I said what I did only because I want that to remain the case well into your 30s, 40s, and beyond. Too many of us dev types start out eager and burn out early because of the stresses, ceilings, roller-coasters, limits, bureaucracies, whatever. If you browse the Ask HN section you'll find "Help, I'm burning out..." type posts with some frequency. Some change careers, others spiral into depression, etc. Maybe we should have our own version of the "27 Club".

Some people are lucky enough to be able to maintain a single laser focus through their entire lives, never deviating, never wanting anything more, and feeling empty when they're not doing that one thing. Maybe it's a personality thing, maybe a spectrum thing, maybe a genius thing, maybe all of the above and more... who knows? I'm not a brain scientist. But they're lucky, and relatively rare. It's not like that for most people.

For the rest of us, the pursuit of excellence -- however we might individually define it -- requires us to be able to, at a minimum, maintain a sufficient baseline of health and relationships so as to remain a "functional workaholic". Think of it as "devops for the mind and body". If you do just the bare minimum, which isn't much (a few hours a week, if that), you can wake up every day feeling rested and energized to do the work, avoid repetitive motion injuries or posture-related pains later in life, grow the networks you need to meet other people at the top of their game, have friends and colleagues to help you through hard times, etc.

And if you do more than the bare minimum, the network effects can compound and create a virtuous cycle. You might meet professionals in other fields working on hard problems but not seeing it through the eyes of a programmer: mathematicians, natural scientists, cartographers, rocket scientists, architects, musicians, artists, whatever. They can provide not just new problems to solve, but fresh perspectives that we don't see enough of in the dev world. Same thing if you develop more hobbies (drones can lead into photogrammetry and aeronautics, photography into sensors and machine vision, hiking into network graphs and GIS, dance into mocap and animation, whatever).

Then, when you become truly exceptional, you'll probably run into ecosystem limits created by your peers... not on purpose, but just because most of us are only slightly above average. For every John Carmack or Linus Torvalds or Ada Lovelace there are a million mediocre devs working on everyday projects. In the professional world, much of your own code will be surrounded or hamstrung by other people's mediocrity. When you reach that point, you can choose to improve it (which requires people skills to convince them to refactor and/or accept your PRs or let you onto their team), ignore it and continue on (which requires some degree of emotional maturity, enough to at least compartmentalize), move onto other problems (which requires you to know your interests and passions first), or all of the above.

A lone wolf coder can solve some problems on their own (see Bun, Linux, Git, Bitcoin, etc.), but there are other classes of problems that require bigger teams and/or massive investments (to turn Linux into Android phones, or Git into GitHub, or Bitcoin into Coinbase, etc.) Even John Carmack needed Facebook's resources to bring his VR vision to life, Musk needed his teams (and loads of money) for spaceflight and electric cars, Valve (the gaming company) took years to change the landscape, and so forth. Eventually you'll meet other brilliant people too, and how you choose to relate to them will in no small part determine the sorts of problems you get to work on, your work-life balance, how much you get paid, etc.

Your technical know-how is something that you can mostly control on your own, and I have every faith that you will master the knowledge (and then some, and hopefully come back to teach us). I just hope you can also master the rest of your life well enough to stay happy, healthy, humble, and productive (maybe even in that order).

I've ranted enough, lol. Have fun and good luck :)


Becoming one of the best ever is only possible if your IQ is one of the best ever. There is going to be some biological upper limit. Minds like Torvalds, Richie, Thompson are rare; and there is nothing you can do to reach that level if your own source code isn't on the same level. However, there is a lot of great advice here that can take you to your full potential, whatever that may be. That's important too, because it sure it easy to keep yourself well below that level.


> Minds like Torvalds, Richie, Thompson are rare

Going a bit OT, but what do you think makes these minds so rare? They're obviously pretty smart, maybe even very smart - you have to be smart enough in order to become so accomplished after all - but I wonder whether people don't often simply mistake accomplishment with brilliance. I'm pretty sure you could find other people who, being in the right place at the right time and with enough endurance, would be able to fill their shoes. You can't become as accomplished as Torvalds is by simply repeating what he did with Linux since 1991, but today; that niche's already taken, Torvalds 2.0 would be just one of many kernel devs now and their own version control system wouldn't even have an advantage of being used by Linux.


I’m reasonably sure it’s been proven that IQ score is a poor measure of intelligence.

Although I believe there is some truth in what your saying, that those engineers had minds which are rare, I personally don’t believe it’s all genetics. Practice, experience, craftsmanship and purpose will lead a person to the same outcome.


Don't lose your desire for excellence and don't discouraged by the non-constructive comments on this thread. Happy to chat; you can contact me at https://www.skmurphy.com/blog/2016/08/01/skmurphy-office-hou...


Ideally you would have a project that you use and maintain/update over a long period.

It doesn't need to be perfect, it doesn't need to consume all your free time. You don't even need to write tests ;)

But there's value in having to fix and refactor your old code: what abstraction proved useful or unnecessary, what code is easy or hard to change etc


I don’t think Fabrice Bellard or Donald Knuth aimed to be the best programmers in the world.


I have to give "mad props" to Fabrice Bellard and Donald Knuth -- but don't forget about Brian Kernighan, Dennis Richie, Niklaus Wirth, Charles Simonyi, Raymond Chen, Mike "Assume Nothing" Abrash, Jeff Dean, Edsger Dijkstra, Andrew Tanenbaum, Linus Torvalds, Anders Hejlsberg, Joel Spolsky, and, more recently Eelco Dolstra -- and all of the hundreds of thousands of unnamed unsung committers to GitHub and other open-source repositories...

And of course Charles Babbage, George Boole, Alan Turing, John Mauchly, J. Presper Eckert, Claude Shannon, John Von Neuman, Grace Hopper -- and the other early pioneers of computation...


In my reading of interviews, biographies of many of the foregoing, I don't recall a single one having the goal of being "the best". Most certainly not in the sense that we talk about sports stars.

In my understanding, each and every person on your list was passionate about solving some problem, extending their knowledge, sharing their learning with others. The recognition followed their contributions.


To be honest, I didn't even set out to become a developer. I just loved solving problems. My question is more on the side of where I should invest my time.


What is the largest problem in your life right now?

I'd start there!

Even if this problem is non-technical/non-programming in nature -- by examining it in depth, it might very well lead into a set of related sub-problems where one or more of the sub-problems are technical/programming in nature!

Simple example from my own life: One "life goal" of "How do I make more money?" which is non-technical, non-programming in nature -- at one point in my life led to write software as a side-hustle.

This then (writing the software) became a sub-problem which was technical/programming in nature.

Start with your own life problems, technical or not. Break them down into sub-problems. One or more sub-problems will lead you down one or more technical/programming paths -- which in turn may lead you to more sub-sub problems!

If you love problem solving -- if you use this method -- you'll always have challenging and interesting problems in your life -- you'll never be bored!

That's because in solving one non-trivial problem -- you'll often encounter many more cross-domain sub-problems! When you encounter them, you'll need to learn more domain knowledge -- which is great motivation to study interesting and sometimes quite esoteric topics that you haven't studied before!

In other words, you'll keep learning, keep solving problems, and keep finding new problems to solve!

As far as how to best invest your time -- well, you'll figure it out!


Thank you! I'll be sure to apply this.


> What are some strategies for success?

Pick any software engineering school or college outside the US.


Hard work, fun, and deliberate practice. Find projects that you think are interesting, which also push the limits of your knowledge. It's a lot easier to work hard when you're working on something you find worthwhile :)


Well, you won’t.

Developer ≠ programmer.

Let adversity be the fuel to to you fire. Don’t let a random person like tell you it’s not gonna happen. Prove me wrong.

Learn programming (if that is what you want to be the best at. There are of course many diciplines out there where you could be no.1)

Think and reflect. Maybe try a hallucinagen at some point (that won’t make you smarter and carries its own risk, but best case scenario it will open the doors to new mental pathways for you to think and reflect internally and externally)

Learn. As much as you can. Apply that knowledge to as many things as you can. If your toolbox only has a screwdriver and nails, how do yo solve for that? Get a screwdriver, modify the hammer or create a solution to put between the screwdriver and nails? This also leads back to the think and reflect part (and is not exclusively entrepreneurial in spirit, it applies to most aspects of work and life)

Be nice and humble. You won’t get far on raw talent alone. You need people to support and challenge you.

Focus, dedication, determination. The movie Whiplash in many ways explores what it means and takes to become “the best”. Watch it.


> Developer ≠ programmer.

Noone agrees on the definition of any of these, and they have changed over the years. Wikipedia says they are the same https://en.wikipedia.org/wiki/Programmer

> Maybe try a hallucinagen

Is there strong evidence to support this is necessary? Which great computer programmers attribute their abilities to this?


You are not wrong. And in the spirit of doing commute commenting, nuances tend to fall by the wayside.

It could of course also be = and not exlusively ≠. More context and discussion to pin down similarities and difference is case by case.

Maybe does not equal nescessity. Pf course you do do not need to get high to achieve success. Depending on your specific personality and ambition it may help loosen or untie mental “knots”. I do not endorse it as a general rule.

I am but an internet stranger surfing on evaporating bytes.


Seconded for Whiplash.


Developer ≠ Programmer ≠ Web Developer ≠ Full Stack Developer ≠ Software Engineer ≠ 10x'er ≠ Software Architect ≠ Code Monkey ≠ Devops Guy ≠ Power User ≠ "Go-To Guy" ≠ Business Analyst ≠ Productive Coworker ≠ Problem Solver

There may be areas of overlap in one or more of the above -- but in general, they are mostly different! (Learn to recognize which is which in your work environment! <g>)

(Humor: I should have added "≠ Ruby On Rails Developer" to the end of that list (you know, for comedic purposes! <g>) -- but then the whole RoR community would be after my keyster! <g>)


(Extra, Extra Humor!: "≠ HN Downvoter" <g>)


To complement the other answers here, beware: https://youtu.be/K64xhPbo6Sw?t=136


keep doing what you are doing and then turn 50


Show a little modesty and come down to earth. Enjoy programming and making a living by coding is more important than fame.


im not the best, but i think if i was better at math id be closer to that no. 1 spot. i think you should learn about how to succeed at university/how to get the most out of your classes. stay away from digital addictions chess, instagram, hn, reddit, dota and from things that will move you away from your goal.


Solve the hardest problems of digital age, like removing spam completely from emails, search engines and social networks.


Spam is a solved problem, but it makes money so it's not in anyone's interest to remove it.


If you need to throw too much money at it means the solution is not scalable/sustainable, that's the issue to solve now. Captchas are band-aids, moderation tends to elitist spam (ie. Wikipedia, Reddit, StackOverflow), filtering triggers false positives and unfair account bans.


"how do I become one of the best programmers ever?" focusing on learning and writing less articles on boards


Practice practice practice.

Read read read.

Get a mentor; accountability.

Teach teach teach.


If you want to be incredible, you won't find out how from average people. Make your own path.


Quit the industry and go into academia. Professional programming is slow and rarely innovative.

Go forward with a PhD and post-doc, and do research on solving climate change via computers. Win a Turing award for groundbreaking language and ISA based around energy efficiency of computation. Congratulations, you are now one of the best programmers.


Learn about business, the business of programming, engineering services, startups.


Heh. Start by defining best.


This is such a weird and irrelevant request...


one step at a time.

stop getting jobs. get a 4 year degree at the best school you can get into.


Practice.


A high-dimensional ball has more surface area than volume.

Human brains are only used to thinking in lower dimensional spaces but human lives intrinsically occupy manyfold dimensional spaces.

"Better" is only a meaningful metric under two circumstances:

* A one dimensional ordering, in which case all items can be ordered in relation with each other

* A multi-dimensional ordering in which one item has total domination over an another item

Take recipes for example, recipes can be evaluated based on taste, nutrition, ease of preparation, quality of writing, availability of ingredients etc, etc, etc.

Is a recipe that's easier to make but less tasty "worse" than one that takes way more time but tastes way better? Either you can "linearize" the dimensions by assigning some kind of weighting like 0.5 * taste + 0.3 * easiness + 0.1 * nutrition + 0.1 * other OR you can accept there is no intrinsic ranking and say neither recipe is better than the other, they're just different.

But what you can say is that a recipe that is worse in taste AND worse in ease of preparation AND worse in nutrition AND worse at everything else is a categorically worse recipe. That's a recipe that's at the center of the ball and not the surface.

In a high-dimensional world, being the best is trivial, almost everyone is the best except the people who are all around mediocre, people who occupy the center of the ball.

Despite this, most people fail at this task, just like how most recipes you find on the internet are categorically not the best, because their mindset does not unlock this view of the world. They're followers rather than leaders and so they subscribe to a very narrow and rigid view of what programming means and are desperately competing amongst those dimensions with every other person who subscribes to that view and they never reach close to the top because a low dimensional ball has very little surface area relative to volume.

So if there's one single piece of advice I could give you about how to become "the best", it's to forge your own path early and confidently and bravely. There are a million different roles that programmers have in society that each require a million different types of skills and the one you're going to be the best at likely hasn't been discovered yet. Follow your passions and your interests and develop a unique point of view and thrive in the intersection between areas of rare overlap and becoming the best is simply table stakes.

Whatever you do, don't linearalize your life upon metrics given to you by someone else because they have an agenda to corrall you into a competition for their benefit, not yours. Introspect and figure out what "best" means for you and use that to drive you and you truly will believe you are the best because nobody else will share that same linearization as you.

For a very similar take on this, but from the Physics world, I recommend you read this paper: Physics in a diverse world or A Spherical Cow Model of Physics Talent [1]

[1] https://arxiv.org/abs/2203.09485


At 35, I have the same goal and feel that I've actually made quite a bit of progress and am working on some very interesting projects. I'll share some of my secrets with you:

1. When you find an issue in code, search the entire codebase for it because it's probable that the mistake has been made before. For example, I once used strncpy instead of strncpy_s which got flagged in the code review. After I learned why I searched the codebase and I had done that several times before that hadn't been caught in code reviews. I could have made my week easier by not doing this, as fixing the codebase resulted in additional time, more code reviews, and more embarrassment that I made a stupid mistake many times before my team noticed. However, if I hadn't, then we could have had customers experience issues in the future, which would have been far worse.

2. With any project, build out an extensive structure of resources personally curated by yourself. Get used to documenting everything you learn, even if it is just notes to yourself, but the more the better. At my job, in my file storage area, I have a folder for documentation, a folder for tests to run, a folder for things to install to set the tests up, a folder for customer cases, a folder for freeware that I use, etc. I'm constantly building these out the best I can. Make sure that it's an area you have complete control over so that you can control the organization of it.

3. Keep track of the issues that make it out to the public, even once they are fixed it takes customers years to update so you will be hearing a lot about any issue that gets out. My team recently changed a lot, so after the dust settled I asked for a few months to do some research. I used a lot of that time to build two spreadsheets. The first is a list of every customer case that was resolved, whether the issue was on their end (environmental) or on ours, and what the issue was. The second spreadsheet was a list of issues on our end, what versions they were introduced in, what versions and changesets they were fixed in, what to look for in the logs to detect the issue, and so on. I put these files in my folder for customer cases. Then, I used the info I gathered to create a script to scan logs, look for lines of interest, and output that a probable issue has been detected.

4. Realize that other people aren't going to do these things, even if they are good developers. I've become one of the core programmers and have survived multiple layoffs. My section of resources, my logging scanner, my issue spreadsheets, they are all out in areas publicly accessible to the other devs and it doesn't matter. I'm not afraid of becoming redundant and being replaced because my knowledge is out there. Rather, it's the exact opposite. The rest of my team, even though they are skilled programmers, are not going to do the same things that I do even if I explain all the details to them on how to keep track of everything. Instead, they are constantly amazed that I can often solve issues that pop up immediately.

5. If someone finds a tool too complicated or confusing, then the issue is not with the person, but with the tool. Often as developers we are responsible for how tools are presented and explained but not who the user is. As such, it is tempting to say that the problem isn't with the tool we built, but with the "stupid" user. I call this view "Linux mentality" because I find many (of course not all) Linux users have a "git good" type attitude where they think the solution is for people to spend a vast amount of time and effort learning to use clunky tools, instead of finding better tools.

My favorite example of this came from this very forum: a comment on a post once actually said that if you don't know how to use the command line, then you have an "extreme addiction to IDEs", are "dumber by the day", and "you will be replaced by lesser skilled cheap labor inevitably". He never once thought that maybe the command line should be replaced with something better. The other example I have of this is in school when I was telling a classmate about software that I had written. He asked me why I had written it as anyone could write a script to do what I was doing. I told him that while he could write a script, my mom sure couldn't. In other words, I view complicated tools as an opportunity to either fix the tool or to write my own competing tool instead of expecting users to spend their precious time and effort overcoming the complications.

6. So far this has all been about working with people, which is the often overlooked part of programming. However, I have a secret about code as well: programming is a broken mess because it is over-complicated. Just like my last point was that complicated tools need to be fixed to be simpler, all of programming is complicated and should be simpler. At the end of the day, programming is just about defining functions and datatypes. Classes, constructors, destructors, exceptions, many of these things started out as ways to make programming easier but try to teach programming to a newbie and you'll see just how much of what we think is fundamental to programming is hard to explain why we do them.

In particular, the crux of my hot take is that I think Object Oriented Programming (OOP) is a mistake and a dead end. I'm not saying that you shouldn't use it. I'm saying that I think the jump from Procedural programming to more organized code made a mistake by going to OOP. Many people don't even realize what a class actually is: a grouping of a user defined datatype and a set of functions that invisibly take a variable of that datatype as its first parameter (Python in particular makes this more apparent by turning the invisible first parameter into a visible parameter named self). I have my own ideas about what programming should be instead of OOP, but its going to be a few more years before I'm ready to talk about it publicly, so I'll just leave this as a little teaser: both OOP and functional programming over complicate the ideas of programming and turn the entire field into a giant mess that takes years and decades to learn. I think they have missed the mark, and that there are other ways to fix the problems that procedural programming has. Until then though, it's probably still best to use OOP, but in the meantime, make sure you understand what a class actually is.


Traverse these trees diligently: https://roadmap.sh/frontend https://roadmap.sh/backend

Every year learn a programming language that is a whole new paradigm. Stack-based FORTH, a Lisp dialect like Clojure, x86, etc. Do this while getting as strong as you can in your main language(s). Write your own simple scripting language that solves a problem you actually run into. Maybe something like a tool that scaffolds code for you.

If you enjoyed that, take it even further. Get familiar with some more advanced data structures and patterns. FSA, abstract syntax trees, bloom filters, compressed bit vectors. Build an API, a framework and an engine to get deep into the world of being a code steward. Learn how to write and document code that goes into central infrastructure.

While you're doing this, get something like FB reader and pay $7 for premium. Have it read the SWEBOK out loud to you. Get deep into understanding software design, construction methods, testing, maintenance and all of the moving parts in the E2E process.

Note that above isn't necessarily good advice, just like all of the advice in this thread. "having fun it" or "doing hallucinogens" or "listen to some online courses" won't accomplish your goal. If some of the things above resonate with you, go for it. Mostly, just fuel your curiosity without burning yourself out.

Look at what more successful people are doing, deconstruct how you could do that yourself, and keep doing it until "more successful people" are few and far in-between.


1. Learn computer science to at least a graduate level. It’s ok if your college major is something else.

2. Program and learn more about programming constantly.

3. Working for and with idiots is not a useless experience, but it’s commonplace and repetitive. Move on when you stop learning.

4. Program and learn some more. Keep at it for 30+ years.


[flagged]


As the person who taught OP to code, I can assure you your comment is misplaced and frankly uncalled for. Try being encouraging, rather than arrogant and deflating.

"Web development is easy". Not when it involves working with other people. People are hard, code is easy.

"His accomplishments don't stand out as impressive." How can you know this, let alone conclude this?

He memorized 500 digits of pi in a week and wrote it out on a whiteboard in front of an audience.

He built amazing command line tools and importers to automate migrating and testing large eCommerce systems.

He built a fully functional piano in the browser from scratch, in a few days, before I'd taught him JavaScript.

He built a custom 3D rendering engine from scratch shortly after learning JavaScript, allowing one to simply export any model from Blender and render it in the browser.

He built incredibly complex mapping, routing, and geometry algorithms for delivery systems within a year of learning HTML and before turning 18.

Lastly, one of the most humble people I know.

Please don't continue to detract other new developers from the profession because they run into people like you. Especially when they open up and ask for honest help, wisdom, and feedback.


Literally none of that stands out. These are basic programs whose core anyone can find on stackoverflow. The reason most people don't have these on their github is because they move on to harder, long-term accomplishments like college and internships.

The only factor that stands out is the age he achieved this in but then again I was making C++ aimbots for counter strike at 14.


Building a piano for web browser, 3D rendering engine, mapping, routing and geometry algorithms stand out pretty well IMO.

I have never really seen the core of a piano or 3D rendering engine on stackoverflow. Even if there is one I am sure that is not how people learn writing a piano software or 3D rendering engine for themselves.

Funny you say college and internships as examples of long-term accomplishments. I find getting your hands dirty and building things (like piano or 3D rendering engine) as long term accomplishments because what you create, you understand and what you understand, truly understand, is going to stick in your brain for years much longer than what you learn in college.


Oh I'm sorry, did he rewrite the firmware and algorithms of a Roland synthesizer? Did he fork Blender and optimise the render pipeline?

No, he made side projects that people don't use or want. Which is great, we all did it in college.

And above all none of us posted infantile daydreams online and have our TA cope for us at the backlash.

Good day to you.


I get it that OP's projects do not stand out in your eyes. They do stand out in my eyes! They are impressive to me! I don't have to find something impressive by your standards just as you don't have to find something impressive by my standards. Good day to you too!


I would argue that if you measure it by everyone standards on average, the OPs achievements aren't a huge deal. Nothing even close to "one of the greatest programmers". This is the standard that truly matters.

I mean, sure you can adjust your own standards to help you prove your point... but nobody really cares for arguments of that nature as literally any piece of reality becomes malleable through force of your own opinion. I could say, "In my opinion, everything you said is completely wrong.." and it would be a pointless statement.


He used tutorials, obviously. There's tons of tutorials on the internet. Especially ones that will teach you to write a 3D engine in javascript. It's not that impressive to follow a tutorial.


Rather than the OP coming off as arrogant. This thread is instead making you look pretty arrogant. Having a goal is not arrogance. Tearing someone down for having that goal certainly does come off as arrogant though.


I'm coming off as highly negative. I completely admit that. But arrogant? I'm not arrogant.

In order for me to be arrogant, I would have to advertise and over blow my own abilities. Which I haven't. You should look up the word before you use it incorrectly.

Also, you have to realize OP is not a kid. If a young kid was saying this stuff, I'd be encouraging. But he's basically an adult. And I'm not tearing him down, I'm telling him he'll turn out average.

Additionally the OP is bragging about his accomplishments. It's literally the definition of arrogant.


How people perceive you is not dictated by a precise definition of the word. You seem to be aware that people are perceiving you in a particular way but rather than adjusting your communication you are trying to argue with them about their interpretation instead. I don't know you and it's perfectly possible that if we were having beers I would think you were a perfectly reasonable person. But be aware that in text this:

    You should look up the word before you use it incorrectly.
comes across as arrogant whether you intended it to or not. And continuing to use your current style of phrasing is gong to continue to make people think you are arrogant regardless of whether you actually are or not.


>How people perceive you is not dictated by a precise definition of the word.

So? Is my objective centered around perception? No.

>You seem to be aware that people are perceiving you in a particular way but rather than adjusting your communication you are trying to argue with them about their interpretation instead.

No, I'm correcting a person about wrong usage of a particular vocabulary word.

>... comes across as arrogant

I think that's a reasonable response given that someone called me arrogant. You think you can go around calling someone arrogant and not have a little retaliation in the response? Are you yourself not aware of your own words? I'm perfectly aware of the subtleties my response entails.


I was trying to help you understand why you were getting the responses you were getting. Since it appears that you intend for this perception to exist I guess we are done.


I understand why, and I expected it. There's a greater lesson to be learned from your end, that perception != everything. That truth is hidden in the messages poorly received.

You would do well to learn that rather then attempting to always teach other people obvious things, sometimes you yourself is the person that is acting immature and needs to learn something less obvious. Think about what I said to this person and whether the OP will end up as one of the greatest programmers or just average. In probability, who told him the truth.

Are you even aware that attempting to teach someone something by calling them "arrogant" will lead to nothing? That's another lesson for you. To teach is not to insult, but to respect another persons opinion while providing your own. I'm not respecting your opinion, so my intention isn't to teach you anything. It's to dominate... this is your own intention as well... I mean with phrases like... "we're done here"... let's be real; what's going on in this thread is an argument, you weren't trying to teach my anything.


How do you know what he used? Have you met him or talked to him?

So only inventing a 3D engine from scratch from your own brain is impressive? Learning from tutorials, books, papers, etc. is not?

I don't know how you learn a new skill but I learn from tutorials, books, papers, lectures, videos. It is impressive to me as long as someone can learn, apply and do something creative.

What is absolutely unimpressive is dissing on others' projects and accomplishments.


Actually, no. I never used a tutorial for ANY of those projects. Please don't assume things like that.


I find it highly unlikely. Either a tutorial was used to build something before or lessons were learned from reading some sort of instructional material.


The only materials I used were JavaScript documentation and math I learned in 8th grade (I was a few grades ahead). I didn't need tutorials. Sometimes I literally dreamed about those projects at night. Occasionally I would see solutions to the problem in the dream, and implement it in the morning.

You are plagued with doubt.


Hi Owen - I'm a moderator here and would first like to say that you are welcome on Hacker News and I hope you find lots of interesting things here for years to come.

Here's my suggestion—I don't know if it will help you become one of the best programmers ever [1] but it will be helpful in general if you can pull it off: when encountering hostile/critical/uncharitable comments on the internet - don't respond. It may not look like it, but the way the internet game really works is that the first person who stops reacting wins.

It's not easy, because these comments sting. The trick is to learn to feel the sting and absorb it, i.e. let it run through your system without responding until the bad feeling goes away and you have no more need to respond. At that point you are free. If you think of it as a kind of training challenge, it might get easier.

By the way, a lot of HN users used to be precocious kids whose self-worth got bound up with how good they were at being smart-while-young, and also with being the "smartest kid" in their world. That's my own story, and it's the story of a lot of people here.

When someone like yourself comes along, who's obviously smart and still very young, it can trigger insecurities in people like us, even decades later. The solution is to realize that it's (a) not your problem, and (b) not interesting—and then (c) to focus on engaging with people who actually have something interesting to teach you. Fortunately there are a lot of those here, too!

[1] It might, though, because it has to do with focus.


What a mean-spirited comment! The OP's accomplishments are impressive to me.

The OP said - "I want to be one of the best programmers in the world, but I have a long way to go." This is humble enough for me. They may be misguided that there is such a thing as "the best programmers" but they realize that they have a long way to go to reach the state they would be happy with is humble enough for me.

Your comment, sir, on the other hand comes off as arrogant and bitter!


> Additionally the people who truly are rockstars don't have your mentality. They're very humble.

Not necessarily at 18! I think we can cut the OP some slack.

Also, please don't be a jerk on HN. We're trying for a different sort of forum here.

https://news.ycombinator.com/newsguidelines.html


I can cut him slack. But I'm not being a jerk that's taking it too far. A lot of what I said is genuine advice... it's negative yes... but it's real.


I gather that you didn't intend to be a jerk, but I'm afraid you crossed over that line repeatedly, and by a lot.

It's important to remember that the intent you have in your head and the way your comments come across to other people can differ by orders of magnitude. (I don't mean "you" personally—this applies to all of us.)


What is that line? I don't think it's good to define it as "how it comes across." The best advice is usually negative and negative advice always is misinterpreted. If my intention isn't to be a jerk and I never explicitly acted out of bad faith or said anything that is explicitly is bad behavior, then the rules should be based off of that, and not a general interpretation.

The truth, isn't always well received, history shows this with big examples like galileo. So do you censor and moderate "interpretation" or "truth" because essentially what I see here is moderation of the truth in the name of a negative interpretation.

This is the same type of thing influencing free speech politics and gender pronouns. Because one small group decided it's offensive to call a transgender person by the wrong pronoun, you can now get fired for mistakenly referencing someone by the wrong gender. HN would do better if it allowed room here rather then just purely going off of interpretation. Think about it. Let the downvotes moderate for opinionated stuff, I think it's excessive for you to actually bring the hammer down. Some contrarian advice is good for this young man and the community in general because it lives in a sea excessively positive advice.

I got a massive amount of downvotes for my responses and that's ok. What wasn't ok for me is your warning, because I know the next time you'll actually shadow ban, and that to me is crossing the line.


then the rules should be based off of that, and not a general interpretation.

Social rules like that are intended to protect the community from jerky behaviour not spare the feelings of the individual who's strayed into jerkdom. They wouldn't practically work the other way - you're a jerk if enough people think you are.


I beg to differ. Was Galileo a Jerk? He was excommunicated simply because he simply disagreed with the majority and stated the earth circled around the sun and many many people thought he was a jerk because of that.

If HN excommunicates people simply because a majority disagrees with them, then this place is not a good forum for science and intelligent discussion.

When men have realized that time has upset many fighting faiths... We've been wrong before, and we're likely going to be wrong again. That the ultimate good desired is better reached by free trade and ideas. In light of that knowledge that we may be wrong, the best course of action, the safest course of action, is to go ahead and listen to the ideas on the other side. The best test of truth is the power of the thought to get itself accepted in the competition of the market. Those are the ideas that we can safely act upon. Every year, if not every day, we have to wager our salvation upon some prophecy based on imperfect knowledge. That, at any rate, is the idea behind free speech. It is an experiment, as all life is an experiment.

So unless I explicitly threaten or insult someone. Let it be. Cast your vote. But to censor and threaten a ban? That's wrong. That's exactly what's going on here. Read carefully what I wrote, there are no threats, there are no insults, there are no explicit attacks; just my opinion. The only line crossed here is the threat of a ban; we all know Dang operates first on a warning then he bans people.


Galileo was famously a jerk but it's not really relevant. You are not Galileo limning new celestial truths and being asked nicely not to be a jerk on a public forum is not like being excommunicated. Just don't be a jerk on this forum, it's not that complicated.


>Galileo was famously a jerk but it's not really relevant.

I think it is relevant. It shows that Jerks have important information that shouldn't be censored. The difference here is, I'm not being a jerk. People just like to think that way when they're told they're wrong. Nobody likes being told that they're utterly wrong.

>You are not Galileo limning new celestial truths

Yeah I'm declaring an even simpler truth. That Owen is unlikely to become one of the greatest programmers in the world. It's quite unlikely and even for a minor statement like that I'm getting a warning.

>it's not that complicated.

Isn't this mean? I mean are you implying that this concept is so complicated that I can't comprehend it? I obviously have enough intelligence to understand your point, so by saying this you're insulting me. Now you're a jerk. That's my interpretation.

We both know I'm trying to push for less restrictive rules around speech. It's better to address that point rather then endlessly repeating "don't be a jerk.". And, honestly, I wasn't really even a jerk.

>being asked nicely not to be a jerk on a public forum is not like being excommunicated

Dang issues a warning first, then shadow bans next, that's how he operates. He has records and I just got marked. That's what happened here. It wasn't just "asking nicely."


Jerks have important information that shouldn't be censored.

The crushing majority of jerks are simply jerks.

Yeah I'm declaring an even simpler truth. That Owen is unlikely

No, that's simply being a jerk.

Isn't this mean?

no

Dang issues a warning first, then shadow bans next, that's how he operates.

It's not 'how he operates' that I've seen.


>It's not 'how he operates' that I've seen.

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

See you're utterly and completely wrong. What may make you laugh is he basically teamed up with you, saying "it's not that hard". It's subtle jerkdom going on here from the both of you. But I mean who the hell cares?

Dang didn't lie or do anything wrong. He's just subtly acting like an asshole, like what you did, which is arguably worse then what I did.... Either way none of that stuff is a bannable offense imo. But according to Dang, if it happens enough times... it is.... just as long as you're not on his team.


>The crushing majority of jerks are simply jerks.

You notice how much longer my post is then yours? I'm trying to engage in discussion. But you're dismissing it and presenting baseless shit... in essence insisting that I'm a jerk on every point. You're basically acting like a jerk here.

It's unequivocal. At least in this thread, between you and me, you're the one acting like an ass... not me.

>It's not 'how he operates' that I've seen.

then you're blind, or a liar. He does this 100%.

>No, that's simply being a jerk.

no. It's the truth.


We ban people if they continue to break the site guidelines after being warned. If you wanted to use HN as intended, we wouldn't have to keep banning you. It's not that hard.

https://news.ycombinator.com/newsguidelines.html


No need to repeat what I already know. Please take the time to read what I wrote and respond to that, I made a genuine request. Also keep "banning" me? When have you banned me?


You can't define these lines in some formal way, so even using a word like "define" is already a step away from useful. From my perspective, you were bullying a kid (yes, 18 years old is a young adult, but also still a kid—this is obviously still someone who deserves consideration based on his age). You weren't just bullying a kid—you were haranguing to the point of harassment, refusing to let go, and pretending to be helpful when there wasn't a hint of empathy in any of your language. The word asshole would be more appropriate to describe this than the word jerk, but I decided to tone it down in my reply to you.

It's perfectly age-appropriate for an 18 year old to feel ambitions like "be the best programmer in the world". This is healthy adolescent grandiosity—I felt similar things at that age, just like a lot of people. The proper way to react to that is to reflect back the health in it, share in his hope and excitement, and give some useful pointers about how to develop in his desired direction. To take it as some sort of statistical claim and well-actually him about how low his odds are and how delusional he is, all the while kicking down and belittling what he has achieved so far, is definitely asshole behavior. Would you tell a 12-year-old he'll never be a professional athlete, or a 5-year-old he'll never be a fireman? Statistically the odds are negligible, right?

The fact that you got triggered by an 18-year-old's ambition into trying to knock him down that hard made your comments obviously drenched with your own personal feelings, even though you expressed those feelings in an indirect way that pretended to be objective.

Perhaps you have some beliefs about how being brutally negative to other people is the best way to "help" them, but an open internet forum like HN is precisely the wrong place to do that—there's far too much room for misunderstanding which can easily turn into cruelty. If you're not concerned about "advice" turning into cruelty, then you don't have the other person's best interests at heart.

Transgender/pronoun/$culture-war issues have zero to do with this. When you bring that up in this context, it's clear that you were at least partly motivated by an extraneous agenda. That again indicates not having the other person's interests at heart.

Comparing yourself to Galileo is...rather a tall bar to clear, at least as grandiose as "becoming one of the best programmers". It's also beside the point. This is an internet forum. There are no Galileos here—the genre doesn't allow for it. What the genre does invite is a lot of supercilious comments that go way overboard with their rhetoric. This is not battling-for-truth or whatever; it's garden-variety internet fodder, nasty and tedious.


I highly disagree with you.

>"To take it as some sort of statistical claim and well-actually him about how low his odds are and how delusional he is, all the while kicking down and belittling what he has achieved so far, is definitely asshole behavior."

Whether or not this is ass hole behavior or not is a matter of opinion. What I'm sure we can both agree on is that what I said is the truth. And what's left is an argument on opinion, no different then a debate on whether or not you should tell a child if santa clause is real or not... but you're turning this difference of opinion into a bannable offense.

I am not a bully. Let's be clear, and I did Not harass. The worst thing I told him is that he's average, and his feelings were hurt.

> Would you tell a 12-year-old he'll never be a professional athlete, or a 5-year-old he'll never be a fireman? Statistically the odds are negligible, right?

Oh wow, this statement shows how ineffective my earlier santa clause example was in swaying your opinion. Let me put it this way... In US culture, people lie to kids. They talk about fantasies like the tooth fairy, santa clause and unrealistic occupations. It's not necessarily a bad thing, but it's not provably a good thing either because there are tons of other cultures that do the exact opposite. There's no clear answer to this topic. What gets me here is that you're inserting your own opinion as definitive and enforcing your biases onto the forum.

Honestly, I wouldn't tell a 12 year old those things; but that's just a personal habit and not a decision I make based off of rationality. Thus, I wouldn't think it's at all bad to tell the 12 year old the cold hard truth either. An 18 year old on the other hand is a different story.

>You can't define these lines in some formal way, so even using a word like "define" is already a step away from useful.

US law functions on exact definitions. There is really good reasoning for this, but there is good reasoning for your viewpoint as well. What isn't helpful in my mind is a one sided opinion on this topic given that it's so obviously flying right in the face of hundreds existing systems (aka governments) that effectively uses exact definitions to govern people. When I ask for an exact definition it IS useful simply because such systems are literally "used" everywhere in systems of government.

>The fact that you got triggered by an 18-year-old's ambition

Ok, this is just your interpretation of it. I was never triggered by that. If anything what triggered me a little is how people interpreted my advice as "being an asshole"

>Perhaps you have some beliefs about how being brutally negative to other people is the best way to "help" them, but an open internet forum like HN is precisely the wrong place to do that—there's far too much room for misunderstanding which can easily turn into cruelty. If you're not concerned about "advice" turning into cruelty, then you don't have the other person's best interests at heart.

I don't have beliefs about being brutally negative. I have beliefs about being brutally Honest. Huge difference. Positive and honest advice is readily given until the only thing left to give is often the negative and honesty advice. And since so little of this advice is ever given out, it usually has the biggest impact because the person is often hearing it for the first time.

Imagine this scenario: If an 18 year old wanted to become the best celebrity actor in the world and wanted to give up school to go to LA to pursue that pipe dream... and I told him to not be idiotic and go back to school... is that bad or good? I feel this isomorphic scenario should help you empathize the other side of this coin EVEN if you still think the 18 y/o should be encouraged to pursue acting.

And let me re-emphasize another point. I'm not trying to change your mind. That's fundamentally impossible. What I am trying to convince you of is that you interjected your bias on a thing that has no clear conclusion. The rules as you acted on it, caused you to cross the line from moderation to censorship.

>Comparing yourself to Galileo is...rather a tall bar to clear, at least as grandiose

Let's be clear. I'm no Galileo. Galileo was an example. Not a comparison. He's an example to illustrate how biased we all are. ...How something so blindingly obvious can be mistaken for evil. Is not how grandiose and unrealistic Owen's goal is so blindingly obvious? I see a parallel here.

Either way... Given the number of people you banned Dang, I'm sure you banned someone comparable in stature to Galileo (actually... I personal know some of these people you banned); but I think part of what your saying here is that you don't give a shit and that HN isn't about that.

>This is an internet forum. There are no Galileos here—the genre doesn't allow for it.

And you're the one that fully defines what HN is? You define the Genre? I think it's push and pull. The users define it, and if they don't like your attempted redefinition, they'll leave. I'm sure you view HN as a nursery for aspiring dreamers and positive vibes but there's other vantage points as well. I view HN as a site for intellectual conversation. And for such conversations to remain intelligent; the content of these convos can't fully dictated by always being "nice" as the objective truth often offends unintentionally.

>Transgender/pronoun/$culture-war issues have zero to do with this. When you bring that up in this context, it's clear that you were at least partly motivated by an extraneous agenda. That again indicates not having the other person's interests at heart.

It's just an example, it's not evidence at all for an extraneous agenda. The purpose of the example is to try to find something you identify with. If you're woke then this failed. If you think it's a little crazy how a muscualr transgender swimmer is dominating female swimming.... well then I think you can see a parallel: how feelings and emotions take precedence over an objective and ugly truth. Either way, the point of analogies is to use comparable scenarios in hopes that it will move the needle forward in understanding. I think this failed.

>This is not battling-for-truth or whatever; it's garden-variety internet fodder, nasty and tedious.

Let me emphasize something, I'm not fighting for "justice" or "truth" anything like that. I use that "flowery" language to support a simple objective:

I simply want to come to a forum with intelligent people and state an opinion without worrying about being banned for how contrarian or different that opinion is. That's literally it.

> refusing to let go,

I can see how this can appear as an attack. I truly believe Owen was being dishonest about the extent of his usage of educational materials. I think you're misinterpreting it. I stick by my points just as much as you'll stick with your beliefs about this very topic. It's a natural thing, you won't be letting go either.


Why would you take the time to write this?


Sometimes an honest and humbling feedback early on can be very helpful even if it sounds cruel. The aspiring world-class rockstar programmer may be in for a bad surprise if he just gets feedback like: "learn, learn, learn, practice, ... and success will come" and then it turns out all differently.

Or maybe it doesn't make a difference at all because people have to experience things themselves.


There is nothing honest and humbling about this feedback. It deliberately makes the poorest interpretation of the OP's post and offers a poor feedback. It speaks more about the commenter's mindset than the OP's earnest request to better themselves in the programming journey.

Make the strongest possible interpretation of the OP's post and you would end up commenting something insightful and kind, not something cruel under the false pretext of honesty and humility.


[flagged]


> Why do you place "insightful and kind" diametrically opposed with "false" in that sentence?

I do not! You seem to be making too many assumptions in your responses both about the OP and the supporters of OP. No wonder you can't see how arrogant you are coming off in your replies. Sigh!

> I think we're done here.

I agree.




Consider applying for YC's Winter 2026 batch! Applications are open till Nov 10

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: