8th
July,2016, DevCorner Meetup,
Majesco New Development Centre, Navi Mumbai, India
Nirmalya Sengupta 1
Software Craftsmanship: the case
DevCorner Meet Up
Majesco New Development Centre
Navi Mumbai, India
Nirmalya Sengupta
@baatchitweet
blogoloquy.blogspot.com
8th
July,2016, DevCorner Meetup,
Majesco New Development Centre, Navi Mumbai, India
Nirmalya Sengupta 2
Let's see if we agree
“A software system can best be
designed if the testing is interlaced
with the design instead of being
used after the design”
8th
July,2016, DevCorner Meetup,
Majesco New Development Centre, Navi Mumbai, India
Nirmalya Sengupta 3
A warm Up Quiz
“A software system can best be designed
if the testing is interlaced with the design
instead of being used after the design”
- Who and When???
8th
July,2016, DevCorner Meetup,
Majesco New Development Centre, Navi Mumbai, India
Nirmalya Sengupta 4
A warm Up Quiz
“A software system can best be designed
if the testing is interlaced with the design
instead of being used after the design”
- Alan Perlis, 1968
(First recipient of Turing Award)
8th
July,2016, DevCorner Meetup,
Majesco New Development Centre, Navi Mumbai, India
Nirmalya Sengupta 5
A walk back in past..
Garmisch, Germany
NATO Science Conference, October'1968
8th
July,2016, DevCorner Meetup,
Majesco New Development Centre, Navi Mumbai, India
Nirmalya Sengupta 6
Observations
● “The dissemination of knowledge is of obvious
value — the massive dissemination of error-
loaded software is frightening.”
● “Almost invariably some early decisions, thought at the
time to have been clearly correct, will turn out to have
been premature.”
8th
July,2016, DevCorner Meetup,
Majesco New Development Centre, Navi Mumbai, India
Nirmalya Sengupta 7
We have tried to solve the problem..
● Model
● Waterfall
● Prototyping
● Incremental
● Spiral
● Agile
● Frameworks
● PSP
● RAD
● RUP
● XP
● Scrum
But have we?
8th
July,2016, DevCorner Meetup,
Majesco New Development Centre, Navi Mumbai, India
Nirmalya Sengupta 8
Bigger projects are vulnerable!
8th
July,2016, DevCorner Meetup,
Majesco New Development Centre, Navi Mumbai, India
Nirmalya Sengupta 9
Agile projects shine!
8th
July,2016, DevCorner Meetup,
Majesco New Development Centre, Navi Mumbai, India
Nirmalya Sengupta 10
Software Quality and stakeholders
● For Purchaser
– Correctness,Reliability,Integrity,Security,Timliness,Cost
● For User
– Correctness,Robustness,Ease of Use,Speed of
response
● For System Owner/Manager
– Ease of installation,Resource consumption,
Housekeeping
● For Developers
– Integrity, Predictability,Ease of reuse, Ease of
modification
8th
July,2016, DevCorner Meetup,
Majesco New Development Centre, Navi Mumbai, India
Nirmalya Sengupta 11
Provider of quality
What is it that we need to ensure that quality is built in the
software, for the right stakeholder, to the right extent and at
the right cost?
A properly crafted software solution
We need software crafts(wo)men
8th
July,2016, DevCorner Meetup,
Majesco New Development Centre, Navi Mumbai, India
Nirmalya Sengupta 12
Craftspersons
● Craft
– An activity involving skill in making things by hand:
(Oxford Dictionary)
● Historical background
– Guilds in madieval Europe and Indian subcontinent
● Go through stages
– Masters, Journeymen, Apprentices
● Professional associations, often enjoying patronage and
financial help from Kings
8th
July,2016, DevCorner Meetup,
Majesco New Development Centre, Navi Mumbai, India
Nirmalya Sengupta 13
The intent
8th
July,2016, DevCorner Meetup,
Majesco New Development Centre, Navi Mumbai, India
Nirmalya Sengupta 14
Software Craftsmanship
● No more manufacturing metaphor
● Not just 'good enough' software
● Focus back on people and their skills
● Concentrate on shipping software, cleaning it up and then
evolving it
● Requires structure of Masters, Journeymen and
Apprentices
Pete McBreen, Software Craftsmanship
8th
July,2016, DevCorner Meetup,
Majesco New Development Centre, Navi Mumbai, India
Nirmalya Sengupta 15
What enthuses craftspersons
● Pride in her own work
● A consistent and continued view of the whole deliverable
● A direct and meaningful interaction with customers/users
● Appreciation for doing a good job, 'for its own sake'
● Creating, Finding, Using, Improving tools
● Opportunity to deal with ambiguity and taking considered
decisions (learning and gaining insights)
● Commendation from peers and community
8th
July,2016, DevCorner Meetup,
Majesco New Development Centre, Navi Mumbai, India
Nirmalya Sengupta 16
Craftspersons are social creatures
● Apprentice
– Inward-looking, Strive to be better, complete small tasks, work with
journeyman, review work of master, demonstrate progress
● Journeyman
– Has worked with Masters for a considerable time, Inward-looking,
Outward-looking, Train Apprentices, Communicate with multiple Masters
and their teams, Deepens and widens her portfolio, Mentors Apprentices
● Master
– Immensely experienced in delivering useful software, Has
infectious enthusiasm and passion for the craft, Mentors
Journeymen and Apprentices, Innovates, Provides ideas and
breakthroughs, Is recognised by Users/Customers/Peers
8th
July,2016, DevCorner Meetup,
Majesco New Development Centre, Navi Mumbai, India
Nirmalya Sengupta 17
We, the Managers should:
● Learn to recognize craft and passion
● Facilitate, Communicate, participate
● Spot Masters and Journeymen and let them flourish
● Think like a programmer does: environment, tools,
technique, build
● Be ready to dirty our hands (ex: why cannot you write
executable test-cases?)
● Remember that more complexity and scale ==> Few people
with more skills (and not more people with average skill)
8th
July,2016, DevCorner Meetup,
Majesco New Development Centre, Navi Mumbai, India
Nirmalya Sengupta 18
We, Software Craftspersons will:
● Be and remain proud of and passionate about our work
(leave our signatures)
● Be humble to learn continually
● Be attentive of the value of what we are delivering
(someone is paying for it)
● Be accountable for our work
● Be sharing with the community
● Be owners of our own careers (your employer is not)
8th
July,2016, DevCorner Meetup,
Majesco New Development Centre, Navi Mumbai, India
Nirmalya Sengupta 19
Epilogue
● The most important outcome of a software project is the
code
● People produce software, not processes
● Passion and pride of a skilled person are her best assets
● Mentors can contribute to the team the most
● Deliberately practice your craft
● Our career is in our hands
8th
July,2016, DevCorner Meetup,
Majesco New Development Centre, Navi Mumbai, India
Nirmalya Sengupta 20
A thought to think about...
“Every program has (at least) two purposes: the
one for which it was written, and another for which
it wasn't.” - Alan Perlis
8th
July,2016, DevCorner Meetup,
Majesco New Development Centre, Navi Mumbai, India
Nirmalya Sengupta 21
Last minute attempt of self-selling
●
Old warrior in the battle
● Began with 'C' programming on Unix
● Remained on Unix (Linux) since
●
Programmed (created enough bugs, some were never fixed) in
'C', 'C++','Java', 'Scala'
● Middleware (CORBA and ..), Credit Card Authorisation Protocol,
Multiplayer Online Gaming, Massive set of CDR processing
(Telecom), Claim Processing (big data), APIs for Mobile
applications
●
Current area of interest (with wish to become a journeyman):
Stream Processing (Apache Flink), IoT middleware, Scala, Akka,
Pony

