shopping24 tech blog

s is for shopping

August 26, 2016 / by Sebastian Stach / Web developer / @StachOverflow

Laracon EU 2016 Amsterdam

Shopping24 on the Laracon EU 2016. These are our experiences and thoughts about this great conference in Amsterdam. Because we use Laravel for multiple PHP projects, three of our web developers went to this year’s Laracon in Amsterdam.

From left to right:

The schedule: http://laracon.eu/2016/schedule The talks: Talks on YouTube

TL;DR

This was our first time attending Laracon and we think it’s a great conference! Almost every talk referenced DDD and in our humble opinion that is the modern way of coding maintainable high performance software with a beautiful code base in Laravel. Laravel -and its community- is the fastest growing framework in the PHP ecosystem constantly being improved by many well-respected experts.

Workshop - Domain-Driven Design

The first day for me, Sebastian, was all about DDD (Domain-Driven Design). Mathias Verraes @mathiasverraes was in charge of teaching a group of around 30 people the basics of Domain-Driven design. First of all I have to say that the Workshop was very good. Verraes understood it very well to extract the main features of this design approach and to show us what matters most.

I got a massive amount of insights and ideas of how to use this approach of software design in production and to keep this article short I will stick to my personal highlights.

Design

  • Complexity
    • make Complexity explicit (p.e. in an object)
    • make the implicity explicit
    • dig for complexity –> many people in a projcet hide it consciously or un consciously
  • Domain
    • define your domain –> Business needs/rules
    • understand the domain you are working on instead of only complete features
    • make the main information holder available and talk to them
  • Ubiquitous Language
    • make sure to find a common language for all
    • everybody should understand that language
    • here too, make it explicit
    • Refactoring is not only about the code, it’s also about the language
    • Domain Model could be coded in the spoken language (p.e. german variable names)
  • Model
    • here it comes again to make implicity explicit
    • Common understanding what the model needs to do
    • one model that mature including the business rules
    • use short feedback cicles to prevent late discovery of bugs and find them sooner
    • models do not include “Active Record” (or any other ORM), make it free from Database persistency
    • build small pieces, visualize them on a whiteboard –> try them –> crash them –> let them evolve
    • build models to refactor
  • Binding Boundaries
    • build small bounded things to handle complexity, crush large things down to small ones
    • think about “Inside” and “Outsinde”
    • does this object changes something at the outside?
    • Objects are understood differently based on the domain they are used in
      • p.e. a Product: Amazon, Stocks, Shipping Industry

Heuristics of DDD:

  • What changes
  • When does it change
  • Who changes it
  • Why do it change
  • How often does it change
  • Consequences of change (Who are the Stakeholders)
  • What are the differences (Delta of change)

Value Objects

  • Immutable
  • Identity defined by value not by reference
  • Domain concept
  • Atomic
  • Builded with a valid interface and the internal is private
  • Should be used as many as possible

Further informations

Our favorite talks

Taylor Otwell - Keynote

Taylor Otwell @taylorotwell Founder & Creator of Laravel showed us some of brand new features Laravel 5.3 brings. We are pretty excited about things like the new notification system via Echo, Webpack, support for POPO and single-action controllers and more. ++ Later that day he released the version under big applause ++

Materials:

Hannes van de vreken - IOC Container Beyond Constructor Injection

Hannes van de vreken @hannesvdvreken software engineer at madewithlove showed some great design patterns very fitting to Laravel. We found it very useful to see how lazy class loading could be approached.

Materials:

Mitchell van Wijngaarden - Future is a thing of the past

This click-baity titled talk of Mitchell van Wijngaarden @mitchellvanw -an independent developer and consultant living in Utrecht- was great! He showed off one of Martin Fowler’s principles called event sourcing in a comprehensive way. There are some great benefits by handling state changes in a business model (domain) via events.

Some benefits

  • A history of all events enables us to go back in time
  • Changes are no longer destructive which leads to immutable states
  • Easy creation of multiple projections depending on the context of one model

Materials:

Lily Dart - No excuse user research

Lily Dart @lily_dart is a freelance user experience designer and user researcher. She presented 3 simple, cheap, fast and effective methods to kickstart user research. The first was a wake up call for those who do not look at their existing metrics. The second method focuses on analyzing user complaints and creating a very simple way for users to give feedback at all. The last method is all about taking a closer look at search results, mainly the searches without a result. At shopping24 we already put a lot of effort in improving the users search experience. Lily’s talk made us aware of some valuable insights that might already be within reach, we just need to grab them.

Materials:

Evan You - Modern frontend UI with vue.js

Evan You @youyuxi introduced vue.js which is a progressive frontend framework which looks very promising and is build into Laravel 5.3. He showed off some benchmarks and told us how it’s popularity skyrocketed after a tweet from Tayler Otwell. Vue is composable, performance friendly and comes with lots of tools i.e. a console. Despite it being small, it is full of handy features, which we won’t cover in this article.

Materials:

Jeroen van de Gulik - How to effectively grow a development team

Jeroen van de Gulik @jeroenvdgulik built a big team for creating the new Schiphol Airport website from scratch. In his talk he shares how he achieved this and what the key factures for creating a healthy functional teams are. His principles were concentrated in the following terms which represent states of a growing team. Finding, norming, storming and performing. These states are a cycle that gets rewind after every change within a team. To get new team members and to keep them it is very important to invest in them and in the company’s culture.

Materials:

Adam Wathan - Curing the common loop (with collection pipelines)

Just like us Adam Wathan @adamwathan dislikes loops in PHP. To show how beautiful code can be, he refactored some ugly nested code into readable and shorter code. In Adam’s talk Laravel’s collections really shine which give us multiple methods for adapting the functional programming paradigm.

Materials: