Utilising Guilds to Develop & Support a Culture of Research
CodeCraftsmanshipMeetUp
1. 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
2. 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”
3. 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???
4. 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)
5. 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
6. 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.”
7. 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?
10. 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
11. 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
12. 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
14. 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
15. 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
16. 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
17. 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)
18. 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)
19. 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
20. 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
21. 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