SlideShare a Scribd company logo
#codemotion @liuggio
awesome
PHP application
in 2014
really
really
really
really
I’m @liuggio
a programmer<?php
awesome application #codemotion @liuggio
Language design is hard …
the most famous computer scientists
are also language designers.
BUT none of them ever worked on PHP
-- codinghorror
awesome application #codemotion @liuggio
LANGUAGE SUCKS7.380.000 results
Java sucks
6.030.000 results
Ruby sucks
3.400.000
Python sucks
results
awesome application #codemotion @liuggio
Search “{language} SUCKS” on google:
61.526.124
Search “PHP SUCKS” on google:
TIMES
awesome application #codemotion @liuggio
WHY PHP
SUCKS
not real objects
big gap between the
community and the
un-polite core-team inconsistency
lot-ot-underscore
stream_get_line
disk_free_space
is_object
mcal_day_of_week
set_error_handler
snmp_get_quick_print
get_browser
base64_encode
image_type_to_mime_type
msql_num_fields
php_uname
strip_tags
bind_textdomain_codeset
cal_to_jd
str_rot13
no-underscore
readline
diskfreespace
isset
jddayofweek
setlocale
snmpget
getallheaders
urlencode
imagetypes
mysql_numfields
phpversion
stripslashes
bindtextdomain
gregoriantojd
strpos
awesome application #codemotion @liuggio
LOT OF GREAT COMPANIES USES IT
WordpressFacebook
awesome application #codemotion @liuggio
IS NOT THE OLD PLAIN-PHP
THE ECOSYSTEM IS GREAT
GIT COMPOSER SYMFONY2
DDD/TDD/BDD PHP-FIG BEST PRACTICES
awesome application #codemotion @liuggio
The best programming language
will not save you
to write horrible code.
awesome application #codemotion @liuggio
Sufficiently talented coders
can write great applications
in terrible languages
awesome application #codemotion @liuggio
f**king
awesome
application
really
really
really
really
really
@liuggiowelcometothebundle.com
f**king
awesome
application
really
really
really
really
really
Coding is 10% of the job
Communication and
understanding
Read/Study
Coffee and
related .
awesome application #codemotion @liuggio
developer
=
worker with knowledge
awesome application #codemotion @liuggio
- Modular code
- Version Control System (git)
- Eager: conferences/books/code
- Use frameworks
- Contribute famous projects code
- Live in the open-source ecosystem
- Favourite the discussion
- Study design trends (DDD  BDD…?)
- Live in a community, local user group
- Test Driven Development
talented developers
awesome application #codemotion @liuggio
TDD
REFACTOR PASSFAIL
awesome application #codemotion @liuggio
- Modular code
- Version Control System (git)
- Eager: conferences/books/code
- Use frameworks
- Contribute famous projects code
- Live in the open-source ecosystem
- Favourite the discussion
- Study design trends (DDD  BDD…?)
- Live in a community, local user group
- Test Driven Development
TalentedNot talented
Innovation fuel growth
TALENTED CODERS
Have a passion driven mindset
&&
Satisfy business with the best technology
=
awesome application #codemotion @liuggio
awesome application #codemotion @liuggio
After the first iteration with the client:
YOU
BLACK HOLE
After the second iteration with the client:
awesome application #codemotion @liuggio
After the third iteration with the client:
$$ function
awesome application #codemotion @liuggio
Translation problems
Application
presentation
awesome application #codemotion @liuggio
Domain model
REST
adapter
WEB
SCRIPT
A
D
A
PTER-y
U
se
Case
A
Use Case B
interfaces
awesome application #codemotion @liuggio
awesome application #codemotion @liuggio
Application
presentation
Domain model
REST
adapter
WEB
SCRIPT
A
D
A
PTER-y
U
se
Case
A
Use Case B
awesome application #codemotion @liuggio
Describe the
behaviours for each
`verb` and ‘noun’
Create the class
and the public
methods
Write a business
example
Explode the example in
lines
Given/When/Then
Discover and visualize
`verbs`, `nouns` and
behaviours
awesome application #codemotion @liuggio
a new cycle1
2
3
4 5
FAIL
FAIL
FAIL
Describe the
behaviours for each
`verb` and ‘noun’
4
Create the class
and the public
methods
5
PASS
awesome application #codemotion @liuggio
Application
presentation
Domain model
WEB
Class EmitBill
WWW
The best programming language
will not save you
to write horrible code.
awesome application #codemotion @liuggio
BUSINESS
awesome application #codemotion @liuggio
be a passionate developer
awesome application #codemotion @liuggio
Questions?
ps: see the references I didn’t write any books (yet).
awesome application #codemotion @liuggio
Ad

More Related Content

What's hot (20)

Developing for LinkedIn's Application Platform
Developing for LinkedIn's Application PlatformDeveloping for LinkedIn's Application Platform
Developing for LinkedIn's Application Platform
Taylor Singletary
 
Wonders of Golang
Wonders of GolangWonders of Golang
Wonders of Golang
Kartik Sura
 
Buildr - build like you code
Buildr -  build like you codeBuildr -  build like you code
Buildr - build like you code
Izzet Mustafaiev
 
Go lang
Go langGo lang
Go lang
Suelen Carvalho
 
WebRTC - Brings Real-Time to the Web
WebRTC - Brings Real-Time to the WebWebRTC - Brings Real-Time to the Web
WebRTC - Brings Real-Time to the Web
Vũ Nguyễn
 
GoLang Introduction
GoLang IntroductionGoLang Introduction
GoLang Introduction
Spandana Govindgari
 
Dependency management in golang
Dependency management in golangDependency management in golang
Dependency management in golang
Ramit Surana
 
Getting started with Go - Florin Patan - Codemotion Rome 2017
Getting started with Go - Florin Patan - Codemotion Rome 2017Getting started with Go - Florin Patan - Codemotion Rome 2017
Getting started with Go - Florin Patan - Codemotion Rome 2017
Codemotion
 
