1-80 leveling guide
Why XP matters
~ # whoami
Fulvio Meden
Developer @ eMaze Networks
Student @ UniTS (information engineering)
XP?
eXperience Points?
I thought this was about software development...
XP
eXtreme Programming
xp
Is a discipline
- created by Kent Beck
- based on simplicity, feedback, courage
- aims to improve quality and responsiveness
xp
Some practices in random order:
- sustainable pace
- simple design
- pair programming
- TDD
- small iterations
- whole team
- integrate frequently
- more ...
XP
xp summary
- good ideas, very effective
- could be hard to introduce in some companies
- the success depends on people
- depending on people, could have drawbacks
why XP?
Looks like a bet (and something for managers).
Why should I be interested?
Most of these practices help in our professional growth.
NOTE: you don't need to "do XP" to use those practices.
pair programming
All code is created by two people working together at a single computer.
pair programming
pair programming
May sound odd, but two people working on a single workstation are as productive as two people working separately.
But they produce code of much higher quality!
pair programming
Not intended as mentoring, but cooperation as peers.
Nonetheless, everyone has different knowledge, at a different level.
There's always to learn from others and compare ideas!
pair rotation
Another practice is to swap the team's pairs every now and then.
This ensures that knowledge flows.
This also means that there is always more to learn, teach and refine, from more people.
pair programming
NOTE:- Getting it right is not easy. Might feel awkward at first
- It's a social skill
- Arguing and sparring is a good sign!
This is good This is not
test driven
test driven
Unit Tests:A unit test is an automated piece of code that invokes a unit of work in the system and then checks a single assumption about the behavior of that unit of work.
----- The Art of Unit Testing
test driven
Test Driven Development:Developing using tests as definitions of intent, purpose and functionality.
----- me
test driven
Test Driven Design:Designing using tests to prove abstraction effectiveness, and the capability of being testable as a driver.
----- me
test driven
How it works:- Tests are created first
- Functionality and its tests written by the same pair
- All tests are to be run as often as possible
- You are not done until all tests are green
- If you notice a missing test, add it now
- A line of code is added only if a test requires it
test driven
How it helps:A red test warns you immediately that you screwed up.
Having a tests that covers your back gives you more confidence.
More and more as you learn to write better tests.
test driven
How it helps:If you're not familiar with design or architecture, design for testability could be the first step.
It's just the tip of an iceberg in the sea of design knowledge, but it's still an important step!
test driven
How it helps:Unit tests are also precise and updated documentation and examples about functionality and constraints.
Reading a few well-written tests is by far more effective than trying to reverse-engineer a complex component or algorithm.
Spikes
Spikes
Spike solutions are potential solutions, written fast, simply and (often) ugly.
The purpose is to reducing risk, evaluating feasibility or discovering technical limitations.
Expect a spike to be thrown away after being used.
Spikes
Used to reduce risk, and being actually explorations and prototypes, they have very least risk per se.
Implementing a spike solution could be a good occasion to assess a new technology, methodology, language, tool.
Spikes
Even if it will not be adopted or you didn't have enough time to say you "learnt" it, you'll still have an opinion about it.
There is a huge variety of things out there, it's impossible to know everything.
But knowing many alternatives and having an idea about them is very important.
Collective ownership
Collective ownership
Every person in the team is responsible for the system's health.
There is no Master Programmer that takes all decisions.
Collective ownership
Everyone is encouraged to add ideas to the project.
This gives much responsibility, but also great freedom and power to the developers.
Collective ownership
Take courage and put yourself on the line!
This doesn't mean "Do a shit if you want to, someone else will fix it".
You are given great freedom, but use it wisely and respect teammates!
Collective ownership
Taking part in the game, you will eventually fail and get it wrong.
It's no blame nor sin, but when you are corrected by your seniors or the chief architect, learn your lesson and treasure it for the next time.
Retrospectives
Look at the past, and decide for the future
Retrospectives
A retrospective is a periodical meeting where team members make a summary for what worked and not during the project.
Then they exploit that insight to make decisions for the upcoming challenges.
Retrospectives
You are encouraged to have opinions and propose change.
Not only about the past, but also about other ideas that are being proposed now.
Retrospectives
Listen to other viewpoints.
The same event may be seen from different angles,
discover new optics.
Better criticism makes you a better developer.
Kaizen
改善
Continuous improvement, bit by bit
Kaizen
XP practices are filled with
opportunities for improvement.
Be it big or small, don't miss the chance
and value everything you learn.
thanks
leveling_guide_1_80_why_xp_matters
By Tsukihara Caligin
leveling_guide_1_80_why_xp_matters
- 3,956