Skip to content

Latest commit

 

History

History
682 lines (406 loc) · 76.2 KB

File metadata and controls

682 lines (406 loc) · 76.2 KB
marp true
theme gaia
<!-- size 4:3 -->
<!-- width 1920 -->
<!-- height 1080 -->
<style> { background-color: white; } * { color: black } </style>

Project Development Guide

fivos.doganis@gmail.com









bg w:1600px contrast:110%


<style scoped> { background-color: #3b86cb; } a { color: white } </style>

💋


K eep

I t

S imple

S tupid

bg right:72% contrast:180% h:977px




"Simplify, Simplify, Simplify"

Steve Jobs


<style scoped> { background-color: #3b86cb; } a { color: white } </style>

🔮


Y ou

A in't

G onna

N eed

I t

Code for now, not for the future. Refactor often.

bg right:49% height:1200px contrast:130%


<style scoped> { background-color: #3b86cb; } a { color: white } </style>

🐾


D on't

R epeat

Y ourself


!= WET :

Write Everything Twice

bg right:68% w:790px


No Copy Paste!


Copy Paste == Code Debt

Copy Paste == Refactoring Opportunity


Copy Paste


Stop!

Think

Refactor Now!

bg right:60% height:720px


<style scoped> { background-color: #3b86cb; } a { color: white } </style>

The art of staying in the zone

by Mihály Csíkszentmihályi

📈


bg fit


bg h:1060px


<style scoped> { background-color: #3b86cb; } a { color: white } </style>

Stuck?

Fight procrastination

🥋


TODO ;)


Fighting procrastination

  • OK to fail
    • "Die and retry" ➡️ Code and refactor
  • Decompose into micro actions
    • Github issues + tags ("easy", "good first issue", etc.)
  • Start just for 5 minutes
    • identify easy issue
    • fix it to get the ball rolling
  • Adjust skills and difficulty to stay in the zone

<style scoped> { background-color: #3b86cb; } a { color: white } </style>

MVP: Minimum Viable Product


bg w:1000px saturation:120% hue-rotate:220deg


<style scoped> { background-color: #3b86cb; } a { color: white } </style>

A Non-Linear Process

💡


bg contrast:120%


bg contrast:120% height:1240px


<style scoped> { background-color: #3b86cb; } a { color: white } </style>

UX Basics

What makes a good User Experience?

🤩


<style scoped> table { height: 80%; width: 100%; } th { background-color: #3b86cb; } </style>

Use objective criteria

SUBJECTIVE OBJECTIVE
INTUITIVE EFFICIENT: FAST, ERROR PROOF
NATURAL SIMPLE
REALISTIC PRECISE

Form ➡️ function

  • button 🎹
  • door knob 🚪
  • hammer 🔨

Discoverability

  • user guesses right

bg right


bg w:600px contrast:110%


bg right:38% w:1440px


bg 125%


bg 101%



Find measurable KPIs*

Examples

  • How long does the user take to reach the target?
  • How many mistakes are made before succeeding at a task?
  • How accurate is the result vs a reference?

<style scoped> { background-color: #3b86cb; } a { color: white } </style>

Architecture Basics

🧱


  • Builder, Observer, State can be interesting
  • ⚠️ avoid Singletons!
  • adapt the pattern to your code, don't use as-is!

bg h:650px


ECS

Entity Component System

bg right fit vertical bg right fit

Articles


<style scoped> { background-color: #3b86cb; } a { color: white } </style>

Final tips

To keep your mind and code sane

📝


  • document the "why?"
    • at high-level
    • if needed
  • avoid documentation altogether
    • write tests, examples, tutorials instead
    • write code as documentation

👇


Code as documentation

  • BAD
const float a = 9.81; //gravitational force
float b = 5; //time in seconds
float c = (1/2)*a*(b^2) //multiply the time and gravity together to get displacement.
  • GOOD
float computeDisplacement(float time_s) {
   const float g = 9.81;
   float displacement = (1 / 2) * g * (time_s ^ 2);
   return displacement;
}

bg 85%


  • "What is this object? What does it do?"
  • Object, variable ➡️ noun
    • user, accountNumber, customerEmail
  • Function, method ➡️ verb
    • user.login(), shutDown()
  • Boolean ➡️ adjective
    • allowed, disabled
    • user.active()
    • user.isActive()

  • convey intention var d // elapsed time in days ❌ vs var elapsedTime_days
  • name arguments too! void copyChars(char a1[], char a2[])void copyChars(char source[], char destination[])
  • pronunciation (avoid abbreviations) genymdms ❌ vs generationTimestamp
  • no magic numbers (keep your code searchable and maintainable) s / 5 ❌ vs task / WORK_DAYS_PER_WEEK
  • use camelCase

Any fool can write code that a computer can understand. Good programmers write code that humans can understand.

Martin Fowler


<style scoped> { background-color: #3b86cb; } * { color: white } </style>

The End!

👋