Let the contribution begin (EST futures)
Let the contribution begin  (EST futures)Let the contribution begin  (EST futures)
Let the contribution begin (EST futures)
SeongJae Park
 
C++ in our world
C++ in our worldC++ in our world
C++ in our world
Juraj Michálek
 
Introduction to GoLang
Introduction to GoLangIntroduction to GoLang
Introduction to GoLang
NVISIA
 
Droidcon Online 2020 quick summary
Droidcon Online 2020 quick summaryDroidcon Online 2020 quick summary
Droidcon Online 2020 quick summary
Bartosz Kosarzycki
 
(Live) build and run golang web server on android.avi
(Live) build and run golang web server on android.avi(Live) build and run golang web server on android.avi
(Live) build and run golang web server on android.avi
SeongJae Park
 
The Go programming language - Intro by MyLittleAdventure
The Go programming language - Intro by MyLittleAdventureThe Go programming language - Intro by MyLittleAdventure
The Go programming language - Intro by MyLittleAdventure
mylittleadventure
 
drone continuous Integration
drone continuous Integrationdrone continuous Integration
drone continuous Integration
Bo-Yi Wu
 
A First Look at Google's Go Programming Language
A First Look at Google's Go Programming LanguageA First Look at Google's Go Programming Language
A First Look at Google's Go Programming Language
Ganesh Samarthyam
 
[INNOVATUBE] Tech Talk #3: Golang - Takaaki Mizuno
 [INNOVATUBE] Tech Talk #3: Golang - Takaaki Mizuno [INNOVATUBE] Tech Talk #3: Golang - Takaaki Mizuno
[INNOVATUBE] Tech Talk #3: Golang - Takaaki Mizuno
Nexus FrontierTech
 
Fandogh Cloud workshop slides
Fandogh Cloud workshop slides Fandogh Cloud workshop slides
Fandogh Cloud workshop slides
ssarabadani
 
C++ and Software Engineering 2015
C++ and Software Engineering 2015C++ and Software Engineering 2015
C++ and Software Engineering 2015
Juraj Michálek
 
Building Command Line Tools with Golang
Building Command Line Tools with GolangBuilding Command Line Tools with Golang
Building Command Line Tools with Golang
Takaaki Mizuno
 
Developing for LinkedIn's Application Platform
Developing for LinkedIn's Application PlatformDeveloping for LinkedIn's Application Platform
Developing for LinkedIn's Application Platform
Taylor Singletary
 
Wonders of Golang
Wonders of GolangWonders of Golang
Wonders of Golang
Kartik Sura
 
Buildr - build like you code
Buildr -  build like you codeBuildr -  build like you code
Buildr - build like you code
Izzet Mustafaiev
 
WebRTC - Brings Real-Time to the Web
WebRTC - Brings Real-Time to the WebWebRTC - Brings Real-Time to the Web
WebRTC - Brings Real-Time to the Web
Vũ Nguyễn
 
Dependency management in golang
Dependency management in golangDependency management in golang
Dependency management in golang
Ramit Surana
 
Getting started with Go - Florin Patan - Codemotion Rome 2017
Getting started with Go - Florin Patan - Codemotion Rome 2017Getting started with Go - Florin Patan - Codemotion Rome 2017
Getting started with Go - Florin Patan - Codemotion Rome 2017
Codemotion
 
Let the contribution begin (EST futures)
Let the contribution begin  (EST futures)Let the contribution begin  (EST futures)
Let the contribution begin (EST futures)
SeongJae Park
 
Introduction to GoLang
Introduction to GoLangIntroduction to GoLang
Introduction to GoLang
NVISIA
 
Droidcon Online 2020 quick summary
Droidcon Online 2020 quick summaryDroidcon Online 2020 quick summary
Droidcon Online 2020 quick summary
Bartosz Kosarzycki
 
(Live) build and run golang web server on android.avi
(Live) build and run golang web server on android.avi(Live) build and run golang web server on android.avi
(Live) build and run golang web server on android.avi
SeongJae Park
 
The Go programming language - Intro by MyLittleAdventure
The Go programming language - Intro by MyLittleAdventureThe Go programming language - Intro by MyLittleAdventure
The Go programming language - Intro by MyLittleAdventure
mylittleadventure
 
drone continuous Integration
drone continuous Integrationdrone continuous Integration
drone continuous Integration
Bo-Yi Wu
 
A First Look at Google's Go Programming Language
A First Look at Google's Go Programming LanguageA First Look at Google's Go Programming Language
A First Look at Google's Go Programming Language
Ganesh Samarthyam
 
[INNOVATUBE] Tech Talk #3: Golang - Takaaki Mizuno
 [INNOVATUBE] Tech Talk #3: Golang - Takaaki Mizuno [INNOVATUBE] Tech Talk #3: Golang - Takaaki Mizuno
[INNOVATUBE] Tech Talk #3: Golang - Takaaki Mizuno
Nexus FrontierTech
 
Fandogh Cloud workshop slides
Fandogh Cloud workshop slides Fandogh Cloud workshop slides
Fandogh Cloud workshop slides
ssarabadani
 
C++ and Software Engineering 2015
C++ and Software Engineering 2015C++ and Software Engineering 2015
C++ and Software Engineering 2015
Juraj Michálek
 
Building Command Line Tools with Golang
Building Command Line Tools with GolangBuilding Command Line Tools with Golang
Building Command Line Tools with Golang
Takaaki Mizuno
 

Similar to really really really awesome php application with bdd behat and iterfaces (20)

Awesome application in 2014
Awesome application in 2014Awesome application in 2014
Awesome application in 2014
Codemotion
 
Info Session GDSC USICT
Info Session GDSC USICTInfo Session GDSC USICT
Info Session GDSC USICT
DSCUSICT
 