A case for Code craftsmanship

  • 1.
    8th July,2016, DevCorner Meetup, MajescoNew Development Centre, Navi Mumbai, India Nirmalya Sengupta 1 Software Craftsmanship: the case DevCorner Meet Up Majesco New Development Centre Navi Mumbai, India Nirmalya Sengupta @baatchitweet blogoloquy.blogspot.com
  • 2.
    8th July,2016, DevCorner Meetup, MajescoNew Development Centre, Navi Mumbai, India Nirmalya Sengupta 2 Let's see if we agree “A software system can best be designed if the testing is interlaced with the design instead of being used after the design”
  • 3.
    8th July,2016, DevCorner Meetup, MajescoNew Development Centre, Navi Mumbai, India Nirmalya Sengupta 3 A warm Up Quiz “A software system can best be designed if the testing is interlaced with the design instead of being used after the design” - Who and When???
  • 4.
    8th July,2016, DevCorner Meetup, MajescoNew Development Centre, Navi Mumbai, India Nirmalya Sengupta 4 A warm Up Quiz “A software system can best be designed if the testing is interlaced with the design instead of being used after the design” - Alan Perlis, 1968 (First recipient of Turing Award)
  • 5.
    8th July,2016, DevCorner Meetup, MajescoNew Development Centre, Navi Mumbai, India Nirmalya Sengupta 5 A walk back in past.. Garmisch, Germany NATO Science Conference, October'1968
  • 6.
    8th July,2016, DevCorner Meetup, MajescoNew Development Centre, Navi Mumbai, India Nirmalya Sengupta 6 Observations ● “The dissemination of knowledge is of obvious value — the massive dissemination of error- loaded software is frightening.” ● “Almost invariably some early decisions, thought at the time to have been clearly correct, will turn out to have been premature.”
  • 7.
    8th July,2016, DevCorner Meetup, MajescoNew Development Centre, Navi Mumbai, India Nirmalya Sengupta 7 We have tried to solve the problem.. ● Model ● Waterfall ● Prototyping ● Incremental ● Spiral ● Agile ● Frameworks ● PSP ● RAD ● RUP ● XP ● Scrum But have we?
  • 8.
    8th July,2016, DevCorner Meetup, MajescoNew Development Centre, Navi Mumbai, India Nirmalya Sengupta 8 Bigger projects are vulnerable!
  • 9.
    8th July,2016, DevCorner Meetup, MajescoNew Development Centre, Navi Mumbai, India Nirmalya Sengupta 9 Agile projects shine!
  • 10.
    8th July,2016, DevCorner Meetup, MajescoNew Development Centre, Navi Mumbai, India Nirmalya Sengupta 10 Software Quality and stakeholders ● For Purchaser – Correctness,Reliability,Integrity,Security,Timliness,Cost ● For User – Correctness,Robustness,Ease of Use,Speed of response ● For System Owner/Manager – Ease of installation,Resource consumption, Housekeeping ● For Developers – Integrity, Predictability,Ease of reuse, Ease of modification
  • 11.
    8th July,2016, DevCorner Meetup, MajescoNew Development Centre, Navi Mumbai, India Nirmalya Sengupta 11 Provider of quality What is it that we need to ensure that quality is built in the software, for the right stakeholder, to the right extent and at the right cost? A properly crafted software solution We need software crafts(wo)men
  • 12.
    8th July,2016, DevCorner Meetup, MajescoNew Development Centre, Navi Mumbai, India Nirmalya Sengupta 12 Craftspersons ● Craft – An activity involving skill in making things by hand: (Oxford Dictionary) ● Historical background – Guilds in madieval Europe and Indian subcontinent ● Go through stages – Masters, Journeymen, Apprentices ● Professional associations, often enjoying patronage and financial help from Kings
  • 13.
    8th July,2016, DevCorner Meetup, MajescoNew Development Centre, Navi Mumbai, India Nirmalya Sengupta 13 The intent
  • 14.
    8th July,2016, DevCorner Meetup, MajescoNew Development Centre, Navi Mumbai, India Nirmalya Sengupta 14 Software Craftsmanship ● No more manufacturing metaphor ● Not just 'good enough' software ● Focus back on people and their skills ● Concentrate on shipping software, cleaning it up and then evolving it ● Requires structure of Masters, Journeymen and Apprentices Pete McBreen, Software Craftsmanship
  • 15.
    8th July,2016, DevCorner Meetup, MajescoNew Development Centre, Navi Mumbai, India Nirmalya Sengupta 15 What enthuses craftspersons ● Pride in her own work ● A consistent and continued view of the whole deliverable ● A direct and meaningful interaction with customers/users ● Appreciation for doing a good job, 'for its own sake' ● Creating, Finding, Using, Improving tools ● Opportunity to deal with ambiguity and taking considered decisions (learning and gaining insights) ● Commendation from peers and community
  • 16.
    8th July,2016, DevCorner Meetup, MajescoNew Development Centre, Navi Mumbai, India Nirmalya Sengupta 16 Craftspersons are social creatures ● Apprentice – Inward-looking, Strive to be better, complete small tasks, work with journeyman, review work of master, demonstrate progress ● Journeyman – Has worked with Masters for a considerable time, Inward-looking, Outward-looking, Train Apprentices, Communicate with multiple Masters and their teams, Deepens and widens her portfolio, Mentors Apprentices ● Master – Immensely experienced in delivering useful software, Has infectious enthusiasm and passion for the craft, Mentors Journeymen and Apprentices, Innovates, Provides ideas and breakthroughs, Is recognised by Users/Customers/Peers
  • 17.
    8th July,2016, DevCorner Meetup, MajescoNew Development Centre, Navi Mumbai, India Nirmalya Sengupta 17 We, the Managers should: ● Learn to recognize craft and passion ● Facilitate, Communicate, participate ● Spot Masters and Journeymen and let them flourish ● Think like a programmer does: environment, tools, technique, build ● Be ready to dirty our hands (ex: why cannot you write executable test-cases?) ● Remember that more complexity and scale ==> Few people with more skills (and not more people with average skill)
  • 18.
    8th July,2016, DevCorner Meetup, MajescoNew Development Centre, Navi Mumbai, India Nirmalya Sengupta 18 We, Software Craftspersons will: ● Be and remain proud of and passionate about our work (leave our signatures) ● Be humble to learn continually ● Be attentive of the value of what we are delivering (someone is paying for it) ● Be accountable for our work ● Be sharing with the community ● Be owners of our own careers (your employer is not)
  • 19.
    8th July,2016, DevCorner Meetup, MajescoNew Development Centre, Navi Mumbai, India Nirmalya Sengupta 19 Epilogue ● The most important outcome of a software project is the code ● People produce software, not processes ● Passion and pride of a skilled person are her best assets ● Mentors can contribute to the team the most ● Deliberately practice your craft ● Our career is in our hands
  • 20.
    8th July,2016, DevCorner Meetup, MajescoNew Development Centre, Navi Mumbai, India Nirmalya Sengupta 20 A thought to think about... “Every program has (at least) two purposes: the one for which it was written, and another for which it wasn't.” - Alan Perlis
  • 21.
    8th July,2016, DevCorner Meetup, MajescoNew Development Centre, Navi Mumbai, India Nirmalya Sengupta 21 Last minute attempt of self-selling ● Old warrior in the battle ● Began with 'C' programming on Unix ● Remained on Unix (Linux) since ● Programmed (created enough bugs, some were never fixed) in 'C', 'C++','Java', 'Scala' ● Middleware (CORBA and ..), Credit Card Authorisation Protocol, Multiplayer Online Gaming, Massive set of CDR processing (Telecom), Claim Processing (big data), APIs for Mobile applications ● Current area of interest (with wish to become a journeyman): Stream Processing (Apache Flink), IoT middleware, Scala, Akka, Pony