Uncle Bob - The Long Reach of Code

45m

Robert Martin (aka Uncle Bob) is a programming pioneer and bestselling author or Clean Code. We discuss the prospect of automating programming, spotting and developing coding talent, occupational licensing, quotas, and the elusive sense of style.  

Watch on YouTube. Listen on Apple Podcasts, Spotify, or any other podcast platform.


Listen to his fascinating talk on the future of programming: https://youtu.be/ecIWPzGEbFc 

Read his blog about programming: http://blog.cleancoder.com/ 

Buy his books on Amazon: https://www.amazon.com/kindle-dbs/ent... 

Thanks for reading The Lunar Society! Subscribe to find out about future episodes!

Timestamps

(0:00) - Automating programming 

(8:40) - Educating programmers (expertise, talent, university) 

(21:45) - Spotting talent 

(26:10) - Teaching kids 

(29:31) - Prose and music sense in coding 

(32:22) - Occupational licensing for programmers 

(35:49) - Why is tech political 

(39:28) - Quotas 

(42:29) - Advice to 20 yr old



Get full access to Dwarkesh Podcast at www.dwarkesh.com/subscribe

Listen and follow along

Transcript

Okay, today I'm talking with Robert Martin, who needs no introduction.

So let's begin with talking about the future of programming.

Will GPT25 be able to automate programming?

Will I not have a job in 25 years?

What is GPT25?

What is that?

GPT-3 is the program that OpenAI just released, and it seems to be able to do some basic, make some basic methods, like making a palindrome, because they just did deep learning over a bunch of GitHub repositories.

So is the future of AI basically going to be able to automate automate programming?

No.

Pretty straightforward answer.

There's a fundamental reason behind this.

In order to

finally replicate programming, if you wanted a machine that could program like a human, that machine would have to have human sentience.

And we are very, very far away from that kind of a machine.

Why would we need human sentience?

Because

someone has to specify the way the program is going to work.

And that specification is, in fact, the program.

No other specification will suffice.

So a business user comes along and

he creates a rough specification, but is depending on the human intuition and the human intelligence of the programmers to fill in all the horrible little blanks that the business business person omitted.

We programmers are detail managers.

We deal with all the mess.

We're the ones who deal with the fact that text files sometimes terminate lines with backslash n, but sometimes terminate lines with backslash n backslash r for reasons that go back 50 years because of teletypes and Unix and DOS and all this crap.

And we're the ones writing the dumb little if statements to deal with the bizarre little exceptions that no business person wants to even think about.

If we tried to make

a deep learning machine

that could deal with all that stuff, we would wind up with a HAL 9000, something that has human intelligence.

And we are so far away from that that it does not concern me in the slightest that some deep learning machine will eventually take over all the programmers' jobs.

I'm happy to hear that then.

But how about this potential, which is that the development environments and the tools that programmers use will become so advanced that it'll be almost like a symbiotic peer programming kind of assignment where

you're working with the machine to write the code instead of just like writing it on the machine?

Sure.

I mean, we've already had that for

the entire span of programming.

We've been doing that.

I mean, the original programs were written in binary, right?

So, Alan Turing, working on the automated computing engine, was literally writing things in binary because there were no languages.

And then eventually, we made an assembler.

Can you imagine the benefit?

of an assembler over binary.

All that horrible binary math that you had to do, you don't have to do anymore.

And you can write your code in symbolic form.

That's already a huge advantage.

And then along comes John Bacchus with the Fortran spec in 1953.

And what a huge advantage that was over assembly language.

ALGOL came along pretty quickly.

By 1966, you've got Ole Johan Dahl and Christian Nygaard inventing objects.

This is, you know, 20 years after Alan Turing was doing binary programming.

You've got the first object-oriented language.

C comes along in 68, two years later.

C

comes along 12 years after that.

And we've got this massive progression of of

incredible amounts of help to the programmer.

