The document outlines an agenda for a meeting on software craftsmanship organized by a group called PuneSoftwareCraftsmanship. The agenda includes discussions on professionalism in software development, software entropy, cyclomatic complexity as a measure of code quality, good practices like maintaining clean code, and a vision for building a community of skilled software craftspeople.
14. The world we live in
14
Today, software has a large
role in shaping human life
experiences
Medicine, government,
industry, commerce,
entertainment, etc
Good software = good
outcomes for human beings*
Inversely, bad software = bad
outcomes for human beings
A challenging time for
Indian IT (protectionism,
competition, automation)
A lot of entry-level jobs will
vanish without us reinventing
ourselves in multiple fronts
Software quality including
maintainability is becoming
a centrepiece in business
strategies
Responding to changes
ahead of competition
requires the ability to make
quick software changes
Higher lifetime profit
(software is typically
maintained for 10 years
according to studies)
Reliability and efficiency
essential to sustain and grow
businesses
15. Our world
needs
software
craftsmen
15
Efficient – Build and deliver great
solutions when they are needed within
budget
Reliable – great quality all the time!
Integrity – protect the users and
customers, do the right thing!
Knowledgeable – capable of building
cutting-edge solutions that give a
competitive edge to employers and
customers
23. Bad news!
You are experiencing entropy!
Do you find it more and more difficult to maintain your codebase?
Do you find your teams taking more and more time for doing similar work as time
goes?
Do you find it harder and harder to give a reasonably accurate estimate for work
items?
Do you find your teams become more and more hesitant to change code?
26. Cyclomati
c
complexit
y
26
• Developed by Thomas J. McCabe, Sr.
in 1976
• A metric used to indicate the
complexity of a program
• A measure of the number of linearly
independent paths through a program
• The simple way to calculate
cyclomatic complexity for a method
• Count of branches (IF, WHILE, DO, ) +
count of CASE statements + 1
• As a thumb rule, favor low over high
complexity
• Easier to understand
• Easier to test
• Easier to maintain
31. Reducing complexity
• Extract method
• Steps in algorithm
• Similar Boolean checks (repeated conditionals)
• Tell, don’t ask principle
• Instead of check-and-ask, just tell!
• Use the right data structure
• Dictionaries, sets, etc
• Same level of abstraction in same code block
• Separation of concerns (SOC)
31
32. We’re going to do
something very interesting
with what we’ve learned
today.
For now, let’s sip over it
32
33. A day in
developer’s life.
33
Let’s look at a code
base and demo of a
sample app
<link to github here>
34. Ourvision
Build a rock-solid group of
motivated software
craftsmen who will raise the
bar continuously for our
profession!
34
35. Our mission
35
Learn & practice
▪ Professionalism for
software professionals
▪ Software
craftsmanship
▪ Technical excellence
Develop change agents
▪ Knowing what is good
is one thing; convincing
others is a totally
different game!
▪ Capability to drive
improvements based
on data
o Cost of
maintainability (lack
of)
o Measurement of
maintainability
o Agility (responding to
change, automated
QA)
Support adoption
▪ Facilitate awareness
and Q&A sessions for
organizations and
teams
▪ Define and establish
reusable awareness
and training material
▪ Facilitate large-scale
events, conferences, &
competitions
▪ Inspirational talks, code
retreats, meetup for
student and
professionals (example
– what Technogise
does)