Generative AI Alone Won’t Make You a Software Engineer

A presentation at Open Source North in June 2024 in St Paul, MN, USA by Jenna Pederson

Slide 1

Slide 1

GENERATIVE AI ALONE WON’T MAKE YOU A SOFTWARE ENGINEER JENNA PEDERSON @JENNAPEDERSON

Slide 2

Slide 2

WE’LL COVER The good, the bad, and the hard (parts of being a software engineer) The craft of the software engineer reimagined Generative AI as a tool in your toolbox @JENNAPEDERSON

Slide 3

Slide 3

WHAT ARE YOUR FAVORITE AND LEAST FAVORITE PARTS OF BEING A SOFTWARE ENGINEER? @JENNAPEDERSON

Slide 4

Slide 4

52 MINUTES The median time that developers spend writing or editing code in their IDE https://xkcd.com/303/

Slide 5

Slide 5

COLLABORATING DESIGNING LEARNING PROBLEM SOLVING SO WHAT ARE WE ACTUALLY DOING? DOCUMENTING CODING MAINTAINING TESTING

Slide 6

Slide 6

HUMANS ARE HARD @JENNAPEDERSON

Slide 7

Slide 7

EMPATHY Allows us to deeply understand our end users and their needs, experiences, and painpoints @JENNAPEDERSON

Slide 8

Slide 8

ETHICAL RESPONSIBILITY We consider broader impact on society and look at the consequences of what we build and how people will use it @JENNAPEDERSON

Slide 9

Slide 9

COLLABORATION We collaborate with our team, engineers, stakeholders, end users, designers, and more @JENNAPEDERSON

Slide 10

Slide 10

COMMUNICATION We collaborate with our team, engineers, stakeholders, end users, designers, and more https://x.com/milan_milanovic/status/1622127889108926466 @JENNAPEDERSON

Slide 11

Slide 11

CRITICAL THINKING IS HARD @JENNAPEDERSON

Slide 12

Slide 12

We gather up knowledge about a problem/problem space, then analyze, synthesize, and evaluate the info we’ve gathered so we can make reasoned judgements and take action. DIVE DEEP 5 Whys 7 So Whats First Principles @JENNAPEDERSON Pareto Principle

Slide 13

Slide 13

DEVELOPER VELOCITY INTERPRETED LANGUAGES COMPILED LANGUAGES ASSEMBLY LANGUAGE MACHINE CODE PUNCH CARDS LEVELS OF ABSTRACTION @JENNAPEDERSON

Slide 14

Slide 14

DEVELOPER VELOCITY LOW CODE DOMAIN SPECIFIC LANGUAGES FRAMEWORKS INTELLISENSE AUTOCOMPLETE IDE SOPHISTICATION OF TOOLING @JENNAPEDERSON

Slide 15

Slide 15

DEVELOPER VELOCITY COMMUNITY KNOWLEDGE BASEES SEARCH ENGINES PRE-INTERNET SUPPORTING INFRASTRUCTURE AND SYSTEMS @JENNAPEDERSON

Slide 16

Slide 16

COPY/PASTE DEVELOPER @JENNAPEDERSON

Slide 17

Slide 17

CODE IS LANGUAGE @JENNAPEDERSON

Slide 18

Slide 18

DEVELOPER VELOCITY GENERATIVE AI COMMUNITY KNOWLEDGE BASEES SEARCH ENGINES PRE-INTERNET SUPPORTING INFRASTRUCTURE AND SYSTEMS @JENNAPEDERSON

Slide 19

Slide 19

DO YOU USE GENERATIVE AI DEVELOPER TOOLS? @JENNAPEDERSON

Slide 20

Slide 20

REIMAGINING THE CRAFT OF THE SOFTWARE ENGINEER @JENNAPEDERSON

Slide 21

Slide 21

  1. It relies on context OUR EXPECTATIONS OF GENERATIVE AI TOOLS @JENNAPEDERSON

Slide 22

Slide 22

  1. It relies on context
  2. We need to know what it’s optimized for OUR EXPECTATIONS OF GENERATIVE AI TOOLS @JENNAPEDERSON

Slide 23

Slide 23

  1. It relies on context
  2. We need to know what it’s optimized for OUR EXPECTATIONS OF GENERATIVE AI TOOLS
  3. We need to know that it hallucinates @JENNAPEDERSON

