Slide 1

Slide 1 text

No content

Slide 2

Slide 2 text

No content

Slide 3

Slide 3 text

An Atomic Project: ArtPrize

Slide 4

Slide 4 text

An Atomic Project: ArtPrize ‣ Progressive Web App ‣ Hosted on Vercel

Slide 5

Slide 5 text

An Atomic Project: ArtPrize ‣ Progressive Web App ‣ Hosted on Vercel ‣ Written in TypeScript

Slide 6

Slide 6 text

An Atomic Project: ArtPrize ‣ Progressive Web App ‣ Hosted on Vercel ‣ Written in TypeScript ‣ Built with React

Slide 7

Slide 7 text

An Atomic Project: ArtPrize ‣ Progressive Web App ‣ Hosted on Vercel ‣ Written in TypeScript ‣ Built with React ‣ Backed by FaunaDB

Slide 8

Slide 8 text

An Atomic Project: ArtPrize ‣ Progressive Web App ‣ Hosted on Vercel ‣ Written in TypeScript ‣ Built with React ‣ Backed by FaunaDB ‣ Serverless ‣ Lean tests, no documentation ‣ Cutting edge tools

Slide 9

Slide 9 text

A Second Atomic Project: Eaton EMCB

Slide 10

Slide 10 text

A Second Atomic Project: Eaton EMCB ‣ Azure Services for Networking, Access Policies ‣ Azure Functions written in C# ‣ Backed by client internal API

Slide 11

Slide 11 text

A Second Atomic Project: Eaton EMCB ‣ Azure Services for Networking, Access Policies ‣ Azure Functions written in C# ‣ Backed by client internal API ‣ Device Firmware Code: Squirrel

Slide 12

Slide 12 text

A Second Atomic Project: Eaton EMCB ‣ Azure Services for Networking, Access Policies ‣ Azure Functions written in C# ‣ Backed by client internal API ‣ Device Firmware Code: Squirrel ‣ Major investment in dev ergonomics ‣ Lots and lots of tests ‣ Extremely well documented

Slide 13

Slide 13 text

Tell us about the last thing you built for class.

Slide 14

Slide 14 text

Tell us about the last thing you built for class. Would you call it good code?

Slide 15

Slide 15 text

Which of these two projects is better code? ArtPrize ‣ Serverless ‣ Lean tests, no documentation ‣ Cutting edge tools EMCB ‣ Major investment in dev ergonomics ‣ Lots and lots of tests ‣ Extremely well documented

Slide 16

Slide 16 text

What does that even mean?

Slide 17

Slide 17 text

You might think of Good Code as... ‣ Good formatting ‣ Comments ‣ Tabs v. spaces ‣ Unit tests?? !

Slide 18

Slide 18 text

But IRL we think a lot more about tradeoffs.

Slide 19

Slide 19 text

Tradeoffs you might be familiar with... ‣ Memory vs. performance optimization vs. code space ‣ Data structures and their various access patterns ‣ Horizontal vs. vertical scaling ‣ What else?

Slide 20

Slide 20 text

What about... ‣ Time ‣ Quality ! ‣ Correctness ‣ Brittleness

Slide 21

Slide 21 text

Questions you might have asked yourself ‣ "How do I get this turned in before midnight?" ‣ "How do I get in under the runtime cap?" ‣ "How do I do this????"

Slide 22

Slide 22 text

Questions you might have asked yourself ‣ "How do I get this turned in before midnight?" ‣ "How do I get in under the runtime cap?" ‣ "How do I do this????" That's what the circumstances demanded of you!

Slide 23

Slide 23 text

Questions we ask ourselves every day

Slide 24

Slide 24 text

"How do I get this in under budget?" ‣ This is mostly just a variant on the time thing ‣ This might look like: ‣ Buying time with money ‣ Compromising on tools ‣ Permitting known issues ‣ Where can I pay money instead of spending time? ‣ What can I compromise on toolwise?

Slide 25

Slide 25 text

"Who is gonna maintain this?" ‣ Shiny new tools v. industry standard ‣ Approachability & learning curve ‣ Investment in tests, automation

Slide 26

Slide 26 text

"How long is this gonna last?" ‣ Documentation ‣ Logging / Monitoring ‣ Upgrade requirements ‣ Modularity and reuse

Slide 27

Slide 27 text

Let's take a look at those two projects again.

Slide 28

Slide 28 text

"How do I get this in under budget?" ArtPrize ‣ Tight nonprofit budget ‣ Proof of concept Leads to... ‣ Lean tests and no documentation EMCB

Slide 29

Slide 29 text

"How do I get this in under budget?" ArtPrize ‣ Tight nonprofit budget ‣ Proof of concept Leads to... ‣ Lean tests and no documentation EMCB ‣ Budget? What budget? Leads to... ‣ Major investment in dev ergonomics

Slide 30

Slide 30 text

"Who is going to maintain this?" ArtPrize ‣ Atomic; senior team ‣ No client IT Leads to... ‣ Cutting edge tools ‣ Batteries-included devops via SAAS EMCB

Slide 31

Slide 31 text

"Who is going to maintain this?" ArtPrize ‣ Atomic; senior team ‣ No client IT Leads to... ‣ Cutting edge tools ‣ Batteries-included devops via SAAS EMCB ‣ Internal Eaton developers Leads to... ‣ C#, because that's what they use there ‣ Azure, because that's what they use there

Slide 32

Slide 32 text

"How long will it last?" ArtPrize ‣ Proof of concept ‣ Short event Leads to... ‣ Light, easy tests ‣ No documentation ‣ No component reuse EMCB

Slide 33

Slide 33 text

"How long will it last?" ArtPrize ‣ Proof of concept ‣ Short event Leads to... ‣ Light, easy tests ‣ No documentation ‣ No component reuse EMCB ‣ Indefinitely! ! ‣ Needs predictability Leads to... ‣ Most documented project ever ‣ Major investment in support tooling

Slide 34

Slide 34 text

This skill takes time. But you've always been doing it.

Slide 35

Slide 35 text

There's more to Good Code than comments and spaces.

Slide 36

Slide 36 text

You can start thinking like a lead... ...long before being crowned with a title. Ask yourself and your teammates: ‣ Is this the right time to refactor this code? ‣ Should I try to use an off-the-shelf component for this story? ‣ Should I spend the time on making this an abstract component?

Slide 37

Slide 37 text

No content