Containers, Serverless, Polyglot Development World, And Others…10 trends resh...
Containers, Serverless, Polyglot Development World, And Others…10 trends resh...Containers, Serverless, Polyglot Development World, And Others…10 trends resh...
Containers, Serverless, Polyglot Development World, And Others…10 trends resh...
PROIDEA
 
Ultimate guide on how to hire full stack web developer in 2022
Ultimate guide on how to hire full stack web developer in 2022Ultimate guide on how to hire full stack web developer in 2022
Ultimate guide on how to hire full stack web developer in 2022
Katy Slemon
 
What's new in the latest source{d} releases!
What's new in the latest source{d} releases!What's new in the latest source{d} releases!
What's new in the latest source{d} releases!
source{d}
 
Hacktoberfest'24 _ GDG on Campus BU.pptx
Hacktoberfest'24 _ GDG on Campus BU.pptxHacktoberfest'24 _ GDG on Campus BU.pptx
Hacktoberfest'24 _ GDG on Campus BU.pptx
nilaygupta3003
 
Mind the gap! - Droidcon Torino 2015
Mind the gap! - Droidcon Torino 2015Mind the gap! - Droidcon Torino 2015
Mind the gap! - Droidcon Torino 2015
Alberto López Martín
 
Resume
ResumeResume
Resume
himanshu sharma
 
Open Source Security and ChatGPT-Published.pdf
Open Source Security and ChatGPT-Published.pdfOpen Source Security and ChatGPT-Published.pdf
Open Source Security and ChatGPT-Published.pdf
Javier Perez
 
Programming Languages: Trends for 2021
Programming Languages: Trends for 2021Programming Languages: Trends for 2021
Programming Languages: Trends for 2021
Svetlin Nakov
 
Filipe Barroso - Google Developers Group - OSL19
Filipe Barroso - Google Developers Group - OSL19Filipe Barroso - Google Developers Group - OSL19
Filipe Barroso - Google Developers Group - OSL19
marketingsyone
 
5 Keys to API Design - API Days Paris 2013
5 Keys to API Design - API Days Paris 20135 Keys to API Design - API Days Paris 2013
5 Keys to API Design - API Days Paris 2013
Daniel Feist
 
Introduction to PHP - SDPHP
Introduction to PHP - SDPHPIntroduction to PHP - SDPHP
Introduction to PHP - SDPHP
Eric Johnson
 
What Web Framework To Use?
What Web Framework To Use?What Web Framework To Use?
What Web Framework To Use?
Kasra Khosravi
 
DEVNET-1125 Partner Case Study - “Project Hybrid Engineer”
DEVNET-1125	Partner Case Study - “Project Hybrid Engineer”DEVNET-1125	Partner Case Study - “Project Hybrid Engineer”
DEVNET-1125 Partner Case Study - “Project Hybrid Engineer”
Cisco DevNet
 
2022 APIsecure_Securing APIs with Open Standards
2022 APIsecure_Securing APIs with Open Standards2022 APIsecure_Securing APIs with Open Standards
2022 APIsecure_Securing APIs with Open Standards
APIsecure_ Official
 
Programming Languages Trends for 2023
Programming Languages Trends for 2023Programming Languages Trends for 2023
Programming Languages Trends for 2023
Svetlin Nakov
 
Cody Childers- Resume
Cody Childers- ResumeCody Childers- Resume
Cody Childers- Resume
Cody Childers
 
Shopify - CNCF March 2025 Meetup - Presentation - 26-03-25.pptx
Shopify - CNCF March 2025 Meetup - Presentation - 26-03-25.pptxShopify - CNCF March 2025 Meetup - Presentation - 26-03-25.pptx
Shopify - CNCF March 2025 Meetup - Presentation - 26-03-25.pptx
Michael Foster
 
gurpreet.pptx
gurpreet.pptxgurpreet.pptx
gurpreet.pptx
SulekhJangra
 
Awesome application in 2014
Awesome application in 2014Awesome application in 2014
Awesome application in 2014
Codemotion
 
Info Session GDSC USICT
Info Session GDSC USICTInfo Session GDSC USICT
Info Session GDSC USICT
DSCUSICT
 
Containers, Serverless, Polyglot Development World, And Others…10 trends resh...
Containers, Serverless, Polyglot Development World, And Others…10 trends resh...Containers, Serverless, Polyglot Development World, And Others…10 trends resh...
Containers, Serverless, Polyglot Development World, And Others…10 trends resh...
PROIDEA
 
Ultimate guide on how to hire full stack web developer in 2022
Ultimate guide on how to hire full stack web developer in 2022Ultimate guide on how to hire full stack web developer in 2022
Ultimate guide on how to hire full stack web developer in 2022
Katy Slemon
 
What's new in the latest source{d} releases!
What's new in the latest source{d} releases!What's new in the latest source{d} releases!
What's new in the latest source{d} releases!
source{d}
 
Hacktoberfest'24 _ GDG on Campus BU.pptx
Hacktoberfest'24 _ GDG on Campus BU.pptxHacktoberfest'24 _ GDG on Campus BU.pptx
Hacktoberfest'24 _ GDG on Campus BU.pptx
nilaygupta3003
 
Open Source Security and ChatGPT-Published.pdf
Open Source Security and ChatGPT-Published.pdfOpen Source Security and ChatGPT-Published.pdf
Open Source Security and ChatGPT-Published.pdf
Javier Perez
 
Programming Languages: Trends for 2021
Programming Languages: Trends for 2021Programming Languages: Trends for 2021
Programming Languages: Trends for 2021
Svetlin Nakov
 
Filipe Barroso - Google Developers Group - OSL19
Filipe Barroso - Google Developers Group - OSL19Filipe Barroso - Google Developers Group - OSL19
Filipe Barroso - Google Developers Group - OSL19
marketingsyone
 