Then in the late 90s, we start getting this wild stuff in our tools, the IntelliSense and the refactoring tools and the inspectors and the duplication finders.

So a modern IDE is a treasure trove of tools that allow a programmer to do immensely more complex things than we used to be able to do.

So yes,

I hope that machine learning continues to make our tools more powerful, but that will never alleviate the need for the programmer to be there and supervise those tools.

I'm a pilot, I fly a plane.

The plane has a beautiful autopilot.

I can turn it on, and the plane will fly itself all the way to my destination.

And I watch that thing like a hawk because it's a machine and it's going to do the wrong thing at exactly the wrong time.

So I sit there and I watch that autopilot and every time it's supposed to do something, I make sure it does that thing.

I'm still in charge.

It's not.

But once you get these advanced tools, will the future of programming just look incredibly different from what programming machine is like now?

You've written about how

the way that Turing wrote the first programs is not that dissimilar to how we write programs now.

Is that sort of continuity something we should expect in the future?

Or is the interface going to completely get modified?

Well,

I mean, the interface has been completely modified since Turing, but the actual programming is still sequence selection and iteration.

Yes.

Programmers still arrange programs in little units of sequence selection and iteration.

Will we continue to do that?

Well, I think that's a very interesting question.

And we've had some hints about other possibilities.

If you've ever programmed in Prologue, for example, you see that the sequence selection and iteration gets transformed into something else equally detailed, but it's not sequence selection iteration anymore.

It's declarative truth.

I'm not going to go deep into Prologue, but if you want to bend your brain around a concept that you're not familiar with, study Prologue for a couple of days.

But in the end, are we going to get to a situation similar to my autopilot, where I can set up some parameters in a tool and then watch the tool as it starts to develop a program?

And then I, as the programmer, watching what it's doing, start tweaking parameters around the outside, saying, no, no, not that, not that, this, this, go in this direction.

Will I be able to do that?

Yeah, I'd say that's probably very likely sometime in the next couple of decades, that the way we program computers will be more like

training a dog,

rewarding it in the right circumstances and punishing it in the others.

We'll see how that goes.

We'll see how that goes.

But under no circumstances, will there not be a programmer involved, someone with the same skills that you and I have today, someone who is deeply analytical and a detail manager and is watching out for all the dumb little gotchas that the machine has no clue and no strategy for addressing.

I'm happy to hear that.

Are teams of programmers less creative than individuals programming alone?

Teams of programmers are far more creative than programmers working alone.

but they also go in many different directions at once.

So they need, there's, you need a leader.

A team has to have a leader.

One of the problems that we have had in the agile community is that there's a certain faction of agileists who believe there should not be a leader, that the entire team is homogeneous and equal in a mass egalitarian society where everyone is the same.

And my experience is that that doesn't work at all.

A team needs a leader.

And then the team is generating ideas just like crazy.

The team generates ideas and the leader is the one who acts like, you know, Jean-Luc Picard,

this one, not that one.

Interesting.

Now, let's talk about educating future programmers.

I watched an interview with Linus Torvalds where he was expressing concern that the complexity of the ecosystem has grown so much that he's not sure that somebody in his position.

could come up with such a grand innovation.

They're just not

a rock to hold on to to like get that level of expertise at such early an age.

Do you have that kind of concern that the ecosystem has developed so much that it's harder for young people to kind of get to the frontier?

It takes longer now because there's so much more

cruft that you have to wade through.

When I was a young programmer, the machine that I was working on was initially a PDP-8.

I've got a little mock-up of a PDP-8 sitting right there.

It must have gone through a power failure because it's not doing what I usually have it do.

But that was a very simple machine.

It was a 4K machine, 12-bit word, half megahertz clock rate.

And there were no libraries, there were no frameworks, there was no nothing, right?

If something executed in that machine, it's because you wrote it.

And a programmer in those days could know

everything.

about the computer.

And it wouldn't take very long.

It would take a matter of months to eventually get to the point where you just knew everything.

