HomeVideos

Programming Skills that AIs Cannot Have & How You Learn Them

Now Playing

Programming Skills that AIs Cannot Have & How You Learn Them

Transcript

510 segments

0:00

If you're a software developer, you know that

0:01

things are kind of tenuous for us right now.

0:04

The prevailing wisdom seems to be that software

0:05

development as a career is going extinct,

0:08

although I think that's largely based on a mis-

0:10

misunderstanding, and I'll get more into that

0:11

later.

0:12

So as I write this, the OpenAI's O3 model was

0:15

just announced, although we can't look

0:17

at it yet.

0:19

And as always, there have been a ton of claims

0:21

made about how much better it is at programming

0:23

and tasks than any model before.

0:24

I'm skeptical that it's really going to turn

0:26

out to be that much better, but we should

0:28

find out sometime in the next few months.

0:31

2025 looks like it's going to be a wild year

0:34

for us. But no matter how good O3 might be,

0:38

there are things that experts believe that this

0:40

generation of AI's just cannot be capable

0:42

of, both in general and with respect to

0:44

software development in particular.

0:46

Today, I want to talk to you about what

0:48

developers can learn to do that these AI's can't

0:51

and why and how you can go about learning it.

0:53

So to get this out of the way, the limitations

0:55

I'm talking about are based largely on the

0:56

work of Simon Prince, the author of this book,

0:59

Understanding Deep Learning, link below.

1:01

He did an interview that I've recommended

1:03

before on the Machine Learning Street podcast:

1:06

"It really has no way to learn anything new,

1:09

other than its context vector, which it

1:12

forgets every session. And it has no way

1:14

to even remember that.

1:16

So missing all kinds of parts of the puzzle, I

1:18

don't see how you could look at that and

1:20

think of a super intelligence is around the

1:23

corner."

1:23

Although really the whole interview is worth

1:26

watching. And the book has been instrumental in informing

1:28

my understanding of our current circumstances,

1:30

although it's an $80 500 page textbook with

1:34

lots of math and a 49 page bibliography.

1:37

So I wouldn't necessarily describe it as

1:39

approachable, or recommended for everyone.

1:42

In the unlikely event that he's wrong, and that

1:45

I'm wrong, and then open AI's O3 model

1:47

is actually super intelligent, then this

1:49

Chanel is garbage, YouTube will soon be replaced

1:51

by The

1:51

Matrix.

1:52

No job is safe, human life is irrelevant, and

1:54

all we can do is bow our heads and pray

1:55

to Roko's Basilisk that it might not torture

1:58

us for all eternity.

1:59

More info on The Basilisk below, although you

2:01

might not want to hear about it.

2:02

What could possibly go wron----

2:11

This is the Internet of Bugs.

2:12

My name is Carl, and I've been a software

2:14

professional for more than 35 years now.

2:16

I believe that the Internet has way, way too

2:18

many bugs already, and that AI is in the

2:20

process of making it much, much worse, and I'm

2:23

trying to reduce that as much as I can.

2:26

So today's AIs have limitations.

2:28

Today, I'm just discussing the serious

2:30

constraints they have when it comes to actually

2:33

writing

2:33

code.

2:34

So, One: they can only learn the kinds of things

2:37

that are in their training data.

2:39

Two: they are frozen in time.

2:44

They can sort through an enormous amount of

2:45

information in a short order, but they

2:47

effectively

2:47

have no ability to form long-term memories

2:50

without expensive retraining.

2:52

If you've seen the movie Memento, they're

2:54

basically that guy.

2:55

They can read a previous conversation as part

2:57

of a prompt at the beginning of a new question,

2:59

but that's as close as they can get to

3:01

improving. How much would you want the Memento guy working

3:04

on a software that you depend on?

3:05

Three, they are severely limited in the amount

3:08

and breadth of context that they can

3:10

work with.

3:11

There's a lot of work being done to try to

3:12

increase this, but there are a number of

3:14

significant hurdles, including what's called

3:16

the "lost in the middle" problem, more on

3:18

that below.

3:19

But even if all the latest mitigation work were

3:22

magically succeed, it's nowhere near

3:24

the amount of context that you or I are capable

3:27

of understanding as humans.

3:29

So the things that AIs can't learn are the

3:31

things that require a lot of context and that

3:33

