being a professional software developer

29
Anton Keks [email protected] Being a professional (software developer) Agile Saturday, 13.11.2010

Upload: anton-keks

Post on 26-May-2015

1.514 views

Category:

Technology


2 download

DESCRIPTION

Talk from Agile Saturday 3 event in Estonia. It is about being professional in general as well as following agile best practices, such as build automation and continuous integration.

TRANSCRIPT

Page 1: Being a Professional Software Developer

Anton [email protected]

Being a professional(software developer)

Agile Saturday, 13.11.2010

Page 2: Being a Professional Software Developer

2

Anton KeksAnton KeksCo-founder of Co-founder of CodeborneCodeborne

Lecturer at Lecturer at Tallinn Technical UniversityTallinn Technical University

Member of the board of Member of the board of Agile EstoniaAgile Estonia●

Author of Author of Angry IP ScannerAngry IP Scanner

Strong believer inStrong believer inAgileAgile and and Open-sourceOpen-source

Page 3: Being a Professional Software Developer

IterativeIterativeNOT Big-BangNOT Big-Bang

Page 4: Being a Professional Software Developer

AdaptableAdaptableNOT PredictableNOT Predictable

Page 5: Being a Professional Software Developer

TeamworkTeamworkNOT Lone RangerNOT Lone Ranger

Page 6: Being a Professional Software Developer

TestingTestingNOT PrayingNOT Praying

Page 7: Being a Professional Software Developer

SimplicitySimplicityMaximizing the amount of work not doneMaximizing the amount of work not done

Page 8: Being a Professional Software Developer

Software professional?

Page 9: Being a Professional Software Developer

Professionalism in medicine● Surgeon 1 does the same operation over and over in

his Beverly Hills clinic and makes a lot of money● Surgeon 2 is competent in all the standard

operations but in addition has developed an innovative procedure and, because of the time devoted to innovation, makes less money than Surgeon 1

● Surgeon 3 has developed an innovative procedure and practices it regularly, but also makes time for occasional travel to France, China, Japan, and Argentina to teach other doctors how to practice the innovation

Credit http://tinyplanet.ca/projects/professionalism.html

Page 10: Being a Professional Software Developer

Professionalism in software

● Picks a worthwhile problem to attack● Has dedication to the end-user experience● Impressive competence, Expert, Master● High quality work, Very productive● High standards, Attitude, Best practices● Learns, Innovates● Teaches (by example, code-review, face-to-face)

Craftsmanship

Page 11: Being a Professional Software Developer

Software Software CraftsmanshipCraftsmanship

Page 12: Being a Professional Software Developer

Software Software Craftsmanship...Craftsmanship...

...the ...the CodeborneCodeborne way way

Page 13: Being a Professional Software Developer

http://manifesto .softw

a recraft smansh ip.org

Page 14: Being a Professional Software Developer

Thinking

Guessing

Patching

Coding

WTF

Page 15: Being a Professional Software Developer

UNPROFESSIONAL

Page 16: Being a Professional Software Developer

How to be a true professional?

Page 17: Being a Professional Software Developer
Page 18: Being a Professional Software Developer

Build & Integration ProblemsBuild & Integration Problems

● ““It works on my PC”It works on my PC”● Other developer has broken everythingOther developer has broken everything● Release Management necessityRelease Management necessity● Software build is a separate taskSoftware build is a separate task

– Delayed integrationDelayed integration● Installation to production failsInstallation to production fails

– During the night, of courseDuring the night, of course

Page 19: Being a Professional Software Developer

The solution?

Automate everything!Your build must be a single step process

Once you automate, you can do a lot!

Page 20: Being a Professional Software Developer

Heavyweight

Lightweight

Page 21: Being a Professional Software Developer

Complex

Simple

Page 22: Being a Professional Software Developer

22

Frequent integrationFrequent integration

● Common integration branch (mainline)Common integration branch (mainline)● Commit often!Commit often!

– At least At least every few hoursevery few hours– Never hNever hold your changes for longer old your changes for longer

than a daythan a day● No one works with obsolete codeNo one works with obsolete code

““Pay me now or pay me more later”Pay me now or pay me more later”

Page 23: Being a Professional Software Developer

23

Continuous integrationContinuous integration● Regular automated builds of the softwareRegular automated builds of the software

– Recompile, run tests, redeploy, generateRecompile, run tests, redeploy, generatedocumentation and reportsdocumentation and reports

– Software is packaged and is ready to runSoftware is packaged and is ready to run● Discover conflicts: provides short feedback Discover conflicts: provides short feedback

to developersto developers● Offload longer running tasksOffload longer running tasks● Constantly growing working systemConstantly growing working system

Page 24: Being a Professional Software Developer

Hudson(extensible continuous integration server)

Step-by-step installation

Go to: www.hudson-ci.orgDownload: hudson.war

Run: java -jar hudson.warOpen: http://localhost:8080

Page 25: Being a Professional Software Developer

What Hudson does?

Page 26: Being a Professional Software Developer

● Runs and monitors your builds● Cron-like or by polling the code repository

● Visualizes stats● Passed tests, test coverage, compiler warnings, etc

● Distributes builds across multiple machines● Builds software on multiple architectures● Can fully manage the whole release process

What Hudson does?

Page 27: Being a Professional Software Developer

Next level checklist

✔ Accept the idea that automated test suite is not just about testing; it is about proving the code works

✔ Anything that can be automated, automate it

✔ Never accept the idea of that's the way its done here

✔ Push back any attempt to make technical decision/estimation by non-tech people

✔ Share knowledge - anyone can get hit by a truck

✔ Working software is more important than optimizing metrics for performance reviews

Page 28: Being a Professional Software Developer

Technical debtTechnical debtAnd don't forget paying theAnd don't forget paying the

Page 29: Being a Professional Software Developer

At

We strive to be professionalsoftware craftsmen

...and we are [email protected]