
Teach Yourself Programming in Ten Years (1998) - saranshk
https://norvig.com/21-days.html
======
kartan
What happens after 10 years?

I have been a software developer for more than 25 years. It is getting boring.
Any "new" problem is just the same old problem with a new layer of
abstraction. Look at this new language/framework that is so great! You could
do all that with the previous language if you cared enough to learn it.

Anyone has experienced the same frustration?

I now use my spare time to learn to draw. I found it way more exciting and I
see a challenge that I do not find in coding anymore.

~~~
jaredklewis
But software has changed drastically in 25 years.

Rise of the internet, totally new app platforms (browsers), x64, ARM,
smartphones, open gl, neural networks, development of increasingly
sophisticated timing and side channel attacks, and on and on. I feel like you
could pick any sub field of programming and find any number of revolutions in
the last 25 years.

You say it’s all just new abstractions, but don’t you feel they bring some
benefits and allow for new challenges?

Take computer graphics for example. There is so much more abstraction than
there was 25 years ago, but go pick up any modern AAA video game and you can
tell there is also so much more depth than we used to have. No?

But I haven’t been programming 25 years, so maybe my opinions will change.

~~~
kartan
> smartphones

I will take this as an example. I was developing in 80386 machines. When
smartphones appeared and people said that "this is different because you have
limited resources compared with a desktop machine", I just thought "it is new
for you, not for me". I said nothing because they are right. It was new to
them. I was happy to share an environment with people excited with "a new
challenge".

> there is also so much more depth than we used to have. No?

Most intelligent behaviour in games is based on agents and finite state
machines. With more states than ever, with higher polygon count, but it is the
same that you had 20 years ago. The results are way more impressive because
the hardware is faster and there is way more memory. But, the algorithms are
the same.

Look for A* search algorithm or Dijkstra's algorithm. Been there for a while.
Graph theory is still a building block for most things that look intelligent.

~~~
kragen
Dude, you can strap your smartphone to a quadcopter and you have a flying
20-megapixel 60 fps camera with a multi-megabit internet connection. You can
do real-time control of the flight. That's something you couldn't do with a
386, not unless you had a Predator to put it in.

And there's a whole category of new challenges not because of _limited_
resources but because of _abundant_ resources. Your photogrammetry drone can
generate 72 gigapixels per minute of photogrammetry data. You have 200
teraflops on your desktop. How good of a 3-D model can you make? With how
little human effort?

How about making things simpler and more flexible? Old GUI toolkits were
designed around the need for 2-D raster operations to be hardware-accelerated.
Are there simpler designs possible now that that's no longer a constraint? I'm
exploring this in BubbleOS.

Sure, lots of game AIs are finite state machines. So in lots of games there's
no challenge unless the NPCs gang up on you. But AlphaGo is also a game AI.
It's a bit more sophisticated than an A* search! What would a game look like
where you worked on a team with such AIs?

Smartphones also have multitouch. Yet >90% of people's interaction on them is
using an on-screen keyboard, one-finger scrolling of lists, and tapping on
prepackaged options. Can we do better? Are there UI paradigms that multitouch
enables that would allow more creativity, despite the horrifying levels of lag
in existing systems?

Security is a big problem, and most of the world is wasting their time on
approaches like virus-scanners that can't work even in theory. But then
there's seL4. What would a personal computer based on seL4 look like? How
could we translate the guarantees it provides into practically useful power in
the hands of everyday people?

Can you do voice recognition on every FM and AM radio channel in your area at
once? What's the minimum hardware you'd need to do it?

There's _lots_ of interesting challenges out there.