5 Keys to API Design - API Days Paris 2013
5 Keys to API Design - API Days Paris 20135 Keys to API Design - API Days Paris 2013
5 Keys to API Design - API Days Paris 2013
Daniel Feist
 
Introduction to PHP - SDPHP
Introduction to PHP - SDPHPIntroduction to PHP - SDPHP
Introduction to PHP - SDPHP
Eric Johnson
 
What Web Framework To Use?
What Web Framework To Use?What Web Framework To Use?
What Web Framework To Use?
Kasra Khosravi
 
DEVNET-1125 Partner Case Study - “Project Hybrid Engineer”
DEVNET-1125	Partner Case Study - “Project Hybrid Engineer”DEVNET-1125	Partner Case Study - “Project Hybrid Engineer”
DEVNET-1125 Partner Case Study - “Project Hybrid Engineer”
Cisco DevNet
 
2022 APIsecure_Securing APIs with Open Standards
2022 APIsecure_Securing APIs with Open Standards2022 APIsecure_Securing APIs with Open Standards
2022 APIsecure_Securing APIs with Open Standards
APIsecure_ Official
 
Programming Languages Trends for 2023
Programming Languages Trends for 2023Programming Languages Trends for 2023
Programming Languages Trends for 2023
Svetlin Nakov
 
Cody Childers- Resume
Cody Childers- ResumeCody Childers- Resume
Cody Childers- Resume
Cody Childers
 
Shopify - CNCF March 2025 Meetup - Presentation - 26-03-25.pptx
Shopify - CNCF March 2025 Meetup - Presentation - 26-03-25.pptxShopify - CNCF March 2025 Meetup - Presentation - 26-03-25.pptx
Shopify - CNCF March 2025 Meetup - Presentation - 26-03-25.pptx
Michael Foster
 
Ad

More from Giulio De Donato (12)

Docker italia fatti un container tutto tuo
Docker italia fatti un container tutto tuoDocker italia fatti un container tutto tuo
Docker italia fatti un container tutto tuo
Giulio De Donato
 
Lets isolate a process with no container like docker
Lets isolate a process with no container like dockerLets isolate a process with no container like docker
Lets isolate a process with no container like docker
Giulio De Donato
 
More developers on DevOps with Docker orchestration
More developers on DevOps with Docker orchestrationMore developers on DevOps with Docker orchestration
More developers on DevOps with Docker orchestration
Giulio De Donato
 
Import golang; struct microservice
Import golang; struct microserviceImport golang; struct microservice
Import golang; struct microservice
Giulio De Donato
 
Json web token api authorization
Json web token api authorizationJson web token api authorization
Json web token api authorization
Giulio De Donato
 
Think horizontally ood, ddd and bdd
Think horizontally ood, ddd and bddThink horizontally ood, ddd and bdd
Think horizontally ood, ddd and bdd
Giulio De Donato
 
I came i saw i go - golang it meetup codemotion rome 2014
I came i saw i go - golang it meetup codemotion rome 2014I came i saw i go - golang it meetup codemotion rome 2014
I came i saw i go - golang it meetup codemotion rome 2014
Giulio De Donato
 
Benchmark Profile and Boost your Symfony application
Benchmark Profile and Boost your Symfony applicationBenchmark Profile and Boost your Symfony application
Benchmark Profile and Boost your Symfony application
Giulio De Donato
 
Leaphly fight monolothic today
Leaphly fight monolothic todayLeaphly fight monolothic today
Leaphly fight monolothic today
Giulio De Donato
 
Design pattern in Symfony2 - Nanos gigantium humeris insidentes
Design pattern in Symfony2 - Nanos gigantium humeris insidentesDesign pattern in Symfony2 - Nanos gigantium humeris insidentes
Design pattern in Symfony2 - Nanos gigantium humeris insidentes
Giulio De Donato
 
Caching and data analysis will move your Symfony2 application to the next level
Caching and data analysis will move your Symfony2 application to the next levelCaching and data analysis will move your Symfony2 application to the next level
Caching and data analysis will move your Symfony2 application to the next level
Giulio De Donato
 
Rationally boost your symfony2 application with caching tips and monitoring
Rationally boost your symfony2 application with caching tips and monitoringRationally boost your symfony2 application with caching tips and monitoring
Rationally boost your symfony2 application with caching tips and monitoring
Giulio De Donato
 
Docker italia fatti un container tutto tuo
Docker italia fatti un container tutto tuoDocker italia fatti un container tutto tuo
Docker italia fatti un container tutto tuo
Giulio De Donato
 
Lets isolate a process with no container like docker
Lets isolate a process with no container like dockerLets isolate a process with no container like docker
Lets isolate a process with no container like docker
Giulio De Donato
 
More developers on DevOps with Docker orchestration
More developers on DevOps with Docker orchestrationMore developers on DevOps with Docker orchestration
More developers on DevOps with Docker orchestration
Giulio De Donato
 
Import golang; struct microservice
Import golang; struct microserviceImport golang; struct microservice
Import golang; struct microservice
Giulio De Donato
 
Json web token api authorization
Json web token api authorizationJson web token api authorization
Json web token api authorization
Giulio De Donato
 
Think horizontally ood, ddd and bdd
Think horizontally ood, ddd and bddThink horizontally ood, ddd and bdd
Think horizontally ood, ddd and bdd
Giulio De Donato
 
I came i saw i go - golang it meetup codemotion rome 2014
I came i saw i go - golang it meetup codemotion rome 2014I came i saw i go - golang it meetup codemotion rome 2014
I came i saw i go - golang it meetup codemotion rome 2014
Giulio De Donato
 
Benchmark Profile and Boost your Symfony application
Benchmark Profile and Boost your Symfony applicationBenchmark Profile and Boost your Symfony application
Benchmark Profile and Boost your Symfony application
Giulio De Donato
 
Leaphly fight monolothic today
Leaphly fight monolothic todayLeaphly fight monolothic today
Leaphly fight monolothic today
Giulio De Donato
 
