Slide 1

Slide 1 text

to go faster slow down PRACTICES TO BUILD SOFTWARE FASTER THAN EVER LEMi ORHAN ERGiN co-founder @

Slide 2

Slide 2 text

being fast is vital not only being first on the market is important, but also responding to customers by adding new features and eliminating bugs fast keep customer satisfaction high. in so!ware world

Slide 3

Slide 3 text

but we all have a problem with speed we assume going faster and smarter and efficiently is related with giving deadlines for the targets. we think that we go faster by working more and with more people. therefore we either add new people or do overtime to gear up production.

Slide 4

Slide 4 text

rushing makes us neither faster, nor more productive rushing increases stress, distracts focus and destroys productivity. we need creativity, effectiveness, and focus instead.

Slide 5

Slide 5 text

so!ware development is damn hard & complex we cannot get rid of complexity. we have to live with it. the need for speed creates an unstable, unsustainable environment, makes us stressed, less focused and less productive. it just don’t work.

Slide 6

Slide 6 text

incompetence is reality deadlines ignores delivery times have direct dependency with people, the efficiency of processes and the quality of output. and developers give deadlines for themselves, without any real need. are imaginary team capacity velocity estimation deadline masterplan fixed hours

Slide 7

Slide 7 text

we got legacy so!ware and inefficient processes the pressure of deadlines combining with incompetency leads to legacy so"ware, the dead-end for a working so"ware. at the end of the day

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

SLOWING DOWN the only way of going faster with sustainable pace is

Slide 10

Slide 10 text

Professionalism 
 and Craftsmanship Adaptation and Efficiency Automation and Quality 3 MAIN AREAS OF SLOWING DOWN PEOPLE PROCESS PRODUCT

Slide 11

Slide 11 text

3 MAIN AREAS OF SLOWING DOWN PEOPLE PROCESS PRODUCT 13 practices to slow down, take a deep breath and invest on mastery

Slide 12

Slide 12 text

hire better talents Talent hiring is the most critical function in your company Look for passion, discipline and motivation Do not allow ego enter the team, always be an apprentice Never work with genius jerks and lovable fools. Work with doers. Prepare a craftsmanship roadmap for all developers Do not believe in titles. Never! Make them believe what you believe Model the behavior you want to see PEOPLE 1

Slide 13

Slide 13 text

Tech Marketing INCEPTED Job Interviews INTERVIEW ED Position Offering OFFERED Initial Onboarding STARTED Pre-Arrival Preparations ARRIVAL Long Time Onboarding ONBOARDED Apprenticeship CRAFTSMAN Mastering 
 Practices FOREMAN

Slide 14

Slide 14 text

do together Never allow silos to occur Do in pairs and mobs, review together Sit together, closely Let the responsibility shared Define team standards PEOPLE 2

Slide 15

Slide 15 text

practice together Organize code retreats, radoris and coding dojos Spend 30 mins of each working day for practicing Force yourself to use shortcuts, and console Dedicate time for open source software and communicate with the community PEOPLE 3

Slide 16

Slide 16 text

PEOPLE learn together Organize Brown Bag / Lunch & Learn Sessions Organize lightening talks, open space meetups Be a speaker and give back to the community Document what you have learnt to a central wiki Invest in yourself, spend time and money for your career 4

Slide 17

Slide 17 text

PEOPLE collect feedback Visualize progress, and current status Gather feedback via Team & Grand Retrospectives Have kudo-walls to share positive feedback Ask for feedback, do not wait from people Learn how to give negative & positive feedback Share SDLC metrics and information radiators 5

Slide 18

Slide 18 text

PEOPLE improve together Facilitate retrospective meetings Search for better ways of doing your job Switch your pair if you feel you do not improve yourself Share links, posts, videos with your colleagues Question your beliefs, publicly Define definition of fun together with your team 6

Slide 19

Slide 19 text

do plan and revise often Plans are nothing, but planning is everything Create multi feedback loop channels, like review & demo Never give up daily alignment Have short iteration length Define short term goals and long term purposes Focus on products, not projects PROCESS 7

Slide 20

Slide 20 text

collect data and analyze Visualize processes, successes and failures Monitor SDLC, CI/CD metrics Allow every developer access product & code metrics Improve your domain knowledge and analyze processes regularly Make decisions based on data, not gut feelings PROCESS 8

Slide 21

Slide 21 text

PROCESS eliminate waste Detect waste in the office, in code and in processes Follow the boy scout rule Obey your definition of done and eliminate 99% done tasks Never allow long living branches Do not verify your code by manual testing Developers documents a world unintentionally 9

Slide 22

Slide 22 text

push the defects down Stop building the features and focus to eliminating bugs Fix bugs after reproducing via tests Continuous bug fixing and support: Batman and Robin Use pull requests and master code review capabilities Never deploy unreviewed code to production PRODUCT 10

Slide 23

Slide 23 text

release frequently Commit early, commit often, perfect later, publish once Trunk based development with Feature Toggling Devops is not having a cloud expert in team, know it Version everything, everything you write Decrease the need for manual testing PRODUCT 11

Slide 24

Slide 24 text

PRODUCT

Slide 25

Slide 25 text

test first and refactor Develop by TDD, have just enough tests and simple design Stop calculating code coverage Use 20% of time for eliminating technical debt Delete your brittle tests, rewrite tightly coupled code Multi level testing helps you validate functionalities Mono repository is for refactoring PRODUCT 12

Slide 26

Slide 26 text

PRODUCT HELL DEPENDENCY OF MICROSERVICES

Slide 27

Slide 27 text

PRODUCT

Slide 28

Slide 28 text

ports business adapters mysql adapter stripe adapter rest api web ui domain

Slide 29

Slide 29 text

ports adapters domain 3rd party apps command line soap calls admin gui batch jobs mobile apps other hexagons cache provider elastic search mail server database sms provider message queue other hexagons business mysql adapter stripe adapter rest api web ui

Slide 30

Slide 30 text

ports adapters notification payment billing order basket restaurant scheduling caching search mail account messaging stripe adapter rest api mysql adapter web ui domain business

Slide 31

Slide 31 text

No content

Slide 32

Slide 32 text

a SEARCH

Slide 33

Slide 33 text

a c SEARCH PAYMENT

Slide 34

Slide 34 text

c a SEARCH PAYMENT ACCOUNT

Slide 35

Slide 35 text

keep your design simple Any design decisions taken before it is required is wrong Yeah, microservices are great. But are you ready for it? Loosely coupled, high cohesive designs by Ports & Adapters Stop doing big upfront-design Follow the 4 rules of simple design PRODUCT 13

Slide 36

Slide 36 text

PEOPLE PROCESS PRODUCT

Slide 37

Slide 37 text

Professionalism 
 and Craftsmanship PEOPLE hire better talents do together practice together learn together collect feedback improve together Adaptation and Efficiency PROCESS do plan & revise often collect data & analyze eliminate waste Automation and Quality PRODUCT push defects down release frequently test first & refactor focus on simple design

Slide 38

Slide 38 text

No content

Slide 39

Slide 39 text

Working software does not have to be well-crafted. Only good professionals can build well-crafted software. Only well-crafted software lets you build features faster than ever.

Slide 40

Slide 40 text

@lemiorhan LEMi ORHAN ERGiN Working software does not have to be well-crafted. Only good professionals can build well-crafted software. Only well-crafted software lets you build features faster than ever.