Anton Keks
anton.keks@codeborne.com
Being a professional
(software developer)
Agile Saturday, 13.11.2010
2
Anton KeksAnton Keks
Co-founder ofCo-founder of CodeborneCodeborne
Lecturer atLecturer at Tallinn Technical UniversityTa...
IterativeIterative
NOT Big-BangNOT Big-Bang
AdaptableAdaptable
NOT PredictableNOT Predictable
TeamworkTeamwork
NOT Lone RangerNOT Lone Ranger
TestingTesting
NOT PrayingNOT Praying
SimplicitySimplicity
Maximizing the amount of work not doneMaximizing the amount of work not done
Software professional?
Professionalism in medicine
● Surgeon 1 does the same operation over and over in
his Beverly Hills clinic and makes a lot ...
Professionalism in software
● Picks a worthwhile problem to attack
● Has dedication to the end-user experience
● Impressiv...
SoftwareSoftware
CraftsmanshipCraftsmanship
SoftwareSoftware
Craftsmanship...Craftsmanship...
...the...the CodeborneCodeborne wayway
http://manifesto.softwarecraftsmanship.org
Thinking
Guessing
Patching
Coding
WTF
UNPROFESSIONAL
How to be a true professional?
Build & Integration ProblemsBuild & Integration Problems
●
““It works on my PC”It works on my PC”
●
Other developer has br...
The solution?
Automate everything!
Your build must be a single step process
Once you automate, you can do a lot!
Heavyweight
Lightweight
Complex
Simple
22
Frequent integrationFrequent integration
●
Common integration branch (mainline)Common integration branch (mainline)
●
C...
23
Continuous integrationContinuous integration
●
Regular automated builds of the softwareRegular automated builds of the ...
Hudson
(extensible continuous integration server)
Step-by-step installation
Go to: www.hudson-ci.org
Download: hudson.war
...
What Hudson does?
●
Runs and monitors your builds
● Cron-like or by polling the code repository
● Visualizes stats
●
Passed tests, test cove...
Next level checklist
✔ Accept the idea that automated test suite is not just about
testing; it is about proving the code w...
Technical debtTechnical debt
And don't forget paying theAnd don't forget paying the
At
We strive to be professional
software craftsmen
...and we are hiring!
job@codeborne.com
Being a Professional Software Developer
Upcoming SlideShare
Loading in …5
×

Being a Professional Software Developer

1,785 views

Published on

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.

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,785
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
32
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Being a Professional Software Developer

  1. 1. Anton Keks anton.keks@codeborne.com Being a professional (software developer) Agile Saturday, 13.11.2010
  2. 2. 2 Anton KeksAnton Keks Co-founder ofCo-founder of CodeborneCodeborne Lecturer atLecturer at Tallinn Technical UniversityTallinn Technical University Member of the board ofMember of the board of Agile EstoniaAgile Estonia ● Author ofAuthor of Angry IP ScannerAngry IP Scanner Strong believer inStrong believer in AgileAgile andand Open-sourceOpen-source
  3. 3. IterativeIterative NOT Big-BangNOT Big-Bang
  4. 4. AdaptableAdaptable NOT PredictableNOT Predictable
  5. 5. TeamworkTeamwork NOT Lone RangerNOT Lone Ranger
  6. 6. TestingTesting NOT PrayingNOT Praying
  7. 7. SimplicitySimplicity Maximizing the amount of work not doneMaximizing the amount of work not done
  8. 8. Software professional?
  9. 9. 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
  10. 10. 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
  11. 11. SoftwareSoftware CraftsmanshipCraftsmanship
  12. 12. SoftwareSoftware Craftsmanship...Craftsmanship... ...the...the CodeborneCodeborne wayway
  13. 13. http://manifesto.softwarecraftsmanship.org
  14. 14. Thinking Guessing Patching Coding WTF
  15. 15. UNPROFESSIONAL
  16. 16. How to be a true professional?
  17. 17. 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
  18. 18. The solution? Automate everything! Your build must be a single step process Once you automate, you can do a lot!
  19. 19. Heavyweight Lightweight
  20. 20. Complex Simple
  21. 21. 22 Frequent integrationFrequent integration ● Common integration branch (mainline)Common integration branch (mainline) ● Commit often!Commit often! – At leastAt least every few hoursevery few hours – Never hNever hold your changes for longerold 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”
  22. 22. 23 Continuous integrationContinuous integration ● Regular automated builds of the softwareRegular automated builds of the software – Recompile, run tests, redeploy, generateRecompile, run tests, redeploy, generate documentation and reportsdocumentation and reports – Software is packaged and is ready to runSoftware is packaged and is ready to run ● Discover conflicts: provides short feedbackDiscover conflicts: provides short feedback to developersto developers ● Offload longer running tasksOffload longer running tasks ● Constantly growing working systemConstantly growing working system
  23. 23. Hudson (extensible continuous integration server) Step-by-step installation Go to: www.hudson-ci.org Download: hudson.war Run: java -jar hudson.war Open: http://localhost:8080
  24. 24. What Hudson does?
  25. 25. ● 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?
  26. 26. 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
  27. 27. Technical debtTechnical debt And don't forget paying theAnd don't forget paying the
  28. 28. At We strive to be professional software craftsmen ...and we are hiring! job@codeborne.com

×