Design pattern in Symfony2 - Nanos gigantium humeris insidentes
Design pattern in Symfony2 - Nanos gigantium humeris insidentesDesign pattern in Symfony2 - Nanos gigantium humeris insidentes
Design pattern in Symfony2 - Nanos gigantium humeris insidentes
Giulio De Donato
 
Caching and data analysis will move your Symfony2 application to the next level
Caching and data analysis will move your Symfony2 application to the next levelCaching and data analysis will move your Symfony2 application to the next level
Caching and data analysis will move your Symfony2 application to the next level
Giulio De Donato
 
Rationally boost your symfony2 application with caching tips and monitoring
Rationally boost your symfony2 application with caching tips and monitoringRationally boost your symfony2 application with caching tips and monitoring
Rationally boost your symfony2 application with caching tips and monitoring
Giulio De Donato
 
Ad

Recently uploaded (20)

Beyond the code. Complexity - 2025.05 - SwiftCraft
Beyond the code. Complexity - 2025.05 - SwiftCraftBeyond the code. Complexity - 2025.05 - SwiftCraft
Beyond the code. Complexity - 2025.05 - SwiftCraft
Dmitrii Ivanov
 
Time Estimation: Expert Tips & Proven Project Techniques
Time Estimation: Expert Tips & Proven Project TechniquesTime Estimation: Expert Tips & Proven Project Techniques
Time Estimation: Expert Tips & Proven Project Techniques
Livetecs LLC
 
Deploying & Testing Agentforce - End-to-end with Copado - Ewenb Clark
Deploying & Testing Agentforce - End-to-end with Copado - Ewenb ClarkDeploying & Testing Agentforce - End-to-end with Copado - Ewenb Clark
Deploying & Testing Agentforce - End-to-end with Copado - Ewenb Clark
Peter Caitens
 
Reinventing Microservices Efficiency and Innovation with Single-Runtime
Reinventing Microservices Efficiency and Innovation with Single-RuntimeReinventing Microservices Efficiency and Innovation with Single-Runtime
Reinventing Microservices Efficiency and Innovation with Single-Runtime
Natan Silnitsky
 
Buy vs. Build: Unlocking the right path for your training tech
Buy vs. Build: Unlocking the right path for your training techBuy vs. Build: Unlocking the right path for your training tech
Buy vs. Build: Unlocking the right path for your training tech
Rustici Software
 
Why Tapitag Ranks Among the Best Digital Business Card Providers
Why Tapitag Ranks Among the Best Digital Business Card ProvidersWhy Tapitag Ranks Among the Best Digital Business Card Providers
Why Tapitag Ranks Among the Best Digital Business Card Providers
Tapitag
 
Adobe Media Encoder Crack FREE Download 2025
Adobe Media Encoder  Crack FREE Download 2025Adobe Media Encoder  Crack FREE Download 2025
Adobe Media Encoder Crack FREE Download 2025
zafranwaqar90
 
Orion Context Broker introduction 20250509
Orion Context Broker introduction 20250509Orion Context Broker introduction 20250509
Orion Context Broker introduction 20250509
Fermin Galan
 
Serato DJ Pro Crack Latest Version 2025??
Serato DJ Pro Crack Latest Version 2025??Serato DJ Pro Crack Latest Version 2025??
Serato DJ Pro Crack Latest Version 2025??
Web Designer
 
Autodesk Inventor Crack (2025) Latest
Autodesk Inventor    Crack (2025) LatestAutodesk Inventor    Crack (2025) Latest
Autodesk Inventor Crack (2025) Latest
Google
 
Mastering Selenium WebDriver: A Comprehensive Tutorial with Real-World Examples
Mastering Selenium WebDriver: A Comprehensive Tutorial with Real-World ExamplesMastering Selenium WebDriver: A Comprehensive Tutorial with Real-World Examples
Mastering Selenium WebDriver: A Comprehensive Tutorial with Real-World Examples
jamescantor38
 
AEM User Group DACH - 2025 Inaugural Meeting
AEM User Group DACH - 2025 Inaugural MeetingAEM User Group DACH - 2025 Inaugural Meeting
AEM User Group DACH - 2025 Inaugural Meeting
jennaf3
 
Mobile Application Developer Dubai | Custom App Solutions by Ajath
Mobile Application Developer Dubai | Custom App Solutions by AjathMobile Application Developer Dubai | Custom App Solutions by Ajath
Mobile Application Developer Dubai | Custom App Solutions by Ajath
Ajath Infotech Technologies LLC
 
Adobe InDesign Crack FREE Download 2025 link
Adobe InDesign Crack FREE Download 2025 linkAdobe InDesign Crack FREE Download 2025 link
Adobe InDesign Crack FREE Download 2025 link
mahmadzubair09
 
Download MathType Crack Version 2025???
Download MathType Crack  Version 2025???Download MathType Crack  Version 2025???
Download MathType Crack Version 2025???
Google
 
Adobe Audition Crack FRESH Version 2025 FREE
Adobe Audition Crack FRESH Version 2025 FREEAdobe Audition Crack FRESH Version 2025 FREE
Adobe Audition Crack FRESH Version 2025 FREE
zafranwaqar90
 
wAIred_LearnWithOutAI_JCON_14052025.pptx
wAIred_LearnWithOutAI_JCON_14052025.pptxwAIred_LearnWithOutAI_JCON_14052025.pptx
wAIred_LearnWithOutAI_JCON_14052025.pptx
SimonedeGijt
 
Download 4k Video Downloader Crack Pre-Activated
Download 4k Video Downloader Crack Pre-ActivatedDownload 4k Video Downloader Crack Pre-Activated
Download 4k Video Downloader Crack Pre-Activated
Web Designer
 
