Shipping Better Software Faster, and Having Fun Doing It

Software Engineering can be extremely difficult and maddening. But it doesn’t have to be. We will explore leveraging various principles to make Software Engineering fun again. We’ll make a case for “Better Code” fueling “Faster Development”.

Toward building our case, we will explore 5 areas:

* Bad Code vs Agility – What it means to be “Agile” and the impact of Bad Code on Agility.
* Better Code: Enablers – Enabling Concepts for Better Code such as TDD, Clean Code and Patterns, with an eye toward adapting them to various programming paradigms such as Functional and OOP. While the rest of the presentation will focus on OOP, this section will contain links to great talks covering similar concepts in Functional Programming.
* Empowering OOP – If OOP is to be chosen as a paradigm, we’ll explore what it means to play to the strengths of this paradigm.
* Web Application Architectures: When building Web Applications, we’ll explore various architectures that may hinder or promote a sustainable business fueled by better code. We’ll look at leveraging a framework without coupling our business logic to it, to promote greater testability and extensibility. For example, by leveraging some simple patterns such as the Repository Pattern, we will look at not having to permanently commit ourselves to an RDBMS or a NoSQL solution, that it should be easy to change our minds later as business needs evolve, and even adopting “Polyglot Persistence” whereby parts of an application might leverage an RDBMS while others a NoSQL solution.
* TDD: Better Fuels Faster – Leveraging preceding topics, we’ll put it all together in describing a workflow leveraging test-driven development for shipping better products ... faster, and having fun doing it.

The end of this talk will showcase code examples of a real-world Kata for building the service layer of a “Ride Hailing Application”. It will also link to recorded Kata videos, as well as a “clean slate” branch in my git repository to follow along. If you wish to take an early look at these videos, they are all available here: http://bit.ly/tdd-vids

Having made this case, we’ll conclude with the positive impact this workflow will have on a team’s ability to ship new products and new features at a sustained pace, with high levels of predictability.

While PHP, Symfony and Doctrine are used for code examples, concepts in this talk are applicable to all PHP frameworks and environments, as well as other programming languages such as Java, PHP and C#.

Comments

Great content that is so important. If more developers followed these patterns our industry would be in a much better state. The code at the end was difficult to on the projector screen but it will be very useful as a reference later.

An important topic, and the speaker has a lot of things to share on this, but felt that they tried to cover too much ground in a short period of time. Give more time to the last section of the talk, and it'll be better, I'm certain.