Those days are long gone.

It's now not feasible to point at a computer system and say, well, I know everything about my MacBook Pro.

No, you don't.

It's just too much crud in there.

So there is a much longer learning curve to become

as adept at programming as those of us who started 50 years ago and had to climb that tree while we were working.

On the other hand, it is not like being a doctor yet.

If you want to become a doctor, you must specialize.

There's no way to go forward in medicine without specializing.

Even a general practitioner is a specialist nowadays because they have to exclude all this other stuff they cannot do.

And we are not there yet.

A programmer, over a period of

five years, say, can become adept at GUI programming, middleware programming, database programming, telecommunications programming, threads.

All of this stuff can become

well healed inside of a five-year experienced programmer.

10 years even better, right?

So it's not like

being a doctor or a lawyer where you absolutely must specialize and narrow your focus down to a razor.

Programmers can still be real general practitioners.

Gotcha.

Let's talk about the factories which manufacture programmers to become practitioners.

Universities, if you had to change one thing about how computer science is taught at universities, what would it be and how would you change it?

I would not teach it at universities.

Really?

I don't think it's a university kind of thing.

Again, this is a discipline that is only 70 years old.

There is not that much in it.

There's far more cruft in it than there is actual knowledge, actual, you know, solid, you know, teachable knowledge.

And the vast majority of the skills that a programmer needs are trade-like skills, not educational-based skills, right?

Or not university kinds of skills.

If you want to be an electrical engineer, you have to go to university.

There's just a tremendous amount of stuff you've got to learn there.

If you want to be a doctor, you've got to go to a hell of a lot more than a university, right?

But to be a programmer and a good programmer, this is a skill that you can learn at a community college or in a trade school over a period of a year, maybe a year and a half.

Get a good job with some mentors and learn it that route.

Learn it that way.

I think that is a much better way for...

young programmers to become programmers.

Not go to university.

It's not worth a four-year education.

The amount of money you'll spend on that four-year education is not going to be worth the programming knowledge you get.

Now, it might be worth a whole bunch of other knowledge.

It's not worth the programming knowledge you're going to get.

If you want to be a computer programmer and you're just getting out of high school, I'd be looking at a trade program, some kind of a trade school or a boot camp or something like that.

Some of these boot camps are not very good, so I'd be real careful about that.

But some kind of program like that where you can spend a few months learning a learning a language like Java or C sharp or something like that, and then move on to a job which has a mentorship or an apprenticeship program.

I'm in university studying computer science right now.

So I wish I heard that two years ago.

But in any case.

Can you explain to me how it is then that we have an industry where to get in is not that hard in terms of just the education you need at least.

Maybe there's like traits that are rare, but getting in is not that hard.

The demand demand keeps growing very fast.

How is it that people are still becoming corporate lawyers when there's a job that pays really well, that doesn't require that much education to get, that you can get into real fast?

What explains this inequilibria?

Now, I'm going to try and interpret that question carefully.

There are,

when I was a young programmer, I thought anybody could do this.

That was my fundamental hypothesis.

Anybody could learn this.

It's ones and zeros.

I mean, how hard is ones and zeros?

It took me a very long time and a number of very expensive mistakes hiring people to realize that not everybody can do this.

And in fact, the number of people who can do this is

much smaller than I had at first thought.

It is not a rare talent.

but it is not a massively common talent either.

And the talent requires a number of things, right?

There's this need to be a deeply analytical,

and there is this need to be able to focus, focus on very narrow things for very long times.

And there are people who simply cannot do that.

It's just not in their mental wiring.

They cannot do it.

But some programmers can, or some people can, and they can become programmers.

So you ask the question, why are we putting out corporate lawyers?

Well, they have a very different kind of interest and mindset.

Although they're analytical and they can focus, they focus on different kinds of things.

We programmers focus on Boolean decisions, ones and zeros, blacks and whites.

Lawyers, you know, they're looking at people.

