Slide 1

Slide 1 text

Modern Software Development Practices Getting the right things done right

Slide 2

Slide 2 text

Michael Cheng @CoderKungfu [email protected]

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

Agility in Practice • The Agile Manifesto is not very prescriptive. More like a bunch of guidelines & principles. • How do we put it into practice? • For many of us, we don’t care about buzzwords. • We care about getting the right things done. We care about getting things done right. • Its become the natural way in which we build software. Do what works

Slide 5

Slide 5 text

Agile Manifesto Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan http://agilemanifesto.org/

Slide 6

Slide 6 text

Building Lean • This is the process of figuring out what is the right things to build. • Hypothesis -> Build -> Validate -> Repeat • Hypothesis - Customers at Starbucks would like to pay with Bitcoin. • Build - Draw some screenshots, low fidelity. • Validate - Survey a bunch of people at Starbucks. Valid? Invalid? • Repeat - Come up with higher fidelity screenshots… until a working MVP. • Be willing to ask questions.

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

Building It Right • Building software is a team sport. • Business owner / product owner, users/customers, other developers, investors, etc… • Communication is key to helping everyone understand why and what we are building. • Agree on team norms and standardised practices • Team > Self (Team > Product)

Slide 9

Slide 9 text

4 Practices that has worked for us 1. Design / build for right now. 2. Automated Testing 3. YAGNI (sometimes) 4. Clear plumping issues early, get faster feedback on features.

Slide 10

Slide 10 text

1) Design / Build For Right Now • Engineers have a tendency to over-engineer things. • Future proofing, considering all the possible use cases is wasteful. • Unholy Trinity: Better vs Faster vs Cheaper • Build for right now. But also build in such a way that doesn’t make it too expensive to make changes. • Design patterns helps you design your code in such a way that is extendible without much code changes to legacy code.

Slide 11

Slide 11 text

2) Automated Testing • In agile, we value rapid feedback. We also hate repetitive tasks. • Automated testing lets us verify quickly that our code works as expected. It is also a very repetitive task. • Write Test (red) -> Write Code (green) -> Refactor -> Repeat • Tests also helps us clean up / refactor our code with more confidence. It also guards against regression bugs.

Slide 12

Slide 12 text

2) Automated Testing • How much test? Is 100% test coverage desirable? • No, 100% test coverage is a vanity metric. • A undiscovered bug is a test you have not written yet. • Code review helps. Code scanners help too. • Invest time in preparing and building out your test suite. Its super helpful when you are tired or facing crunch time.

Slide 13

Slide 13 text

3) YAGNI (sometimes) • You ain’t gonna need it (right now) • Building lean means making some compromises on your grand vision until its validated. • Ask yourself, will the product suffer from the lack of this feature? Will the user experience be any less delightful? • With limited time and limited run-way (funds) to build traction on your software, you have to prioritise.

Slide 14

Slide 14 text

4) Clear Plumping Issues Early • Remove blockers of rapid feedback • Project management tool • Version Control Software (and where to host it) • Continuous Integration (and test suite) • Code standards • Where to deploy your software to for user acceptance • Continuous Deployment

Slide 15

Slide 15 text

Sustainability • Reflect, evaluate, retrospect & grow together. • Keep learning from each other. • Sharing is caring, and it builds understanding and trust in the team.

Slide 16

Slide 16 text

What we actually do…

Slide 17

Slide 17 text

Project Kickoff / Scoping Get everyone on the same page.

Slide 18

Slide 18 text

No content

Slide 19

Slide 19 text

No content

Slide 20

Slide 20 text

No content

Slide 21

Slide 21 text

Iteration Planning Meeting Weekly check-in with Product Owner on what the next iteration looks like.

Slide 22

Slide 22 text

Daily Standup Daily check-in on progress and blockers with the team.

Slide 23

Slide 23 text

No content

Slide 24

Slide 24 text

Release Get it in the hands of users.

Slide 25

Slide 25 text

Retrospective Regular session to reflect on how the last few iterations have been.

Slide 26

Slide 26 text

No content

Slide 27

Slide 27 text

Write The Code! • Developer picks up story in Pivotal Tracker. • Use Test Driven Development (TDD) to build out the feature. • Pair Programming for shared knowledge of the code. • Driver/Navigator, Tester/Coder, Pilot/Co-Pilot • Commit and push to GitHub. Trigger CI. • Code review via Pull Requests. • Accepted PR will trigger a deployment to QA environment.

Slide 28

Slide 28 text

No content

Slide 29

Slide 29 text

No content

Slide 30

Slide 30 text

Team Roles • Product / Business Owner • Team Lead • Developers • Coders • DevOps • Larger projects • Business Analyst • Project Manager • DB Admin • Quality Assurance

Slide 31

Slide 31 text

What’s next for you?

Slide 32

Slide 32 text

Get Involved • Join a local tech meet up community. • Meetup.com, Facebook Groups, WeBuild.SG. • Meet your peers, seniors and other professionals. • Open sharing of knowledge in the Open Source communities. • Participate in Open Source projects. • Pull requests helps you get noticed and learn from your peers.

Slide 33

Slide 33 text

http://webuild.sg

Slide 34

Slide 34 text

http://engineers.sg

Slide 35

Slide 35 text

http://kopijs.org

Slide 36

Slide 36 text

http://geekbrunch.sg Geek Brunch SG A biannual social gathering for all engineers, designers and makers in Singapore. Come down and have a brunch. Bring someone new, someone curious. Saturday Feb 11 @ 11:00 AM Wheeler's Yard Bike, Singapore

Slide 37

Slide 37 text

Questions?

Slide 38

Slide 38 text

Slides on SpeakerDeck https://speakerdeck.com/miccheng/ modern-software-development-practices

Slide 39

Slide 39 text

Michael Cheng @CoderKungfu [email protected]

Slide 40

Slide 40 text

We are hiring!