An overview of the way developers approach problems, for Entrepreneurs, Managers & Designers, to facilitate discussion and understanding. Developers are creative problem solvers who use words and logic to “model” stuff with objects, properties, methods, inheritance, composition, apis, and frameworks, to build: web sites, web apps, mobile apps, and iot in a repository on a stack with tools and tests at scale for our users.
2. Developers are
creative problem solvers who use words
and logic to “model” stuff with objects,
properties, methods, inheritance,
composition, apis, and frameworks,
to build: web sites, web apps, mobile
apps, and iot in a repository on a stack
with tools and tests at scale for our
users.
3. Creative Problem
Solvers
• Inventive
• Adaptive
• Curios
• Thoughtful
• Passionate
• Abstract
'Treat your developers like creative
workers – or watch them leave'
Jeff Lawson, Twilio CEO
“[Software engineering] is perhaps the
most creative field imaginable. It’s just
your thoughts and a screen waiting to be
filled with code. In that screen you can
create anything.”
Nick Malik, CEO
Vanguard Enterprise Architects
4. Who Use Words
• More than 690 Programming Languages
• Maybe 2300 depending on how you count
• Instructions for computers to read
• Best when written for people to read
“Any fool can write code that a computer can understand. Good
programmers write code that humans can understand”
Martin Fowler, Chief Scientist at ThoughtWorks
Founder of the Agile Software & Extreme Programming Movements
5. And Logic
• Logic is making decisions based on something
that ‘thing’ is what we call a ‘variable’
• The most basic logic is an ‘if’ statement
to check if the ‘variable’ contains a value
• Algorithms are sets of
logic that accomplish
a task like a bubble sort
or binary tree search
(collected into a ‘function’)
6. To “Model” Stuff
• Represent things in the outside world
• Into things in the inside world
7. With Objects
• Objects are things we’re trying to represent
usually figured out from modeling the problem
also called a class - a kind of thing
• Banana
8. Properties
• Properties are how you’d describe an object
also sometimes called attributes
• Banana.color or
Banana.ripeness or
Monkey.hunger
9. Methods
• Methods are how we manipulate an object
by attaching functions to an object
• Monkey.eat() or Monkey.eat(Banana)
10. Inheritance
• A class can inherit from another ‘parent’ class
• The child class (also called a subclass) gets all the
properties and methods defined on the parent
• This makes things more
efficient
• Mammal.eat()
Monkey < Mammal
Person < Mammal
• NOW BOTH CAN MONCH
11. Composition
• Assemble useful features that cross the
inheritance boundaries
• Cool because its very reusable
even across different codebases
• Tail.wiggle()
Monkey uses Tail
Snek uses Tail
12. APIs
• An application programming interface is a defined set of
objects and methods
• Defined by a third party to allow our code to interact with
their stuff – like an operating system letting us save a file
• Many modern services offer remote access to their apis to
allow us to get data or trigger jobs for them to do
13. Frameworks
• A collection of tools designed to make building a
particular kind of app easier
• An pre-assembled set of standardized parts to let
us focus on what’s unique about this project
• Simple things like buttons all the way to full login
systems with just a few steps or lines of code
15. Web Sites
• HTML for the content & structure
• CSS for the presentation & layout
• JavaScript for the interactivity
1.8 BILLION WEBSITES
Netcraft Survey
16. Web Apps
• Building desktop-class application experiences via
a browser and implemented with web technologies
HTML - CSS - JavaScript
• Deliver to a broader audience than a particular
operating system
• Think GMAIL!
17. Mobile Apps
• Applications delivered on mobile devices
• Fundamentally limited by screen size, attention
span and low bandwidth
• Touch-oriented user experiences
• Implications of always on
18. IOT
• The internet of things will connect more new smart
devices as we put smarts into everything we use
• 20 billion connected ‘smart things’ by 2020
• Implications of crappy security
• Even more of an always on presence
19. In a Repository
• The code lives in a directory called a repository
• A history of the code changes is stored in the repository
too (usually with a tool called git)
• When code changes are ready we ‘commit’ them into
the repository (and we can revert to previous commits if
we make a mistake)
• A copy of the repository usually lives on a server
someplace too
like GitHub
20. On a Stack
• The software is ‘deployed’ onto a server that provide
many layers of functionality
• The application sits between
those layers to connect the
user and their data
21. With Tools
• Code is written in text files, so the most
fundamental tool is the text editor
• Bigger text editors with integrated code cleanup or
parent object look-ups or whatever are called
integrated development environments (or IDE)
• Some tools provide graphic interfaces for building
layouts or modifying databases
• There are tools for visually building API services
22. And Tests
• Tests make new code better by considering the
edge cases
• Tests make new code safer because the tests show
you didn’t break anything else in the system
• Tests make it easier to cleanup old code — called
refactoring
• Tests are the only way to sleep at night
23. At Scale
• We can build a house or we can build a skyscraper,
but we can’t use the same foundation on both
24. For Our Users
• Every decision is about what the user experiences,
and how that delivers value for that user
• That needs to be the top priority and should be part
of every decision we make together as a team