People are much more complicated than

computers.

It's a very different kind of mindset.

If you had to estimate, what percent of the population do you think has a repertoire necessary to become a programmer?

Ooh, tough question to ask.

What percentage

of the human population has the aptitude for programming?

I think there are 100 million programmers in the world right now.

That's just a guess, but I think that's about right.

And that would be what, 180th of the population?

So we've got some demonstration that at least 1% of the population has this skill,

close to 1%.

Maybe it's as high as 5% to 10%.

Could be that high.

Could be.

I've had a number of experiences trying to teach people to program and not being able to get through after about 10 minutes.

You know, their brain just goes somewhere else.

They

can't do it.

And

that seems to be much more common than the other

talent, which is where the person that you're trying to teach gets excited and focuses in with you.

And that is much rarer.

So if going to university is not the best idea for somebody wanting to become a programmer, if somebody wants to solve highly technical problems, they think, well, it seems like I would need a good education to be able to do this.

Maybe I need to know a lot of math.

Would you recommend then they go to go to university and get a math degree so that they have the technical background?

I used to think that was true.

And I actually hired someone because

they got a master's degree in mathematics.

And I thought, okay, you know, math, master's degree in mathematics, you're going to be able to think this way.

You're going to be able to focus.

You're going to be able to do this.

And I found myself very disappointed with the way this person became a programmer.

Now, eventually they succeeded, but it was not the quick success that I had expected.

It took a lot of working and a lot of failure to get this person's mindset into the programming mindset as opposed to the mathematics mindset.

So there's a difference there.

Now, is it worthwhile knowing mathematics as a programmer?

Yeah, in certain fields, it certainly is.

I mean, if you're going to be doing any kind of physics work,

you're going to be writing the code for a particle accelerator, probably want a little bit of math, right?

if you're going to be doing uh

uh a really deep interesting financial stuff going to be one of the quants in a in a stock exchange or something like that probably need to know a little bit of good math right on the other hand if you're a

run-of-the-mill programmer writing code for uh oh i don't know maybe uh

yeah

uh siri just yelled at me for saying run of the mill um

uh if you're going to be writing the code that runs inside my refrigerator, for example, the machine control software inside my refrigerator,

probably you don't need a tremendous amount of math for that.

A good high school algebra would probably do enough, maybe a little bit of pre-calc, probably enough.

I don't think you need, you know, deep math theory for that kind of stuff.

Even the guys who do

game work.

even though that's pretty heavy physics stuff, all that physics stuff is already in the physics engines.

So most of the time there, I think you don't need all that math.

Is it important for a programmer to know the business they're going into?

And the answer to that is yes, right?

If you're going into an insurance business, you better know the insurance business.

If you're going to be a programmer in the telephone company, you better understand the telephone company.

And so.

Much of the early education of a programmer in a mentorship program at a company is really about the company and not about programming.

This is what we, this is our field of expertise.

This is what we do.

This is what an insurance claim is.

This is what all these other things are.

This is how we think about it.

So that you can effectively apply the business knowledge to the problem of writing code.

And that brings us full circle.

Because you had asked me originally and you'd said, well, aren't we going to eventually have these machine learning things that can write code?

And the answer to that is probably not because it's the intuitive knowledge of knowing the business you're in that allows you to make these low-level decisions that the business people don't want to make.

From that, does it follow that if you want to become a very competent programmer, you should try to specialize in a specific industry where the application of programming is best exercised, or should you try to develop first a broad range of experience and expertise?

Both, actually.

So as you take on a job,

you want to specialize in the business that you're in for a period of n years, whatever N is, might be two, might be three,

probably that short, though.

And get to know that business.

And then see if you can move to a different business domain.

and spend two or three years on that.

And then try another business domain and spend two or three years in that.

And by that time, you've got a nice broad business domain.

And that will allow you to infer other business domains.

Because business domains have similarities and differences, but once you've got three or four of them in your head, you can start to triangulate.