don't appear in documents scraped from books

3:35

and around the internet.

3:36

In other words, the things that can't be

3:38

learned from classes and books, but only can

3:41

be learned from experience.

3:42

The good news is, you can learn such things.

3:45

The bad news is, it's not really a quick

3:47

process.

3:48

But from where I sit, software developers have

3:50

two choices, either leaning to learning

3:52

the things that this generation of AIs can't

3:55

get good at, or watch as the AIs chip away

3:57

at your job's tasks until there's nothing left

3:59

for you to do.

4:00

Well, three choices, if you count "Pray to the

4:02

Basilisk", but I don't.

4:04

Here's the thing anout software bugs: with a rare

4:06

exceptions caused by short-term thinking.

4:07

usually for cost-cutting measures by some MBA

4:10

or something,

4:11

Non-trivial bugs on the internet aren't

4:13

intentional and the vast majority of them aren't

4:15

even found until after they've been released.

4:18

Those bugs aren't found by the programmers.

4:20

They're found by people using the software,

4:22

often in ways and in contexts that weren't

4:24

considered while the code was being written in

4:26

the first place.

4:27

This is the crux of the matter.

4:28

The AIs can only ever generate software in the

4:30

context that they've been given in their

4:33

prompt, but you can learn to expand your

4:35

context with experience.

4:36

You can look in a situation and recognize the

4:38

kind of things that could cause problems

4:40

in the future, and unlike the AI, you can find

4:43

out what your blindspots are and you can learn

4:45

to compensate for them over time.

4:48

With practice and the right mindset, you can

4:50

develop an intuition for what can go wrong

4:52

and how to avoid it.

4:53

It'll never be perfect, but you can get better

4:55

and better, and it doesn't take that much

4:57

work to be a lot better than the AI on this

5:00

kind of thing.

5:01

Now this isn't the kind of thing that anyone

5:03

can comprehensively write about as they're

5:05

way too many variables, which means it'll never

5:07

show up in a training set for an AI.

5:09

The best that we can do is speak about it in

5:11

the abstract and talk about it by example.

5:13

So here's an example:

5:15

Ten years or so ago, I did some time working in

5:18

Amazon.com's Logistics division.

5:20

Among other things, I wrote the storage layer,

5:22

the narrow player, the storage state machine,

5:24

the integration test suite, and the core logic

5:26

for the system that the delivery drivers use

5:28

to drop packages off on your porch.

5:30

So early on in the project, I identified we had

5:32

a potential problem.

5:33

We were required to exchange time information

5:36

over the network using "Epoch Time," the number

5:38

of seconds in some arbitrary date. This is the

5:40

way most Unix systems handle time internally.

5:42

But it's a really, really bad idea to use that

5:45

on the network.

5:46

In fact, a group of smart people realized that

5:48

it was such a problem.

5:49

They created a standard way of handling dates

5:51

over the network that avoids these issues

5:54

back in 1988, when I was graduating from high

5:57

school. That standard is called ISO 8601.

5:59

So I proposed that we used ISO 8601, and I was

6:02

told that we at Amazon had to stick with

6:04

the corporate standard.

6:05

My intuition, based on the 25-ish years of

6:07

experience I had at the time, told me that

6:09

we would have problems, although I couldn't

6:11

guess exactly what they would be.

6:12

So I put in some extra code and tests to handle

6:14

a couple of issues I could think of,

6:16

and then I just crossed my fingers, 'cause what

6:18

else I was gonna do?

6:19

And sure enough, we had problems.

6:21

The worst ones were related to drivers who were

6:22

scheduling their shifts for future dates.

6:25

The bugs usually appeared when someone was

6:26

signing up for a shift while they were either

6:28

on vacation or right before a daylight savings

6:30

time change.

6:31

In the event that the time zone that the driver

6:33

was in when they scheduled their shift

6:34

was different than the time zone they were

6:36

being when they showed up for work, their

6:37

schedule would be off.

6:38

And when I left the project, that was still a

6:40

problem.

6:41

Hopefully, they managed to get fixed by now.

6:44

My intuition at the time was good, but it wasn't

6:46

good enough.

6:47

If I thought of the context of shift scheduling

6:49

while in a different time zone, I could have

6:50

either tried to compensate or used that as a

6:53

further argument that we needed to use the