Best HR and Payroll Software in Bangladesh - accordHRM
Best HR and Payroll Software in Bangladesh - accordHRMBest HR and Payroll Software in Bangladesh - accordHRM
Best HR and Payroll Software in Bangladesh - accordHRM
accordHRM
 
The Elixir Developer - All Things Open
The Elixir Developer - All Things OpenThe Elixir Developer - All Things Open
The Elixir Developer - All Things Open
Carlo Gilmar Padilla Santana
 
Beyond the code. Complexity - 2025.05 - SwiftCraft
Beyond the code. Complexity - 2025.05 - SwiftCraftBeyond the code. Complexity - 2025.05 - SwiftCraft
Beyond the code. Complexity - 2025.05 - SwiftCraft
Dmitrii Ivanov
 
Time Estimation: Expert Tips & Proven Project Techniques
Time Estimation: Expert Tips & Proven Project TechniquesTime Estimation: Expert Tips & Proven Project Techniques
Time Estimation: Expert Tips & Proven Project Techniques
Livetecs LLC
 
Deploying & Testing Agentforce - End-to-end with Copado - Ewenb Clark
Deploying & Testing Agentforce - End-to-end with Copado - Ewenb ClarkDeploying & Testing Agentforce - End-to-end with Copado - Ewenb Clark
Deploying & Testing Agentforce - End-to-end with Copado - Ewenb Clark
Peter Caitens
 
Reinventing Microservices Efficiency and Innovation with Single-Runtime
Reinventing Microservices Efficiency and Innovation with Single-RuntimeReinventing Microservices Efficiency and Innovation with Single-Runtime
Reinventing Microservices Efficiency and Innovation with Single-Runtime
Natan Silnitsky
 
Buy vs. Build: Unlocking the right path for your training tech
Buy vs. Build: Unlocking the right path for your training techBuy vs. Build: Unlocking the right path for your training tech
Buy vs. Build: Unlocking the right path for your training tech
Rustici Software
 
Why Tapitag Ranks Among the Best Digital Business Card Providers
Why Tapitag Ranks Among the Best Digital Business Card ProvidersWhy Tapitag Ranks Among the Best Digital Business Card Providers
Why Tapitag Ranks Among the Best Digital Business Card Providers
Tapitag
 
Adobe Media Encoder Crack FREE Download 2025
Adobe Media Encoder  Crack FREE Download 2025Adobe Media Encoder  Crack FREE Download 2025
Adobe Media Encoder Crack FREE Download 2025
zafranwaqar90
 
Orion Context Broker introduction 20250509
Orion Context Broker introduction 20250509Orion Context Broker introduction 20250509
Orion Context Broker introduction 20250509
Fermin Galan
 
Serato DJ Pro Crack Latest Version 2025??
Serato DJ Pro Crack Latest Version 2025??Serato DJ Pro Crack Latest Version 2025??
Serato DJ Pro Crack Latest Version 2025??
Web Designer
 
Autodesk Inventor Crack (2025) Latest
Autodesk Inventor    Crack (2025) LatestAutodesk Inventor    Crack (2025) Latest
Autodesk Inventor Crack (2025) Latest
Google
 
Mastering Selenium WebDriver: A Comprehensive Tutorial with Real-World Examples
Mastering Selenium WebDriver: A Comprehensive Tutorial with Real-World ExamplesMastering Selenium WebDriver: A Comprehensive Tutorial with Real-World Examples
Mastering Selenium WebDriver: A Comprehensive Tutorial with Real-World Examples
jamescantor38
 
AEM User Group DACH - 2025 Inaugural Meeting
AEM User Group DACH - 2025 Inaugural MeetingAEM User Group DACH - 2025 Inaugural Meeting
AEM User Group DACH - 2025 Inaugural Meeting
jennaf3
 
Mobile Application Developer Dubai | Custom App Solutions by Ajath
Mobile Application Developer Dubai | Custom App Solutions by AjathMobile Application Developer Dubai | Custom App Solutions by Ajath
Mobile Application Developer Dubai | Custom App Solutions by Ajath
Ajath Infotech Technologies LLC
 
Adobe InDesign Crack FREE Download 2025 link
Adobe InDesign Crack FREE Download 2025 linkAdobe InDesign Crack FREE Download 2025 link
Adobe InDesign Crack FREE Download 2025 link
mahmadzubair09
 
Download MathType Crack Version 2025???
Download MathType Crack  Version 2025???Download MathType Crack  Version 2025???
Download MathType Crack Version 2025???
Google
 
Adobe Audition Crack FRESH Version 2025 FREE
Adobe Audition Crack FRESH Version 2025 FREEAdobe Audition Crack FRESH Version 2025 FREE
Adobe Audition Crack FRESH Version 2025 FREE
zafranwaqar90
 
wAIred_LearnWithOutAI_JCON_14052025.pptx
wAIred_LearnWithOutAI_JCON_14052025.pptxwAIred_LearnWithOutAI_JCON_14052025.pptx
wAIred_LearnWithOutAI_JCON_14052025.pptx
SimonedeGijt
 
Download 4k Video Downloader Crack Pre-Activated
Download 4k Video Downloader Crack Pre-ActivatedDownload 4k Video Downloader Crack Pre-Activated
Download 4k Video Downloader Crack Pre-Activated
Web Designer
 
Best HR and Payroll Software in Bangladesh - accordHRM
Best HR and Payroll Software in Bangladesh - accordHRMBest HR and Payroll Software in Bangladesh - accordHRM
Best HR and Payroll Software in Bangladesh - accordHRM
accordHRM
 

really really really awesome php application with bdd behat and iterfaces