Now, when you are considering hiring somebody as a programmer and they don't have a lot of experience, so

you can't just look for somebody to vouch for them.

What is it that they can do to signal to you that they would become a competent programmer?

That's a heck of an interesting question and one that I've struggled with for

a very long time now, a number of decades.

And I have found no reliable test.

I used to make people,

so back when I thought it was math, I used to make people solve Newton's method for calculating a square root.

I'd just draw it on the board.

I'd draw a parabola on the board and say, okay, here's the slope.

You know, it's the derivative of the function.

Now come up with an algorithm and I'd let them use any language they wanted and i you know i thought that was a pretty good approach and then and then i found people that were very good at that but could not do other things then i thought okay uh i'm going to describe uh the civ of eratosthenes beautiful algorithm for finding prime numbers right i'm going to describe that in in simple terms and have them write some pseudocode and show me that they can actually build a doubly nested loop right and that was also not reliable, although it was better.

It was not reliable.

So

the conclusion I've come to now is that there is no simple test.

What you need to do is spend a fair bit of time with someone and observe how well they learn over a period of time and how well they apply that learning, how well they can focus,

how well they can deal with a problem analytically.

And that period of time is probably weeks.

So the kind of interviewing that I would prefer to do now,

and by the way, I don't hire people anymore.

I'm now just kind of me,

but I know people who do hire people.

And

one of the ways that they do it is to

ask them to join an apprenticeship program.

And in that apprenticeship program, they will be given a series of ever greater challenges, not all of which are programming challenges.

Some of them are writing challenges.

Some of them are speaking challenges.

Some of them are presentation challenges, but a sequence of ever-increasing

challenges.

And then at the end of that, an assessment is made by everyone that they have talked to.

and they're offered a job or not.

And in some cases, there's a stipend salary for that apprenticeship program.

In other cases, there's not.

Interesting.

Do you suspect that the traits that are required to become a programmer, these are developed in your childhood through the experiences you have in early life, or maybe through high school and middle school?

Or is it something that some people are probably just born with on some level?

It's hard to know.

I think there's a certain amount of just neural wiring.

you know, some character defect that causes you to be a programmer

that not all people have.

However, I have seen

people who were not at all interested acquire the interest and acquire the talent

at different stages of life.

My son, for example, who is now a programmer and a very accomplished one, had showed no interest at all.

in early grade school when I got interested.

I was 12 years old, right?

So I thought, oh, okay, everybody's going to be interested at 12.

Now, my son didn't show any interest at all until he left home and became a, or close to leaving home, late, late high school, early university, and came back with this interest and skill.

My daughter

has just turned 30 and is suddenly very interested and is acquiring a significant amount of skill.

So I've seen this happen at different stages.

The switch turns on

and all of a sudden they've got all the all the motivation and the focus energy and the analytical skill they need

so i don't know i you know it's a a deep mystery to me are there advantages to learning this material and adopting these skills early in life or do you get a more mature perspective if you learn it later on in life

had you asked me that question 20 years ago i would have said There's obviously an advantage to teaching young children.

I mean, if you can get the young children immersed into computers well, obviously they're going to turn into much better programmers.

And I'm not so sure that's true now.

So the counterexamples are the vast number

of

programming toys.

And they span

a huge period of time.

So nowadays you've got like things like Lego Mind Blocks

or Mindstorm and you've got a whole bunch of other tools that try to encourage young people to become programmers, kids that are 12, 13, 14.

In the early days, we invented languages that would help young people become programmers.

The logo language, for example, was all about driving a little mechanical turtle on the floor and letting it raise a pen and draw on a piece of paper.

And kids,

they would issue it commands, go forward 10, turn right 90 degrees go forward 10 drawing squares and circles on a paper

and

what we found through all of these through all this long period of time attempting to make tools that would appeal to children is that

it did not have a profound effect There's a whole bunch of children that would sit and drive the turtle around for a little while and then lose interest