------
dang
2018:
[https://news.ycombinator.com/item?id=16574248](https://news.ycombinator.com/item?id=16574248)

2015:
[https://news.ycombinator.com/item?id=9395284](https://news.ycombinator.com/item?id=9395284)

2013:
[https://news.ycombinator.com/item?id=5519158](https://news.ycombinator.com/item?id=5519158)

2012:
[https://news.ycombinator.com/item?id=3439772](https://news.ycombinator.com/item?id=3439772)

2010:
[https://news.ycombinator.com/item?id=1060176](https://news.ycombinator.com/item?id=1060176)

2008:
[https://news.ycombinator.com/item?id=191235](https://news.ycombinator.com/item?id=191235)

2007:
[https://news.ycombinator.com/item?id=43243](https://news.ycombinator.com/item?id=43243)

~~~
dougmwne
It's quite interesting to see the evolution of discourse over time on HN. I
had been assuming that HN hit its peak in 2007 and it was all downhill after
that, but actually the quality of comments seems to increase year by year.

~~~
jplayer01
> I had been assuming that HN hit its peak in 2007 and it was all downhill
> after that

I'm not sure why anybody thinks this way. HN is still one of the best places I
know to see rational discussion of interesting topics, and a plethora of
resources on all kinds of things. If I want to learn about something
programming related, one of the first places I go to is HN. There's such a
diversity of opinions and such a wide base of knowledge to draw on, it's
incredible. Add to that, there's nearly no trolling or flame wars, no off-
topic memes, no effortless jokes or puns (okay, _sometimes_ ). People largely
stick to the HN guidelines and if they don't, they're usually called on it by
others. It's not just great moderation, it's a certain amount of self-
moderation that you don't see in most other communities (that I know of). It's
_civilized_ , in a way that Reddit, YouTube, Twitter, etc. simply aren't and
can't be.

~~~
debaserab2
It's a common cognitive bias to look at the past with higher regard than the
future:
[https://en.wikipedia.org/wiki/Declinism](https://en.wikipedia.org/wiki/Declinism)

I totally agree with you - compared to other online forums it's surprised me
how well HN has kept things civil while growing tremendously. The comment
section on HN often have the actual makers and inventors of
technology/research and sometimes are better content than the actual links
being posted.

~~~
jplayer01
> actual makers and inventors of technology/research and sometimes are better
> content than the actual links being posted

Yes! I'm humbled every day by the people on HN, and it's one of the things
that keeps me coming back.

------
kjgkjhfkjf
"Get interested in programming, and do some because it is fun. Make sure that
it keeps being enough fun so that you will be willing to put in your ten
years/10,000 hours."

This is a great definition of talent.

~~~
empath75
A friend of mine is a music producer and became an ‘overnight success’ when he
handed a song to a DJ at an LA club and got signed and almost instantly was
touring the world. I got to hang out after gigs while all these other big name
djs were calling him a genius. The thing is he had been a bedroom producer and
small time DJ for almost 15 years, though since he was 15 years old. I heard
his songs even 5 years before he got signed and they were good, but not even
close to the level he is now. He wasn’t a genius. It was a lot of hard work
and persistence.

~~~
lonelappde
What makes you think that genius exists and it is actually different from what
your friend did/had?

~~~
empath75
I don’t think genius exists.

------
Kaveren
You don't need to spend 10 years to become a fantastic programmer. Many people
are clueless when it comes to how to learn things (this is why the question
"how do I learn X" is so popular even when it has been answered many times
before).

Quickly identify the best resources to begin with for whatever topic, which is
very easy to do, and work through them. This will get you much more value per
time spent than opting for the easier "get rich quick option". For the C++
example, this is the difference between the learning C++ in 24 hours book, and
The C++ Programming Language.

I think someone dedicated and mildly intelligent could become very good at
programming within two to three years, and outdo the vast majority of
programmers with 10+ years of experience.

It's not a bad thing to want to go fast, which is why I disagree with the
premise of the article. Just make sure you go as fast as possible _without_
sacrificing quality of learning.

------
vivekd
Amature hobby programmer here . . . yeah Im not going to do what the author
suggested. I have no plans on working in the field. I dont care about
functional programming or abstraction. I just see a task or project I think
will be cool, google what language or framework best fits my goal and learn
just enough to do that while using stacks and tutorials for those frequent
times when I get stuck. Yes its slow but I dont care Im not on a deadline. I
don't want to learn programming, I just recognize that it lets me do neat
things and want to lean just enough to do whatever neat thing I have in mind.
Its not about learning to program for me, and I assume for people like me. Its
about wanting to accomplish a task and seeing programming as a necessay setp
in accomplishing that task.

~~~
dceddia
I’m curious what kinds of tasks and projects do you usually find yourself
working on. Are they short term, long term, big/small, ...?

~~~
vivekd
I built my small biz website using django and a previous one ib php. Currently
Im rebuilding in amp. I built a python webscraper to get names of competitors
and another python program that calulated serverance pay entitlement.

Short term small projects but it might be interesting to try a long term one.

------
neilv
I don't understand. Nowhere in there did I see anything about the job
interviews/hazing of his own company, and companies that mimic it.

(Which decidedly don't test for that 10 years of experience, but rather test
for who spent their time reading the coding interview prep books, drilling for
the 'coding' test questions, formulating acceptable personal answers for what
the books coached on behavioral questions, and wearing kneepads.)

------
tempodox
Ten years sounds about right. The bootcamp fad seems to have faded but anyone
thinking about joining one should take this article to heart and think twice
about it. Even learning programming in high school / university is not much
more than groundwork.

------
sixhobbits
This isn't really from 1998 is it? The references (golang, gladwell) are
definitely more modern - unless he did a substantial revision.

~~~
jmkni
The Amazon link searches for books written after the year 2000, and the
copyright at the bottom is 2001-2014.

Also, Outliers came out in 2008.

------
swiley
Teaching yourself to program as a self fulfilling exercise isn't a bad idea.
(remember that this sort of programming is generally more isolating than many
other hobbies.)

If you're trying to get hired as programmer then don't bother, literally the
only thing most companies (at least in the US) care about is whether or not
you have a degree (it doesn't matter what the line employees think, HR will
step in and stop things.)

~~~
LyndsySimon
Re: a degree - this is not my experience. I used to feel that way, but around
2013 my perspective changed. I don’t have a degree; I went to college after
high school and failed miserably my first semester due to a plethora of
personal issues, chief among them being undiagnosed chronic depression. I was
pursuing a Bachelor’s through WGU from 2012-2013 when I jumped ship from an
establish “enterprise” company to a startup, and from that point forward I
don’t feel like anyone really cares whether I have a degree or not.

I see startups as my niche. My sweet spot for potential employers is a startup
that has been in business for 1-3 years and is either profitable or obviously
well along the path there. I like to jump into existing codebases with
technical debt and spend my time working toward making them more flexible. I
like to understand new business processes and use that understanding to avoid
a project getting painted into a corner by the logic crystallizing into an
immutable black box that everyone is afraid to touch because it’s essential
and the people who originally wrote it are no longer on the team.

~~~
swiley
I’ve finished a BSCS sans one class and have had internships and knew people
at a startup that was looking for people (and having a hard time finding them)
with exactly the skill set I had. They still refused to consider me. My
friends there said it was because I didn’t have a degree. There are exceptions
to this but the way companies treat you with and without a degree are totally
different, most of them really don’t care about anything else.

