Software Craftsmanship for Non-Developers
Music City Tech September 7, 2019
Software Craftsmanship for Non-Developers Chad Green Music City - - PowerPoint PPT Presentation
Software Craftsmanship for Non-Developers Chad Green Music City Tech September 7, 2019 Who is Chad Green? Director of Software Development at ScholarRx Previous Positions Data & Solutions Architect Service Delivery Manager
Music City Tech September 7, 2019
Who is Chad Green? Director of Software Development at ScholarRx
Previous Positions
Contact Information
chadgreen.com
about software craftsmanship?
Because we all need to be a part of the solution.
Software Craftsmanship for Non-Developers
Software Craftsmanship for Non Developers
What Software Craftsmanship is not
page 06
Software Craftsmanship for Non Developers
What is Software Craftsmanship
page 07
mathematical rigor of a scientific approach with computational theory
precision, predictability, measurement, risk mitigation, and professionalism
Software Craftsmanship for Non Developers
What is Software Craftsmanship
page 08
Agile Manifesto question some these assumptions
Individuals and interactions over processes and tools Working software over comprehensive documentation Custom collaboration over contract negotiation Responding to change over following a plan
Software Craftsmanship for Non Developers
Craft, Trade, Engineering, Science, or Art
page 09
evidence to the innovation, design, construction, operation, and maintenance of structures, machines, materials, devices, systems, processes, and organizations
testable explanations and predictions about the universe
artifacts, expressing the author’s imaginative, conceptual idea, or technical skill, intended to be appreciated for their beauty or emotional power
Software Craftsmanship is about professionalism in software development.
Software Craftsmanship for Non Developers
Software Craftsmanship History
page 011
Craftsmanship over Crap
Craftsmanship
Professional Programmers
Software Craftsmanship for Non Developers
Manifesto for Software Craftsmanship
page 012
Not only working software, but also well-crafted software
Software Craftsmanship for Non Developers
Manifesto for Software Craftsmanship
page 013
Not only responding to change, but also steadily adding value
Try and leave this world a little better than you found it, and when you turn comes to die you can die happy in feeling that at any rate you have not wasted your time but have done your best. Robert Stephenson Smyth Bader-Powell, founder of The Scout Association
Software Craftsmanship for Non Developers
Manifesto for Software Craftsmanship
page 015
Not only individuals and interactions, but also a community of professionals
Software Craftsmanship for Non Developers
Manifesto for Software Craftsmanship
page 016
Not only customer collaboration, but also productive partnerships
Software Craftsmanship for Non Developers
Manifesto for Software Craftsmanship
page 017
Not only working software, but also well-crafted software Not only responding to change, but also steadily adding value Not only individuals and interactions, but also a community of professionals Not only customer collaboration, but also productive partnerships
Software Craftsmanship for Non-Developers
Software Craftsmanship for Non-Developers
Software Craftsmanship for Non Developers
What is Technical Debt
page 020
easy solution now instead of using a better approach that would take longer
can accumulate interest, making it hard to implement changes later
Software Craftsmanship for Non Developers
Example of Technical Debt
page 021
everyone can do everything
and then another and another
but really need another permission change in a couple of days
Software Craftsmanship for Non Developers
Example of Technical Debt – Decision Time
page 022
complicated)
comes in early
money comes later
permission, and then 6, 7…
something it will take way more time
Software Craftsmanship for Non Developers
Common Causes of Technical Debt
page 023
changes
Software Craftsmanship for Non-Developers
Software Craftsmanship for Non Developers
S.O.L.I.D.
page 025
Software Craftsmanship for Non Developers
Single Responsibility Principle (SRP)
page 026
Software Craftsmanship for Non Developers
Single Responsibility Principle (SRP)
page 027
CFO COO CTO Employee
+ Caculate Pay + ReportHours + Save
Software Craftsmanship for Non Developers
Open-Closed Principle (OCP)
page 028
modification
Software Craftsmanship for Non Developers
Liskov Substitution Principle (LSP)
page 029
q(y) should be provable for objects y of type y where S is a subtype
base/parent class
Billing License
+ CalculateFee()
Personal License
+ CalculateFee()
Business License
+ CalculateFee()
Software Craftsmanship for Non Developers
Interface Segregation Principle (ISP)
page 030
does not use or clients should not be forced to depend on methods they do not use
Software Craftsmanship for Non Developers
Dependency Inversion Principle (DIP)
page 031
that the high level module must not depend on the low level module, but they should depend on abstractions.
Software Craftsmanship for Non-Developers
Software Craftsmanship for Non Developers
DRY – Don’t Repeat Yourself
page 033
authoritative representation within a system
If you change one, you have to remember to change the others.
when you will forget
If you write it once, think about encapsulating it. If you write it twice, you have to encapsulate it. If you write it three times, programming isn’t for you. Phil Japikse, Microsoft MVP, ASPInsider, MCSD, MCDBA, PSM II, PSD, CSM, Consultant, Coach, Author, Trainer
Software Craftsmanship for Non Developers
KISS – Keep it Simple Stupid
page 035
Software Craftsmanship for Non Developers
YAGNI – You Aren’t Going to Need It
page 036
you just foresee that you need them
possibly work”
Software Craftsmanship for Non-Developers
Software Craftsmanship for Non Developers
TDD – Test Driven Development
page 038
short development cycle: requirements are turned into very specific test cases, then the software is improved to pass the new tests, only
first written a failing unit test.
to fail – and not compiling is failing
sufficient to pass the currently failing unit test
Software Craftsmanship for Non Developers
Pair Programming
page 039
workstation
code as it is typed
Software Craftsmanship for Non Developers
Practicing/Coding Dojos
page 040
Software Craftsmanship for Non-Developers
Software Craftsmanship for Non Developers
Code Smells - Environment
page 042
Software Craftsmanship for Non Developers
Code Smells - Environment
page 043
Software Craftsmanship for Non Developers
Code Smells - General
page 044
Software Craftsmanship for Non Developers
Code Smells - General
page 045
Software Craftsmanship for Non Developers
Code Smells - General
page 046
Software Craftsmanship for Non Developers
Code Smells - General
page 047
Software Craftsmanship for Non Developers
Code Smells - General
page 048
DateTime newDate = date.add(5) DateTime newDate = date.AddDays(5)
Software Craftsmanship for Non Developers
Code Smells - General
page 049
Software Craftsmanship for Non Developers
Code Smells - General
page 050
3.141592653589793 3.141592753589793 3.141592753589793
Software Craftsmanship for Non Developers
Code Smells - Tests
page 051
Software Craftsmanship for Non Developers
Code Smells - Tests
page 052
Software Craftsmanship for Non Developers
Code Smells - Tests
page 053
Software Craftsmanship for Non Developers
Code Smells - Tests
page 054
Software Craftsmanship for Non Developers
Code Smells - Tests
page 055
Software Craftsmanship for Non Developers
Code Smells - Tests
page 056
chadgreen.com