Editor's Notes

  • #2: Già il nomed ‘coders’, scrivere codice eh… ma scrivere poi è la parte piu piccola, ci metti 3 mesi per corteggiare il cliente, ci metti i mesi di giorni per capire il cliente, ci metti mesi per far capire al cliente l’Agile, ci metti mese per far capire al cliente cosa veramente ha bisogno, se poi ci aggiungi i giorni di imprecazioni per capire il codice che hai scritto nell’iterazione prima, il tempo per scrivere i test prima di fare codice, pensare a cosa fare… scrivere codice è il 10%, spendi piu tempo Mi piace la definizione che da il libro managment 3.0: I developer sono knowledge workers provvedono a soddisfare il business con un valore che prima non avevano.
  • #3: NON siamo qui per parlare di awesome application ma per parlare di really awesome appl Non ho preparato un talk, perchè mi aspettavo la sala vuota, mi sono detto parlo di awesome application in PHP, nemmeno volevo fare le slide, bene PHP e qualità quanti di voi si sono persi o sono in questa sala per sbaglio? No non parleremo di PHP… Di solito quando si è programmatore PHP si ha un senso di inferiorità, se sei un programmatore PHP pensi che gli altri siano piu bravi di te di solito quando sei un programmatore PHP lo sai… si lo sai.. lo sai che hai di fronte un linguaggio che fa schifo di solito quando mi chiedono in che linguaggio uso, io dico prima una cosa per sembrare intelligente del tipo l’hai letto il libro managment 3.0 sul agile …
  • #4: sono liuggio ho 30 anni e sono un programmatore PHP PHP è un acronimo che voleva dire spaghetti code PHP (acronimo ricorsivo di "PHP: Hypertext Preprocessor") “PHP is the new VB6 in a C dress.” cit Ha sempre avuto tanto successo e tanto odio
  • #5: DIsegnare linguaggi è difficile e non è poi così scontato che i piu grandi scienziati sono anche fautori che hanno partecipato alla creazione di linguaggi ma nessuno di loro ha mai lavorato nel php. Ma lo sapete che su internet ci sono piu siti che fanno blaming sul PHP che quelli che ne descrivo come fare del codice fatto bene? Ci sono piu siti che infamano PHP che siti porno no questo non è vero...
  • #6: E poi tutti che ai accaniscono con tutti i linguaggi
  • #8: Ma è veramente cosi schifoso? Diciamo che ha i suoi difetti
  • #9: facebook, wikipedia wordpress ci hanno fatto un impero yahoo è mezzo in php, non so se siete mai andati a visitare Youporn beh youporn è fatto in PHP con symfony2. Il php è qualcosa di veramente terribile?
  • #10: Il php è usatissimo … il PHP è economico è veloce. Il linguaggio è la sua comunità, in effetti il php è migliorato grazie a Symfonu, buone pratiche disaccoppiamento nelle conferenze gia da alcuni anni si è iniziato a parlare di metodologie TDD /BDD /DDD.
  • #11: Il miglior linguaggio di programmazione non vi salvarà dallo scrivere codice di …. orribile
  • #13: Si ma questa frase ad effetto non ha significato perche: che vuol dire linguaggi terribili che vuol dire great application che vuol dire talented coders? Quindi andiamo capire come essere dei talented coders per scrivere bellissime applicazioni ------------------------------------------- Ecco il titolo. “talented coders can write great applications in terrible languages”
  • #15: Già il nomed ‘coders’, scrivere codice eh… ma scrivere poi è la parte piu piccola, ci metti 3 mesi per corteggiare il cliente, ci metti i mesi di giorni per capire il cliente, ci metti mesi per far capire al cliente l’Agile, ci metti mese per far capire al cliente cosa veramente ha bisogno, se poi ci aggiungi i giorni di imprecazioni per capire il codice che hai scritto nell’iterazione prima, il tempo per scrivere i test prima di fare codice, pensare a cosa fare… scrivere codice è il 10%, spendi piu tempo Mi piace la definizione che da il libro managment 3.0: I developer sono knowledge workers provvedono a soddisfare il business con un valore che prima non avevano.
  • #16: L?innovazione come benzina per la crescita, programmatori ma anche azienda
  • #17: portatore di conoscienza
  • #18: Ma chi sono i talented developers scrivono usando TDD Chi sa cosa è il TDD? Chi di voi programma usando il TDD? Chi di voi vorrebbe ma in azienda non glielo permettono? Chi di voi prende in giro chi sta in una azienda in cui non gli permettono di usare TDD?
  • #19: IL TDD è un processo dello svilupppo, che risiede su ripetizioni brevi, kent beck[1] Beh il TDD è una metodologia che scientificamente ti porta a scrivere codice modulare, di certo non deve essere sottogamba perche è stata un grande rivoluzione ma nemmeno deve presa come dogma o legge o come unico modo per raggiungere il codice modulare, quello che è certo che DEVE essere utilizzata almeno fino a che non ci si rendo conto che porta ad un beneficio reale. stavo cercando di descrivere qualitativamente un great developers
  • #20: - Code fast - Connected code - No Version Control System - Lazy, closed to learn - Flat languages or old frameworks - His/Her code is secret - Superb - No Passion - Solution Driven Development - Community silos seniority Alla fine essere bravi coder vuol dire dare il giusto bisogno al business, quindi non essere ossessionati da una tecnologia, agire senza pregiudizi, non essere incarcerati, non adattare la soluzione alla tecnologia. E’ problematico se siamo ossessionati dal linguaggio non cerchiamo più di trovare un prodotto di valore per il cliente ma adattiamo la tecn. cosa stiamo facendo come sviluppatori? Il valore non è fare un sito in drupal ma dare qualcosa di valore per il cliente.
  • #21: L?innovazione come benzina per la crescita, POssiamo definire i talented coder come: programmatori ma anche azienda
  • #22: Quindi per essere un talented coders si …. Si ma come soddisfare il business? beh lo step è capire il business, Soddisfare il business è difficile è difficilissimo, non se vi è mai capitato che nel primo giorno di analisi il product owner cerca di ottimizzare il suo tempo dicendovi e cercando di dire tutto, beh mi è capitato e la sera mi sentivo cosi:
  • #23: Quindi se dopo anni abbiamo capito che magari il codice è meglio scriverlo incrementale, abbiamo anche inziato a capire che il business si comprende incrementalmente? Se durante la stima dei costi vi si avevano presentato un pianeta, nel primo giorno di incontro è un universo.
  • #24: Quindi affrontiamo il business nel primo giorno si presenta cosi vi vedete voi? si siete li, intorno piano a piano si crea il buco nero detto della consapevolezza e iniziano ad apparire pian piano le galassie presentate come pianeti o come satelliti.
  • #25: Ci sono varie tecniche per capire quale galassia prima affrontare, scoprire prime le difficoltà etc, per poi andare a capire i pain points. ci sono varie metodologie per capire il impact mapping per allineare l’overall business objectives and make better roadmap decisions.
  • #26: A questo punto si prende un problema e si inizia a descrivere per sviluppare il software MA una applicazione è fatta da software e hardware, tutti e due sono molto importanti, ma quando il software ci parla dei loro problemi noi dobbbiamo evitare: errori di traduzione contaminare il linguaggio del business con tecnicismi che non appartengono al dominio. se noi riuscissimo a scrivere del software seguendo il linguaggio del business, seguendo i comportamenti del business riuscremmo ad evitare le frizioni che si hanno generalmente tra gerghi tecnici (programmatori/product owner). L’informatica è la parte che si deve adattare al gergo tecnico del business, deve aderire al modello. quindi dovremmo disegnare la nostra applicazione defindendo bene diversi livelli, il dominio è quello dove c’è la logica, le costrizioni gli eventi le regole e gli oggetti del modello del business. è lo strato piu interno dovremmo iniziare a modellare l’applicazione partendo da quello non pensando a come implementare il database, dobbiamo solo seguire i comportamenti.
  • #27: A questo punto si prende un problema e si inizia a descrivere per sviluppare il software MA una applicazione è fatta da software e hardware, tutti e due sono molto importanti, ma quando il software ci parla dei loro problemi noi dobbbiamo evitare: errori di traduzione contaminare il linguaggio del business con tecnicismi che non appartengono al dominio. se noi riuscissimo a scrivere del software seguendo il linguaggio del business, seguendo i comportamenti del business riuscremmo ad evitare le frizioni che si hanno generalmente tra gerghi tecnici (programmatori/product owner). L’informatica è la parte che si deve adattare al gergo tecnico del business, deve aderire al modello. quindi dovremmo disegnare la nostra applicazione defindendo bene diversi livelli, il dominio è quello dove c’è la logica, le costrizioni gli eventi le regole e gli oggetti del modello del business. è lo strato piu interno dovremmo iniziare a modellare l’applicazione partendo da quello non pensando a come implementare il database, dobbiamo solo seguire i comportamenti.
  • #28: lo strato di applicazione è quello che contiene l’orchestra degli oggetti di dominio, muove gli oggetti di dominio, il terzo strato è quello di interfaccia di presentazione che decora i casi di uso i comandi che appartengono allo strato precedente. Se vedete bene tecnicamente lo strato di presentazione vede solo comadi non vede il dominio. The inner-most layer is the Domain Layer. This layer contains your business logic and defines how the layer outside of it can interact with it. Business logic is central to your application. It can also be described as 'policy' - rules your code must follow. The domain layer and its business logic define the behavior and constraints of your application. It's what makes your application different from others. It's what gives your application value. If you have an application with a lot of behavior, your application can have a rich domain layer. If your application is more of a thin layer on top of a database (many are!), this layer might be "thinner". Quando pensiamo al dominio NON dobbiamo pensare ai dettagli implementativi il database dopo. l’Application è lo strato che fa muovere le entità del dominio nei diversi stati. Just outside of the Domain Layer sits the Application layer. This layer orchestrates the use of the entities found in the Domain Layer. It also adapts requests from the Framework Layer to the Domain Layer by sitting between the two. For example, it might have a handler class handle a use-case. This handler class in the Application Layer would accept input data brought in from the Framework Layer and perform the actions needed to accomplish the use-case. It might also dispatch Domain Events raised in the Domain Layer. This layer represents the outside layer of the code that makes up the application. -............. Quindi vogliamo seguendo questa notazione andare a sviluppare un esempio pratico di come dare il bisogno al business partendo da una storia. Il modello esponde metodi pubblici e comportamenti delle classi che sono aggregati, eventi etc L’applicazione espone richieste e casi di uso Lo strato esterno decora ed esponde al cliente nel formato scelto. QUini vogliamo un linguaggio che sia aderente al business che ci guidi nello sviluppo, be è proprio il linguaggio del business.
  • #30: Mappiamo ogni step in una funzione php cosi da unire le funzionalità ai test automatici. Immaginate di avvicinarvi ad un cliente o il vostro capo, fatelo partecipare il piu possibile alla scrittura delle storie scrivete esempi, quindi Gerghin, quando inziate pensate a quale business value, gerghin a business driven readable language, funziona come documentazione, ma anche guida automatic test, descrive il comportamento del software, quindi scrivendo le storie condividendo le storie con il cliente, si condividono le responsabilità.
  • #31: vi ricordate il tdd? scrivete il test, create la classe e la funzionalità test verde e ricominciate? beh qui è diverso, ….
  • #32: Mappiamo ogni step in una funzione php cosi da unire le funzionalità ai test automatici.
  • #33: Mappiamo ogni step in una funzione php cosi da unire le funzionalità ai test automatici.
  • #34: Mappiamo ogni step in una funzione php cosi da unire le funzionalità ai test automatici.
  • #35: Mappiamo ogni step in una funzione php cosi da unire le funzionalità ai test automatici.
  • #38: Il miglior linguaggio di programmazione non vi salvarà dallo scrivere codice di …. orribile
  • #39: Follow the business.
  • #40: No prejudice
  翻译: