Links

To navigate this slide deck: Use cursor keys or click on arrows on bottom right. Use Esc key to toggle overview

Learning to code in the age of AI

Hi, I'm Sheena

  • CTO of Umuzi
  • I build effective + efficient remote education systems == tech + people + syllabus + ux + pedagogy
  • Learned to code around 20 years ago 🍌
  • Always had a passion for education
πŸ§—β€β™€οΈπŸ•οΈπŸ§­πŸ‡ΏπŸ‡¦πŸ–ŠοΈπŸ› οΈπŸ”₯

Purpose

Reduce social inequality through education

Figure out what skills are future-proof

AI is making waves

  • I personally use AI while coding
  • The biggest foot-gun around for learners

What is software development?

A software developer's job is to...

Write code

A software developer's job is to...

Solve problems!

Using code

A software developer's job is to...

Figure out what the problem even is

Like this?

We start with a problem or idea...

Full of assumptions about...

  • the world
  • what is possible with current technology
  • shared understanding

Communicated imprecisely...


Pictures, flow charts, research artifacts, conversations, wire-frames, documentation, text...

The most precise way to describe how an application works is in code

Like this?

Like this

The process

  • Follow up questions
  • Push-back
  • Consider tradeoffs
  • Suggestions
  • Inspiration
  • Empathy for the user
  • Solution architecture
  • Selecting the right tools
  • Validation of solution

Solving problems

			while True:
					figure out what we need to do to move closer to the solution
					solve a small problem
					write it down
						

Watch this...later

Evolution of code...

Punch cards

Time passes... abstraction happens

What is abstraction?

C and C++ era languages

Python era languages

As time continues, we move further from the machine. Programming languages become more "human".

If the language changes, what will stay the same?

Software developers now

  • Solve problems
  • Tell machines what to do

Future software developers

  • Solve problems
  • Tell machines what to do

How might the language change?

Human languages

Inaccurate! Imprecise! Confusing!

Punctuation


							"The koala eats shoots and leaves"
							"The koala eats, shoots and leaves"
							
							"She ran away from the fire, in her pajamas"
							"She ran away from the fire in her pajamas"
						

US CONSTITUTION, ARTICLE IV, SECTION 3

Revisionist history

Common mistakes


							"There, their"
							"Too, to"
							"It's, its"
						

Misuses


							"Borrow versus lend"
							"Literally == figuratively"
						

Staying hip with the times


							Lit 
							Kiff
							Drip 
							Cool 
							Cheddar 
							Goat
							DRY 
							Lol
						

Hammers and laser-beams

  • Human languages are like hammers
  • Languages like Python - more like a laser beam
  • C is still a thing
  • Even assembler

Code ==

Precise description of what machines should do

Code up close

  • What order things happen in
  • Under what circumstances
  • Where knowledge comes from, where it goes
  • How things change
  • When things repeat

Code up close

  • Logic and algorithms
  • Written in a way that is clear to machines
  • Written in a way that is clear to people

What will get abstracted away?

  • NOT if statements, loops, flow control
  • NOT functions
  • NOT variables
  • NOT classes and objects
  • NOT exceptions and errors

What will get abstracted away?

  • NOT our ability to think
  • NOT our ability to express ourselves

"Learning to code" ==

  • Learning to think
  • Learning to express thoughts

AI is a foot gun


For people learning to code

Body Builders

How do body builders get good at lifting heavy things?

Software developers


Solve hard problems - we think and bring our thoughts to life

How do devs get good at solving hard problems?

Problems

But wont AI get better?

Yes, but...

Problem solving is a transferrable skill

The power lies with the people who can...

  • Think about big problems
  • Express themselves clearly

Sam Altman


"You should learn to code...learning to code was great as a way to learn how to think. I think coding will still be important in the future"

Learn to code => learn to think

  • to harden our own thinking
  • learn to express ourselves accurately
  • to get feedback from people
  • to get feedback from the world
  • to get feedback from our future selves

Reading... Japanese?

Reading code...

  • To read the minds of your team mates
  • To read the minds of powerful thinkers

Can AI help me learn software development?

YES!

Richard Feynman


"The first principle is that you must not fool yourself and you are the easiest person to fool."

Illusions of competence

Components

  • Dunning Kruger effect
  • Overconfidence in future-self
  • Hindsight bias

MASTERY

  • Familiarity
  • Nodding while someone/something else does the thinking
  • Housed in your short-term memory

MASTERY comes from

  • Deliberate practice
  • Recall
  • Struggle

Bad strategy for solving problems

  • "I don't feel like solving that problem..."
  • Get the solution
  • Convince yourself that you could have done it yourself
  • Stroke ego
  • Move on to next problem

Strategy

  • Try it yourself first - embrace struggle
  • Opportunity to be wrong == Opportunity to upgrade yourself
  • If you get stuck - get unstuck
  • Recall things later on, practice over time
  • Learn to teach (to learn) - protΓ©gΓ© effect

Future-proof dev skillset

  • Problem solver
  • Communicator
  • Learner

The end


These slides - extra resources - links to my socials

Attributions

  • https://en.wikipedia.org/wiki/Sam_Altman
  • https://commons.wikimedia.org/wiki/File:Richard_Feynman_1988.png
  • https://commons.wikimedia.org/wiki/Category:Punch_cards#/media/File:1915_NELA_Convention_report_on_punch_cards.png