and never develop the

more interesting skills skills of putting things in variables and calling functions.

And those just went, they didn't happen.

And we see the same thing with things like Lego Mindstorms.

Now, there are children who do grab it, and you can tell they want to become programmers.

But then the question is,

well, wouldn't they have just grabbed it anyway?

Why did they need this tool?

Are these educational props

actually

incentivizing more people to become programmers?

Or are they just helping the ones who would become programmers anyway?

And I don't know the answer to that.

I'm skeptical nowadays.

Interesting.

So you're not bullish on mandatory coding classes in middle and high school.

I think everybody should have

the experience.

I see.

Probably, you know, for a

four-week or a six-week period, everybody should do a little

basic programming or Ruby programming.

I want to be careful there because turn people into Ruby and put, you know, it's a very complicated language when you get into it.

But, you know, maybe a little

bit of coding, a little scripting, a little something so that you know basically what it's about.

But other than that, I don't think there's any need to like push a year-long course.

I don't think that's necessary.

I think the ones who are interested are going to do that on their own.

Right.

Right, right.

Let me ask you about the sense of style that a programmer develops over time.

Is this at all related to what has been called the elusive writer's ear, where a writer over time develops a sense of prose and style?

Is that sense related to the one that one develops over programming?

Michael Feathers coined a term 20 years ago.

which he called design sense.

And he's threatened to write a book on this for the last 20 years.

I haven't seen him write it yet.

But the basic idea is that, yeah, there is this

sense that a programmer develops over a long period of time that

a bit of code or a design of a system or an architecture of a system somehow feels right.

And it's an elusive kind of sense.

It's the judgment of beauty.

Oh, a beautiful thing.

And

the word beauty ought to be used here because there are beautiful designs, there are beautiful architectures, there are beautiful functions

which can be described as beauty and understood as beauty only by people who have the experience to look and say, oh my goodness, that's beautiful.

I was watching a program on Netflix yesterday.

It's called Queen's Gambit.

It's a new one.

It's about a young girl who becomes a chess master.

And in the midst of this, someone asked her, you know, why are you so interested in chess?

And she leaned back and she said, it's beautiful, or it can be beautiful.

And I think the same thing applies to software.

Christopher Hitchens, who is known for his excellent writing, suspected at some point that the sense of writing was tempered by a sort of musical intelligence about cadence and prose.

Do you think musical intelligence plays into your ability to code well or beautifully?

Well,

there is, and this has been known for some time, there is a

very strong correlation between programmers and musicians.

People who study music or have played an instrument or have developed a musical sense often become programmers.

Why that's true, I don't know.

It could be the rhythmic thing, the mathematical layout of the scales, who knows.

If you look at

a musical composition, if you look at a sheet music, it is a program.

It's got if statements, it's got while loops, it's got sequence, it's got everything.

So maybe it's something like that.

I don't know, but there's definitely a correlation.

Interesting.

So let's talk about your idea for, or

your claim that we need some sort of body within software engineering that decides who has the ethical and the technical competence necessary to remain a programmer.

I don't know if you change your view on this or if I, and I'll let you elaborate what you mean by this.

But somebody who is concerned about this might say, well, this is exactly what has happened in other industries where we've got occupational licensing that's keeping people out of the industry so that the labor pool is artificially reduced to the advantage of the people already in the industry.

And there's also the added wrinkle with the

increasing calls for censorship and cancel culture.

We could have expected that this body might itself become a tool for removing people who challenge orthodoxies.

How do you respond to these challenges?

Well, so the problem:

the problem is that programming has become

an entirely essential job function for our society to exist.

Human society can no longer exist without programmers, and that dependency is growing at an exponential rate.

So you look around the room here and you'll just see dozens and dozens of little electronic things that have code running in them that just make life

doable.

And all of the things that we used to depend upon that did not have code running in them all now have code running in them.