Slide 24

Slide 24

  1. It relies on context
  2. We need to know what it’s optimized for OUR EXPECTATIONS OF GENERATIVE AI TOOLS
  3. We need to know that it hallucinates
  4. It can help with the hard parts of software engineering @JENNAPEDERSON

Slide 25

Slide 25

  1. It relies on context
  2. We need to know what it’s optimized for OUR EXPECTATIONS OF GENERATIVE AI TOOLS
  3. We need to know that it hallucinates
  4. It can help with the hard parts of software engineering
  5. It can help in every phase of the SDLC @JENNAPEDERSON

Slide 26

Slide 26

ANALYSIS, REQUIREMENTS, & PLANNING Prompt: I’m creating a platform for users to share and discover recipes, including ingredients, steps, and images. What sort of functional and non-functional requirements should I be thinking about?

Slide 27

Slide 27

DESIGN & ARCHITECTURE Prompt: I would like to use AWS to deploy this web app. My team is made up of mostly Python engineers. We’ll use Flask to build the app. What options do I have to deploy this app on AWS that include using infrastructure as code?

Slide 28

Slide 28

DEVELOPMENT Prompt: What are the steps to bootstrap a simple Flask app that has one route “/recipes” that outputs “My Recipes” text? I need to set up a python virtual environment and requirements.txt as part of this.

Slide 29

Slide 29

DEBUGGING Prompt: When I run “python app.py” my Flask app does not start. There is no output when the command completes. Where should I investigate?

Slide 30

Slide 30

TESTING Prompt: I want to create a unit test for the “/recipes” route. What are the steps and example code to do that?

Slide 31

Slide 31

DEPLOYMENT Prompt: What are the steps to deploy this Flask app as a container to ECS using Fargate?

Slide 32

Slide 32

MAINTENANCE Send to Amazon Q Explain the following part of my code

Slide 33

Slide 33

WHAT USE CASES ARE MOST USEFUL TO YOU WHEN USING GENERATIVE AI TOOLS? @JENNAPEDERSON

Slide 34

Slide 34

  1. It relies on context
  2. We need to know what it’s optimized for OUR EXPECTATIONS OF GENERATIVE AI TOOLS
  3. We need to know that it hallucinates
  4. It can help with the hard parts of software engineering
  5. It helps in every phase of the SDLC
  6. The tech is rapidly changing @JENNAPEDERSON

Slide 35

Slide 35

GENERATIVE AI IS A TOOL IN YOUR TOOLBOX @JENNAPEDERSON

Slide 36

Slide 36

CRAFTING PROMPTS @JENNAPEDERSON

Slide 37

Slide 37

  1. Clarity BE SPECIFIC AND CLEAR
  2. Intent
  3. Context
  4. Constraints @JENNAPEDERSON

Slide 38

Slide 38

USE EXAMPLES @JENNAPEDERSON

Slide 39

Slide 39

USE AN ITERATIVE APPROACH

Slide 40

Slide 40

BREAK DOWN COMPLEX QUERIES

Slide 41

Slide 41

UNDERSTAND THE NON-DETERMINISTIC NATURE Suggestions are guidance rather than definitive answers @JENNAPEDERSON

Slide 42

Slide 42

UNDERSTAND THE NON-DETERMINISTIC NATURE Suggestions are guidance rather than definitive answers @JENNAPEDERSON

Slide 43

Slide 43

COMPUTERS DON’T GO TO JAIL. PEOPLE DO. @JENNAPEDERSON

Slide 44

Slide 44

RECALIBRATING THE CRAFT OF THE SOFTWARE ENGINEER @JENNAPEDERSON

Slide 45

Slide 45

A NEW TOOL IN YOUR TOOLBOX @JENNAPEDERSON

Slide 46

Slide 46

WITH EMPHASIS ON CRITICAL THINKING @JENNAPEDERSON

Slide 47

Slide 47

https://x.com/KentBeck/status/1648413998025707520 @JENNAPEDERSON

Slide 48

Slide 48

Stuff that generative AI developer tools can do better than me Things that generative AI developer tools will help me do better @JENNAPEDERSON Things that developers will always do best

Slide 49

Slide 49

THANK YOU! Please share your feedback! /in/jennapederson @jennanerdsout @jennapederson