6:55

ISO 8601 dates.

6:57

Probably still would've lost that argument, but that's

6:59

another story.

7:00

But that's the kind of thing that AIs can't do.

7:02

They can't recognize when they need to change

7:05

their context, they can't imagine how user

7:07

situations might be different from what they

7:09

expect, and they can't recognize that a bug

7:11

now is the consequence of thought processes

7:13

involved in a decision that was made months

7:15

ago and use that to improve themselves and

7:18

their decision making process.

7:20

In fact, even if the AIs get as good as real

7:22

humans, as unlikely as I think that is, the

7:25

AIs probably still won't be able to do that

7:26

because the vast majority of human programmers

7:28

I work with can't do it either, including the

7:31

folks at Amazon that refused to change

7:32

the corporate standard because they thought it

7:34

would be good enough.

7:36

I discussed this some in my "starting a side

7:38

project" video. You can go here for more

7:40

information,

7:41

but the thing that most programmers are missing

7:42

and the thing that you can't get in school,

7:45

is the experience of putting your code out in

7:46

the wild, seeing what goes wrong, understanding

7:48

what you could have done if you thought of it,

7:50

to avoid the problems and then applying

7:52

that new knowledge in the future.

7:54

Like I said in that video, most developers only

7:56

ever work as part of teams, and they

7:58

only care about the development side, not the

8:00

operations side.

8:01

They don't have to deal with the consequences

8:03

of their decisions, they don't have to wake

8:05

up at two o'clock in the morning when something

8:07

breaks, they don't care to learn.

8:08

A ton of managers are like that too, and most

8:10

big companies are structured in such a way

8:11

that they can get away with that.

8:14

This is the kind of programmer or co-worker

8:15

that you've seen that grumbles or complains

8:17

when a bug report comes in and whose preferred

8:19

solution is, "I can't reproduce that, so

8:21

it's not a real problem."

8:22

Now, they're bad programmers, and they should

8:25

feel bad, and if your natural reaction

8:28

to a bug report coming in is, "I don't want to

8:29

have to reproduce that," then you're a

8:31

bad programmer and you should feel bad, too.

8:35

Bug reports are an opportunity to learn what

8:37

went wrong and to learn how it could have

8:39

done better and to improve, but most

8:42

programmers are that kind of bad programmer.

8:45

Most programmers and managers operate on an

8:47

"I did my part. The rest of it is someone else's

8:49

problem" basis.

8:50

Now, this is exactly the same way that the AIs

8:52

operate.

8:53

When asked, an AI to write code, it spits

8:55

something out and that's the end of its

8:57

involvement.

8:59

Once that conversation is over, it's done.

9:00

If later somebody brings the AI a bug in that

9:02

code to look at it, it's treated as an entirely

9:04

new issue and all the context would have been

9:06

lost. It can reread through the previous conversation,

9:08

but that's not the same thing.

9:10

If you want to be better than AIs can be, you

9:12

have to avoid that mindset.

9:15

There's a blind spot here that most people,

9:16

even a lot of good developers, have about

9:18

our work.

9:19

Unlike the way that AIs generate code, the way

9:21

that schools teach and test computer science

9:23

students and especially the way that

9:25

programming interviews screen candidates, the

9:27

true nature

9:27

of the work programming is this: The work does

9:31

not just stop.

9:33

In fact, most programming work is not "Done" for

9:36

years if not decades after the first release.

9:39

Even after every member of the original team

9:41

has long left the project, the work of

9:43

maintaining

9:43

that code can continue, maybe for as long as a

9:46

human generation or more.

9:48

This is the misunderstanding I mentioned in the

9:50

introduction.

9:51

People, even a lot of developers, tend to talk

9:53

about whether or not an AI can replace

9:55

a programmer in terms of whether or not the AI

9:57

can perform some discrete tasks that the

10:00

programmer does on a daily basis. But that's

10:02

not the job, at least not if you're doing

10:04

it right.

10:06

A lot of developers, a lot of teams get this

10:09

really wrong though.

10:10

A lot of programming is done such that each

10:12

code change is treated independently of all

10:15

other code changes.

10:16

This is the way that an AI would do the work

10:18

and it creates a ton of bugs.

10:20

It's easy to spot if you look from the outside.

10:22

It's what causes a bug fix or a patch or a new