So your microwave oven and your refrigerator and your car, telephone, your television television all has code running in it.

Our society can't exist anymore without programmers.

And there is no

constraint on programmers to behave ethically, to have any standards, to have any disciplines.

So that's an unstable situation.

It can't go on like that.

How do we address it?

Do we need

something akin to the AMA, the American Medical Association, who provides, you know, licensure licensure for doctors,

or do we need

something else?

Do we need maybe a guild structure, maybe a whole set of little organizations that license their own programmers with different sets of standards and ethics and disciplines, and then let the market decide?

Oh, those guys did better than those guys.

I think we'll hire them.

I don't know where that's going to come down.

My fear is that it will be forced upon us by government before we can develop that solution.

And I'm hoping that we can develop that solution

before government sticks their little fingers in there and screws it up completely.

There are a number of companies that have begun to do this.

So you look out in the world out there,

especially software consulting firms.

And there are software consulting firms out there that have based themselves on a set of principles, ethics, and disciplines.

And they advertise themselves that way.

And I think there will be more and more of that.

So that's kind of the direction I think the industry is going to go.

At least I hope it goes that way.

And I hope we get there before government sticks their foot in it and kicks us all to hell.

I hope so too.

I wanted to ask you why tech of all industries seems to be so political in the sense that specific companies seem to have a clear political orientation.

That doesn't seem to be true in many other areas of work.

Do you have a sense of why that is?

No.

Well,

yes and no, I guess.

And

it's been a deep puzzle.

If you

let's let's do this differently.

If you look at the political bias geographically, right, there is a definite political political bias in the United States.

You've got the two coasts, they tend to be liberal, blue states on each coast.

Cities tend to be more liberal.

Rural areas tend to be more conservative.

The Midwest tends to be more conservative.

If you get,

go to a company in Kansas City and you find a company there that has 100 programmers.

Odds are those programmers are going to be conservative.

Just

because of the geographical bias.

Go to San Francisco, odds are the programmers there are going to be liberal.

That's just the geographical bias.

Is there anything else in software that drives people in a certain political direction?

Well, maybe.

It turns out to be easy.

to become a programmer.

We've talked about this before.

You don't really need to go to university.

You don't really need to

get a

full education.

You can become a programmer without a lot of experience.

And

because our industry continues to invent new

schemes all along,

there are people who can jump into these schemes very early.

So for example, HTML.

HTML was invented 20 years ago and

a whole bunch of high school kids suddenly got really good at HTML.

And of course, they went out to get jobs

without a lot of university training, without a lot of anything.

So it's easy.

There's a low

barrier to

acceptance early on.

And that, I think, has led to a good thing.

which is a bunch of marginalized folks, folks who live in marginalized communities, manage to get in very easily.

And they get experienced and they develop skills and that's also good.

And then I think, and this is a guess on my part, I think

they use that skill and

that technology that gives them a voice.

And that voice has been turned.

And in a way that is sometimes very detrimental.

Now, I don't want to cast aspersions on every marginalized community, but I have noticed that there are some that suddenly develop a very loud voice.

And

in a lot of cases, they wind up driving the cancel culture.

Just

the way that looks like it's been happening from my

middle-aged, no, I'm not middle-aged.

I'm actually old now.

From my old conservative white bias, right?

That's what it looks like to me.

Interesting.

Let me ask you about quotas.

I think you laid out a really good argument in your blog

about why quotas don't necessarily help the groups you're trying to help.

Does the argument you laid out there, and I'll let you explain it,

apply and generalize to other places where things like quotas are applied, like universities, for example?

I think it does.

I think it always does.

I mean, the idea behind a quota is always very well-intentioned, right?

There's a marginalized group.

They're not getting serviced properly.

We need to relax the barrier of entry for that marginalized group so that more of them can join.

Well-intentioned, you know,

everybody wants the best.

But what's the end result?

The end result is that you lower the standards.

The standards have to come down, which hurts the entire industry.

