Software Engineering 101
Odessa 2016
Hello, I am Alex
Self-taught
FullStack Engineer
Web Frontend Expert
Mentor
TopTal
Upwork Pro
Freelance
Freelance
Freelance
Startup
Startup
Pet project
Pet project
Pet project
Pet project
Pet project
Learning
Stay curious
Ask questions
Tell things
Knowledge
vs
skills
Knowledge
- Won't feed you today
- Opportunities
- More influence
Strategic Value
Skills
- Immediate value and benefits
- Get Stuff Done
- More freedom
Tactical Value
How-To
How-To
- Analyse breadth-first
- Grasp the basics
- Go deeper when you are in the context
Hacks
Hacks
- Never learn alone!
- Mentor others!
- Spaced Repetitions
- Learn How To Learn
- ABC = Always Be Coding
Spaced Repetitions
Hype
Hype
Tech Spiral
Learn from History
Hype
Follow the trends only if you are an expert in the niche
Hype
Only bet on strategical investments
Yes, I am sure I will do this in 5 years and pursue this goal whatever it costs
Hype
Ignore “moving train”
and “become pro in 21 days!”
Say NO
Failures
Do not be afraid
2 steps
Step #1
Learn first how to cope with failures yourself
-
How do you feel about it?
-
How do you learn from it?
-
How do you fix the consequences?
Step #2
Learn from other people failures
-
Networking!
-
Conferences, Meetups, Chat rooms
-
Case Studies
-
Share Failures!
Failure is the source of experience
Experience is the source of intuition
Success is a side effect
You cannot escape it
Failures and Edge Cases
are essential to our craft
Be responsible!
Respond to failures
Safety Nets / Plan B
Design for Failure
vs
Happy Path
Technologies
Technologies
does not matter!
...as much as we want them to
Good software
is done by good
software engineering teams
Project success has
no correlation
with used technologies
Pick any technology
pragmatically
Pragmatic arguments
logically fit
your context
Pragmatic arguments
are based on practical
rather than theoretical
considerations
My team is proficient with it
People are excited by this technology
Easy to find and add new people
Helps to do things right
Refactoring
Has no direct
business value
Should not be
a part of the backlog
Opportunistic Refactoring
The only one working method
Rule #0:
never talk about refactoring
Rule #1:
Refactoring is an essential part of a task
Rule #2:
Boy Scout Rule
Boy Scout Rule
Always leave the code behind
in a better state
than you found it
Learn
how to work with
Legacy Software
Communications
Max info in Min time
Rule #0:
Do not explain the answer
before
answering the question
Rule #1:
Start with
the single most important
fact
Talk to hear,
not to be
understood
Prove to
understand
Not to "be right"
Not to "be better"
Constructive criticism
Close the loop: offer some options
Constructive: help them become better
Stop your judgement
the ultimate relationship destroyer
the ultimate happiness killer
Give it 5 minutes
Be the last one to provide a summary
Active Listening
Active Listening
Eye contact
Relaxed Attention
Imagine things
No interruptions and suggestions
Body language
Feedback
Train your expressiveness
Blogging
Chats
Talk to people
Processes
Agile and XP
Software Craftsmanship
Well-Crafted Software > working software
Steadily adding Value > responding to change
A Community of Professionals > individuals and interactions
Productive Partnerships > customer collaborations
Project Management
... is still a mess
Scrum vs Kanban
Scrum
"Agency - Customer" model
Warzone methodology
Expert-Driven micromanagement
Kanban
Pull-based model
Involves everyone
Quotas
Eliminating Waste
Build your own processes
We are still "not there"
Optimise for
Sustainable and reliable progress
Getting things out of your head
Fighting complexity
Changeability
Estimations
Task vs Project
Task Estimation
No more than 2 weeks!
Include all phases
Task Estimation Phases
Implementation
Testing
Logging / Metrics
Design / Refactoring
Implementation is what
can be estimated
and only optimistically
Task Estimation
30% Implementation
30% Testing
10% Logging / Metrics
30% Design / Refactoring
Realistic estimate = 3 * implementation time
Multiplication Factor
will vary
based on experience
Project Estimation
Divide & Conquer:
Epics, Stories, Tasks
Make optimistic task estimates
Add time boxed investigations
Include risks
4 weeks per story max, otherwise investigate!
Project Estimation
Realistic path =
3.14 * Optimistic path + 2 weeks
Risks
Bus Factor
Illness
Fuck ups
Vacations
Holidays
Design Mistakes
Thanks!
Take Aways
SE101: Odessa 2016 edition
By Alexey Migutsky
SE101: Odessa 2016 edition
- 2,722