10:24

release to have new bugs in it that didn't

10:27

exist in previous releases.

10:29

Now I'm not talking about a new added feature

10:31

that contains bugs.

10:33

I'm talking about a thing that used to work,

10:35

but it doesn't anymore.

10:37

When done correctly, outside of new features,

10:39

the number of new bugs in each release should

10:41

go down dramatically because what we can do, if

10:44

we try, is understand that a bug we're

10:46

working on now was caused by, or at least

10:48

contributed to, some trade-off we had in mind

10:51

when we made the decision some months ago, and

10:54

when we not only fixed that bug, we can

10:56

learn to recognize similar trade-offs when they

10:58

come up again so we can avoid similar

11:00

problems occurring in the future.

11:02

We actively look for other places that mistake

11:04

was made and we clean them up before they

11:06

can start causing problems.

11:09

In addition, good experienced developers know

11:11

to consider the future maintenance effort

11:13

when considering any change.

11:15

Often, I've had to push back on changes that

11:17

seem simple to implement because I knew that

11:19

the cumulative scar tissue of adding many, many

11:21

little one-off features released after

11:24

release makes for a very fragile system.

11:26

A human can learn that, but it doesn't fit into

11:29

a StackOverflow answer or a Reddit

11:31

post or a LeetCode riddle, so the AI's don't have

11:33

a clue about it and to the extent that

11:35

it's discussed in blog post or videos like this,

11:37

it's too abstract for an AI to actually

11:39

act upon.

11:40

There's also an additional complication that

11:42

the AI is particularly bad at dealing with,

11:44

which is when the environment around our code

11:47

is changed outside our control and we have

11:49

to deal with it.

11:50

It's very common these days for new security

11:52

issues to be found or for new bugs to be

11:54

introduced

11:54

into the operating systems or libraries or

11:56

browsers that our code runs on top of.

11:58

When the same code is last time suddenly starts

12:00

behaving differently than last time

12:01

on the same set of circumstances, it must be

12:03

because something else changed, but often

12:05

we don't even know what.

12:07

The first step when that happens the last few

12:09

years is for most programmers is to type

12:11

the problem they're having into Google or stack

12:13

overflow, and hey, I've done it too,

12:15

but there are times when there just aren't any

12:17

answers or worse there are answers, but

12:18

they're all out of date and they're no longer

12:20

relevant and they just waste your time.

12:22

Most programmers these days know that sinking

12:24

feeling of realizing they have a new problem

12:25

that they can't copy-paste their way out of.

12:28

Those are the cases that AI can't help with

12:30

because the solutions don't yet exist so they

12:32

can't be found in the training data.

12:34

But I promise it is possible to learn and fix

12:37

those bugs.

12:38

At the risk of doing the "back in my day" thing,

12:40

I had been getting paid to program

12:42

for 10 years before there even was a Google.

12:45

We did it without Google or stack overflow or

12:47

AI back then, and it's still possible at

12:49

least when it's needed.

12:50

And you learn to fix those bugs by putting in

12:52

the work of fixing them.

12:54

And then by looking back on how that bug came

12:55

about and how you might have prevented

12:57

it.

12:58

If you've got a job right now, you can start by

13:00

looking around at your job for those bugs

13:02

that don't have easy answers and volunteering

13:05

to work on them.

13:06

Get to know the QA and the operations folks at

13:07

work. Learn what they're seeing that most

13:09

of your team is ignoring. That might work

13:11

depending on where you are, although a lot

13:13

of corporate structures make that difficult.

13:15

In general, the smaller your company and the

13:17

smaller your team, the easier it will be for

13:19

you to be able to work on these kinds of

13:20

problems.

13:21

I've spent a lot of time at startups and they

13:23

have lots of opportunities to understand

13:25

the full product and work on that kind of thing.

13:28

People tend to care more also because if the

13:30

product fails, we're a lot of a job, but

13:31

startups

13:32

also have a work-life balance and stress

13:34

issues though, so it's not a panacea.

13:37

But it is possible to take on that

13:38

responsibility even in many larger

13:39

organizations if you're

13:40

willing to do the work and put up crap from

13:42

some people around you.

13:43

Another quick example:

13:45

This is a photo of a bunch of empty delivery

13:47

bags with barcodes on them from my time at

13:49

Amazon.

13:50

Each one of those represents an actual product

13:53

that I bought myself with my own money and

13:55

then acted as my own delivery person and

13:57

delivered to myself as the customer using the

13:59

system

14:00

my team was building at the time.

14:02

I wasn't required to do that.

14:04

In fact, several people, including my managers,

14:06

got upset at me about it.

14:08

Although since I was spending my own money, the

14:09

only way they could have stopped me would

14:11

have been firing me because I went outside my

14:13

part of the organization and I worked directly

14:15

with the folks at the local distribution center

14:18

to set up my accounts and my permissions

14:20

to be able to do that and I got to know a bunch

14:22

of those folks in the process.

14:24

They were thrilled to have someone from

14:26

development that actually cared about their

14:27

perspective

14:28

for once and I learned a ton from working

14:30

directly with them that I couldn't have

14:31

discovered

14:32

otherwise.

14:33

It made me a much better programmer and it made

14:35

our system much more reliable.

14:37

I don't know of anyone else had Amazon in

14:39

development who spent their own money to test

14:42

a product that they were developing, but it was

14:44

definitely worth it to me.

14:45

So you probably can find a way if you try hard

14:49

enough, but if you can't get access or

14:51

time or permission to work on those problems or

14:54

just don't want to wait, then your best

14:56

bet is to build your own project.

14:58

The easiest way to do that these days is to

15:00

build what's called a "Software as a Service"

15:02

or "SaaS" project.

15:04

The startup costs are tiny, it's mainly just

15:05

your time and labor, the only potential risks

15:07

are legal and in my personal experience those

15:10

have been quite small.

15:11

That might not be true for you, it depends on

15:13

too much on your local laws and your employment

15:15

contract if you've got one and the only thing I

15:17

can advise about all that kind of stuff

15:18

is just to talk to a lawyer and maybe an

15:20

accountant too.

15:21

I know that stinks, but these days it might be

15:23

a good idea for everyone to know a lawyer.

15:26

Like I said in my "Starting a Side Project" video,

15:28

running your own thing-as long as people

15:30

are using it so you can learn from their bug

15:32

reports and feedback-is the best way to learn

15:34

to be a better programmer.

15:35

I encourage every single programmer to do that,

15:38

but it's even more important than that

15:40

these days if you want to be in this profession

15:43

long term.

15:44

Being a better programmer is useful and

15:45

important and I want all of you to get better

15:47

because

15:48

the better you all get, the fewer bugs the rest

15:50

of us will have to deal with, but these

15:52

days as the AIs get better and better, being a

15:54

programmer who has experience specifically

15:57

in the kinds of coding skills that the current

15:59

type of large language model AIs aren't good

16:01

at and cannot be good at, is a far more valuable,

16:05

if not irreplaceable, skill.

16:07

So I've got some more videos in the works about

16:08

starting and building your own software

16:09

as a service project and now that I've wrapped

16:11

up my involvement in a data warehouse

16:13

consulting

16:13

project that can seem most of my time at the

16:14

end of last year, I'll be able to devote

16:16

more time to this channel and post more

16:17

regularly.

16:18

So subscribe if you're interested in seeing

16:20

more on that kind of stuff.

16:22

Until then, keep an eye out for opportunities

16:24

to understand how the bugs you see today were

16:26

caused by the decisions you made in the past or

16:29

someone else made in the past and seek

16:31

out the tasks that Google doesn't have good

16:33

answers for and remember, the Internet is

16:35

full of bugs and anyone who says different may

16:37

well be a crappy programmer trying to

16:40

find an excuse not to have to fix their crappy

16:43

code.

16:43

Let's be careful out there.

Interactive Summary

Ask follow-up questions or revisit key timestamps.

The video discusses the limitations of current AI models, particularly in software development, and argues that human developers can differentiate themselves by cultivating skills that AI cannot replicate. These skills involve learning from experience, understanding context beyond training data, and developing intuition for potential problems. The speaker emphasizes that true software development involves continuous learning and maintenance, not just discrete task completion, which is a fundamental difference from how AIs operate. The video suggests that developers can gain these valuable skills by taking on more responsibility, working closely with QA and operations, and building their own projects, such as Software as a Service (SaaS) applications, to learn from real-world feedback and bug reports.

Suggested questions

5 ready-made prompts