And it doesn't

help

the marginalized folks to let them in under low standards, but expect the high standards on exit,

right?

Because then you'll see this failure.

And we see that in universities and we see it in

employment as well, is that the dropout rate or the failure rate is higher.

It doesn't help.

I once sat with a woman, a very accomplished woman,

and we were at a conference.

And I was giving a keynote and she was giving a keynote.

And we were just talking about this issue.

And she looked at me and she said, i hope to hell that they did not ask me to do this keynote just because i'm a woman

and you know i i i could feel that angst the devaluing of her

of her ability to do a keynote talks because she was invited just to become a woman so her fear her fear was that she was being devalued by

a quota system that she didn't even know that existed.

I think in general, the only way to deal with issues like this is to do it entirely on merit, right?

If you're going to be a programmer, we will, you know, I'm perfectly happy to hire anybody.

I don't care what your political bias is, your sexual bias is,

your racial situation.

I don't care about any of that stuff.

As long as you can write the code, I'm happy to work with you.

I don't want to suddenly or I don't want to relax the standards for a certain subgroup.

I don't think that's fair to anybody.

Just me.

Yeah.

Yeah, I completely agree.

Malcolm Gladwell was in a debate once, and I actually really like Malcolm Gladwell, but he started off by saying, first of all, I think it's scandal that nobody on this stage is a woman.

And there's a point there, but then I thought about it and I realized, well, imagine being the woman who just came on stage because Malcolm Gladwell wanted a woman.

You know what I mean?

Like, imagine being in that situation.

Anyways, let me ask you finally about advice you would give to a 20-year-old who wants to become a programmer.

Well, okay, being becoming a programmer is not particularly difficult in our in our day and age yet.

It may be at some point in time, but right now it's not.

If you think you want to be a programmer and you think you have the aptitude, it is stupidly simple to get on YouTube now or get on a bunch of other websites and learn to code.

And it doesn't take a lot of effort.

If you've got a laptop, if you've got a computer at your disposal, if you can go onto YouTube or any of the other sites out there, just find some site that'll walk you through an initial Java program and then experiment with that as much as you can.

Learn how to write this code.

Read other people's code.

Go onto GitHub, download their code, read it, understand it.

It'll be hard, but that's okay.

You know, you can do it.

There's a whole bunch of books out there, tons and tons and tons of very good books that you can read.

Start out with simple books like, you know, The Joy of Java or, you know, Java for Dummies in 10 days, or, you know, Learn C in 21 days, any one of these books

that will just help you immensely.

Find a mentor, someone who's been at it for a while.

Most of them will be overjoyed to have someone that they can teach and work with and help.

If you can get into

a

trade school for programming, that would be great.

Not necessary, but it would be great.

If you've got the means to go to university and you want to spend the ridiculous amounts of money that universities now cost and go into horrific debt for the rest of your life, okay, you can do that too.

And I'm not going to stop you.

And you'll learn a whole bunch of really cool stuff there, stuff that some of which you'll even be able to apply later on in your career.

But if you don't have that means, if you don't have the means to go to university, that's okay.

I mean, you can get this.

You can acquire these skills.

You can become a programmer with a minimum amount of investment.

Just find some people to mentor you along.

Find a company that's willing to hire a beginner.

And there are a lot because the demand is immensely high right now and will continue very very high for a long time.

And

find a way to get in.

And it's not that hard, right?

So that would be my advice.

Read like crazy.

Read.

Inhale as much as you can.

Study like crazy.

Watch videos and do exercises.

Just, you know, fill your brain with this stuff.

And then it ought to be simple after that.

Excellent.

Well, thank you very much for talking with me today.

This is very fascinating.

It's a pleasure.

I enjoyed it very much.

Hey, if you enjoyed this podcast, please consider sharing it with your friends and posting it on social media.

Word of mouth is incredibly valuable for a new and a small podcast like this one.

So, thanks for watching.