SlideShare a Scribd company logo
Full stack 
What stands behind these words
@Me 
● Front-end lead developer 
● Front-end since 2008 
● Full stack since 2013 
● Now: Node.js 
● Before: Angular.js, Backbone.js, Chaplin, 
Google Closure Toolkit, Flex, Actionscript
Agenda 
1. Front-end world 
2. Back-end world 
3. Reasons of bugs 
4. Best practices 
5. Stories with morality 
6. Summary 
7. QA?
Front-end. So different applications. 
● Gaming 
● Media publishing 
● Internet Messaging 
● Data visualization 
● Social networks 
● GIS 
● And many many more...
Front-end evolution 
1. Pre AJAX: 
a. LAMP: Linux + Apache + MySQL + PHP(PERL, 
Python). index.php 
2. AJAX: 
a. Multi paged: CakePHP, Django, Symfony, Zend 
Framework, JSP 
b. Single paged: Index.html + anchors, jQuery 
3. Post AJAX: 
a. Realtime API: Meteor.js, WebSockets, WebRTC
Typical tasks 
● Unit testing, end-to-end testing of modules 
and components 
● Minifaction and merge of javascript 
modules 
● Compilation of LESS/SASS/Stylus to CSS 
● Revisioning of files 
● Assets preparation 
● Generation of manifesto file
Front-end 
● Client-side 
○ Interoperability 
■ Cross-browser - same feature + different 
implementations, polyfills 
■ Mobile devices - fast css + slow javascript + slow 
internet connection 
● Presentation 
○ HTML5 - a lot of buzz-words, but only few jedis 
know about them
Front-end 
● Modularity 
○ Pre-AMD 
○ AMD: Require.js, DojoToolkit 
○ ES6 modules 
● Core 
○ Prototype.js, DojoToolkit, Google Closure Toolkit 
○ jQuery them all 
○ MVP, MVVP: Backbone.js, Knockout.js, Angular.js, 
Ext.js, Ember.js
Reasons of front-end bugs 
● Browser detection code 
● Too wide CSS selectors 
● Event cycle management 
● Event listeners not removed properly 
● Closures variables
Summary 
● One language many environments 
● Heterogenous clients (OS + Browser + 
Platform) 
● Significant amount of events are invoked by 
user: mouse, keyboard, touch-screen 
● Mostly visual representation
Back-end 
● Platforms 
○ *nix: Linux, BSD, Solaris, AIX, HP-UX 
○ MS Windows 
● Databases 
○ Relational: Oracle, MySQL, PostgreSQL, MS SQL 
○ Non-relational: MongoDB, OrientDB, CouchDB, Cassandra, BerkeleyDB 
● Languages 
○ Perl, PHP, Python, Erlang 
○ Java, Scala, Groovy 
○ Ruby, Ruby on Rails 
○ Node.js, CoffeeScript
Tasks 
● Builds (unit testing, integration testing) 
● Deployment 
● Environment configurations 
● High Availability 
● Load balancing 
● Performance testing 
● Continuous Integration
Reasons of back-end bugs 
● Configuration 
○ Not applied 
○ Not loaded 
○ Points to wrong place 
● Action sequence flow 
● Asynchronicity issues 
● Parameters validation 
● Integration with third-party API’s or other services 
● Trying to apply coding pattern that does not work as expected 
● Memory management issues
Back-end summary 
● Mostly homogenous environment 
● Price of API changes 
● Most events are emitted by 
OS/Services/Network/Databases 
● Predictability - you are driving environment 
● User does not see the back-end explicitly. He even 
does not know that it exists.
Kill em’ all 
● One paltform could not fit all tasks: 
○ Many data sources, fast handling - Node.js 
○ Universal scripting platform - Python 
○ Hipster platform -Ruby on Rails 
○ Long-term tasks performance - Java, Scala 
○ Narrow fast tasks - C/C++ 
● One interchange format is not applicable for all use cases 
○ JSON - Data 
○ HTML - Pages 
○ Markdown - documentation 
○ XML - RPC, SOAP, Structured text 
○ YAML - Configuration files, descriptions
Full stack profile 
1. Client side stack 
a. HTML5 - presentation and client side API 
b. Build automation Grunt/Ant/Maven 
c. Unit testing 
d. LESS/SASS/Stylus 
e. AJAX, WebSockets, WebRTC 
2. Server side stack 
a. Java, Python, PHP, Ruby 
b. MVC framework 
c. Databases 
d. *nix 
e. CI
Stories: Four Weddings and One Funeral 
● What could happen if developers do not 
understand each other 
● What should be avoided 
● Where to point 
● What is going on when: oh crap it does not 
work!
Story #1 
1. HTML5 game for mobile platforms 
2. CSS3 + Spritesheets + Lime.js + Google 
Closure Toolkit 
3. CakePHP + MySQL + Ubuntu Linux 
4. XML as interchange format 
5. Over 20 API calls to load friends game 
scores and over 5 minutes to load it all
Story #2 
1. HTML5 Newspaper App for mobiles 
2. Backbone.js + Require.js + jQuery 
3. Drupal6 + Ubuntu linux + MySQL 
4. XML as interchange format 
5. XML built using strings concatenation (sic!) 
6. Many drupal hooks that do not know about 
each other 
7. 5 - 10 mins to load news feeds
Story #3 
1. HTML5 Multi Page Web App 
2. Java + Ubuntu Linux + Oracle DB 
3. Require.js + Backbone.js + jQuery 
4. All clients in GMT timezone 
5. Server was located in non-GMT and used local time 
zone 
6. Clients needed to adopt server time to local time 
7. Day could have 22, 23 and 25 hours. Really.
Story #4 
1. HTML5 Web portal for OpenStack platform 
2. Python + OpenStack + Ubuntu + RabbitMQ 
3. Angular.js + LESS + HTML5 
4. One action invokes many (>5) ajax calls 
5. All calls are enqueued as long as domain is the same 
6. Gimme code #1, Gimme code #2 
7. Huge latency, over 1 min to see single statistics 
entry
Moral 
1. One single UI element could involve a lot of back-end 
interactions 
2. Applying front-end approaches to back-end and vice 
versa is a bad idea 
3. Quick and dirty in a long term period leads to just 
dirty 
4. Laziness on one side leads to overtime on another side
Best practices 
● RAML 
● When you have over 3-5 calls per single action - think about middleware 
● Tools should be chosen when you have analysed requirements and 
workaround 
● No silver bullet and ‘Не все йогурты одинаково полезны’ 
● Be ready for production from the very beginning 
● Be ready for changes and do not rely on library/framework. Library 
could be replaced with another one if it implements the same pattern
Best practices 
● Definition of done for back-end work 
○ RAML or documentation about HTTP 
request/response format 
○ Unit tests 
○ Deployable package deb, rpm whatever 
○ VM where it could be deployed Jenkins job is even 
better 
○ Notification to all team
Best practices 
● Definition of done for front-end work 
○ Proper config for web server/requirements for back-end 
○ Unit tests, cover these cases: negative, positive, invalid 
○ Behavior 
■ Right for correct user data. 
■ Expected for incorrect user data. 
■ Predictable for network failures. 200 OK is not the only response 
○ Look and feel 
■ Check your target browsers and devices. Safari !== iOS safari !== 
Chrome 
○ Load time is reasonable and not only from localhost;) 
○ Packaged into deb/rpm
Best practices 
● Definition of bugfix is done 
○ Jira issue with description about bug 
○ Code fixed and reviewed 
○ Unit and automation test added to cover the case 
that bug is fixed 
○ Code merged into master branch 
○ Deployable package is available
Resume, or why to choose full-stack? 
1. Being full stack developer makes you 
polyglot. You can negotiate with front-end 
and back-end devs and dev-ops and QAs 
2. Being full stack developer gives you better 
understanding of product lifecycle 
3. You will know the junction points of your 
app
Contacts 
● pavlo.iuriichuk@globallogic.com 
● skype: pavlo.yuriychuck 
● twitter: @pavlo-yuriychuck

More Related Content

PPSX
Selenium WebDriver
PPTX
Agile Software Development
PPTX
Behavior Driven Development
PDF
Full-Stack Development
PPTX
Flappy Bird Game
PPTX
Xp(Xtreme Programming) presentation
PDF
FDD Overview
PPT
Groovy presentation
Selenium WebDriver
Agile Software Development
Behavior Driven Development
Full-Stack Development
Flappy Bird Game
Xp(Xtreme Programming) presentation
FDD Overview
Groovy presentation

What's hot (20)

PPT
Project Management Control
PPTX
Recommendation Modeling with Impression Data at Netflix
PDF
Recommender systems
PPTX
Actors in requirement engineering process
PDF
Building beautiful apps with Google flutter
PPTX
BDD presentation
PPTX
Full stack development
PPTX
오래된 프로젝트에 Jenkins 적용해보기
PDF
Native mobile application development with Flutter (Dart)
PPTX
JavaScript Promises
PDF
Deep Learning for Recommender Systems
PPTX
Role of java in android app development
PPTX
191221 unreal engine 4 editor 확장하기
PPSX
Selenium WebDriver with Java
PDF
Introducing Pair Programming
PPTX
Agile methodology
PPTX
Waterfall model and spiral model
PPTX
Full Stack Web Developer (MERN STACK Developer.pptx
PDF
Introduction to RxJS
PPTX
Project Management Control
Recommendation Modeling with Impression Data at Netflix
Recommender systems
Actors in requirement engineering process
Building beautiful apps with Google flutter
BDD presentation
Full stack development
오래된 프로젝트에 Jenkins 적용해보기
Native mobile application development with Flutter (Dart)
JavaScript Promises
Deep Learning for Recommender Systems
Role of java in android app development
191221 unreal engine 4 editor 확장하기
Selenium WebDriver with Java
Introducing Pair Programming
Agile methodology
Waterfall model and spiral model
Full Stack Web Developer (MERN STACK Developer.pptx
Introduction to RxJS
Ad

Similar to Full stack development (20)

PPTX
Full Stack Developer Course in Chandigarh
ODP
The Importance Things of Full Stack Development
PPTX
Introduction about Full stack Development
PDF
Tech Thursdays: Building Products
PPTX
Latest Web development technologies 2021
PDF
Level Up Your Coding Skills: A Comprehensive Guide to Full Stack Development
PPTX
Mobile gotcha
KEY
20120802 timisoara
PPTX
Full Stack Developer Training in Chandigarh.pptx
PPTX
Full-Stack-Presentation-Slide(Longsaar_Francis).pptx
PDF
Bridging Front.pdf
DOCX
PPTX
Technology Development in Early Stage Startup Indonesia
PDF
React fristy day learn basic NM_Day01.pdf
PDF
Full-Stack-Interview-Questions-and-Answers.pdf
PDF
Building Enterprise Grade Front-End Applications with JavaScript Frameworks
PPT
Introduction to JavaScript Full Stack
PPTX
Women Who Code, Ground Floor
PPTX
Full Stack Web Development
KEY
Single Page Applications - Desert Code Camp 2012
Full Stack Developer Course in Chandigarh
The Importance Things of Full Stack Development
Introduction about Full stack Development
Tech Thursdays: Building Products
Latest Web development technologies 2021
Level Up Your Coding Skills: A Comprehensive Guide to Full Stack Development
Mobile gotcha
20120802 timisoara
Full Stack Developer Training in Chandigarh.pptx
Full-Stack-Presentation-Slide(Longsaar_Francis).pptx
Bridging Front.pdf
Technology Development in Early Stage Startup Indonesia
React fristy day learn basic NM_Day01.pdf
Full-Stack-Interview-Questions-and-Answers.pdf
Building Enterprise Grade Front-End Applications with JavaScript Frameworks
Introduction to JavaScript Full Stack
Women Who Code, Ground Floor
Full Stack Web Development
Single Page Applications - Desert Code Camp 2012
Ad

More from Pavlo Iuriichuk (7)

PDF
Switching to angular.js silk way
PDF
Global logic tech talk switching to Angular.js
ODP
SVG in game development
PDF
Jsfwdays 2013-2
PDF
Mobile web apps
PDF
PDF
Mobile Web Apps development essentials
Switching to angular.js silk way
Global logic tech talk switching to Angular.js
SVG in game development
Jsfwdays 2013-2
Mobile web apps
Mobile Web Apps development essentials

Recently uploaded (20)

PDF
Mitigating Risks through Effective Management for Enhancing Organizational Pe...
PPTX
web development for engineering and engineering
PDF
PRIZ Academy - 9 Windows Thinking Where to Invest Today to Win Tomorrow.pdf
PPTX
Recipes for Real Time Voice AI WebRTC, SLMs and Open Source Software.pptx
PDF
Operating System & Kernel Study Guide-1 - converted.pdf
PPTX
UNIT 4 Total Quality Management .pptx
PPTX
Lecture Notes Electrical Wiring System Components
PPTX
KTU 2019 -S7-MCN 401 MODULE 2-VINAY.pptx
PDF
Well-logging-methods_new................
PDF
Structs to JSON How Go Powers REST APIs.pdf
PDF
July 2025 - Top 10 Read Articles in International Journal of Software Enginee...
PPT
Project quality management in manufacturing
PPTX
M Tech Sem 1 Civil Engineering Environmental Sciences.pptx
PDF
Arduino robotics embedded978-1-4302-3184-4.pdf
PPTX
Geodesy 1.pptx...............................................
PDF
SM_6th-Sem__Cse_Internet-of-Things.pdf IOT
PPTX
Foundation to blockchain - A guide to Blockchain Tech
PPTX
IOT PPTs Week 10 Lecture Material.pptx of NPTEL Smart Cities contd
PPTX
Engineering Ethics, Safety and Environment [Autosaved] (1).pptx
PPTX
UNIT-1 - COAL BASED THERMAL POWER PLANTS
Mitigating Risks through Effective Management for Enhancing Organizational Pe...
web development for engineering and engineering
PRIZ Academy - 9 Windows Thinking Where to Invest Today to Win Tomorrow.pdf
Recipes for Real Time Voice AI WebRTC, SLMs and Open Source Software.pptx
Operating System & Kernel Study Guide-1 - converted.pdf
UNIT 4 Total Quality Management .pptx
Lecture Notes Electrical Wiring System Components
KTU 2019 -S7-MCN 401 MODULE 2-VINAY.pptx
Well-logging-methods_new................
Structs to JSON How Go Powers REST APIs.pdf
July 2025 - Top 10 Read Articles in International Journal of Software Enginee...
Project quality management in manufacturing
M Tech Sem 1 Civil Engineering Environmental Sciences.pptx
Arduino robotics embedded978-1-4302-3184-4.pdf
Geodesy 1.pptx...............................................
SM_6th-Sem__Cse_Internet-of-Things.pdf IOT
Foundation to blockchain - A guide to Blockchain Tech
IOT PPTs Week 10 Lecture Material.pptx of NPTEL Smart Cities contd
Engineering Ethics, Safety and Environment [Autosaved] (1).pptx
UNIT-1 - COAL BASED THERMAL POWER PLANTS

Full stack development

  • 1. Full stack What stands behind these words
  • 2. @Me ● Front-end lead developer ● Front-end since 2008 ● Full stack since 2013 ● Now: Node.js ● Before: Angular.js, Backbone.js, Chaplin, Google Closure Toolkit, Flex, Actionscript
  • 3. Agenda 1. Front-end world 2. Back-end world 3. Reasons of bugs 4. Best practices 5. Stories with morality 6. Summary 7. QA?
  • 4. Front-end. So different applications. ● Gaming ● Media publishing ● Internet Messaging ● Data visualization ● Social networks ● GIS ● And many many more...
  • 5. Front-end evolution 1. Pre AJAX: a. LAMP: Linux + Apache + MySQL + PHP(PERL, Python). index.php 2. AJAX: a. Multi paged: CakePHP, Django, Symfony, Zend Framework, JSP b. Single paged: Index.html + anchors, jQuery 3. Post AJAX: a. Realtime API: Meteor.js, WebSockets, WebRTC
  • 6. Typical tasks ● Unit testing, end-to-end testing of modules and components ● Minifaction and merge of javascript modules ● Compilation of LESS/SASS/Stylus to CSS ● Revisioning of files ● Assets preparation ● Generation of manifesto file
  • 7. Front-end ● Client-side ○ Interoperability ■ Cross-browser - same feature + different implementations, polyfills ■ Mobile devices - fast css + slow javascript + slow internet connection ● Presentation ○ HTML5 - a lot of buzz-words, but only few jedis know about them
  • 8. Front-end ● Modularity ○ Pre-AMD ○ AMD: Require.js, DojoToolkit ○ ES6 modules ● Core ○ Prototype.js, DojoToolkit, Google Closure Toolkit ○ jQuery them all ○ MVP, MVVP: Backbone.js, Knockout.js, Angular.js, Ext.js, Ember.js
  • 9. Reasons of front-end bugs ● Browser detection code ● Too wide CSS selectors ● Event cycle management ● Event listeners not removed properly ● Closures variables
  • 10. Summary ● One language many environments ● Heterogenous clients (OS + Browser + Platform) ● Significant amount of events are invoked by user: mouse, keyboard, touch-screen ● Mostly visual representation
  • 11. Back-end ● Platforms ○ *nix: Linux, BSD, Solaris, AIX, HP-UX ○ MS Windows ● Databases ○ Relational: Oracle, MySQL, PostgreSQL, MS SQL ○ Non-relational: MongoDB, OrientDB, CouchDB, Cassandra, BerkeleyDB ● Languages ○ Perl, PHP, Python, Erlang ○ Java, Scala, Groovy ○ Ruby, Ruby on Rails ○ Node.js, CoffeeScript
  • 12. Tasks ● Builds (unit testing, integration testing) ● Deployment ● Environment configurations ● High Availability ● Load balancing ● Performance testing ● Continuous Integration
  • 13. Reasons of back-end bugs ● Configuration ○ Not applied ○ Not loaded ○ Points to wrong place ● Action sequence flow ● Asynchronicity issues ● Parameters validation ● Integration with third-party API’s or other services ● Trying to apply coding pattern that does not work as expected ● Memory management issues
  • 14. Back-end summary ● Mostly homogenous environment ● Price of API changes ● Most events are emitted by OS/Services/Network/Databases ● Predictability - you are driving environment ● User does not see the back-end explicitly. He even does not know that it exists.
  • 15. Kill em’ all ● One paltform could not fit all tasks: ○ Many data sources, fast handling - Node.js ○ Universal scripting platform - Python ○ Hipster platform -Ruby on Rails ○ Long-term tasks performance - Java, Scala ○ Narrow fast tasks - C/C++ ● One interchange format is not applicable for all use cases ○ JSON - Data ○ HTML - Pages ○ Markdown - documentation ○ XML - RPC, SOAP, Structured text ○ YAML - Configuration files, descriptions
  • 16. Full stack profile 1. Client side stack a. HTML5 - presentation and client side API b. Build automation Grunt/Ant/Maven c. Unit testing d. LESS/SASS/Stylus e. AJAX, WebSockets, WebRTC 2. Server side stack a. Java, Python, PHP, Ruby b. MVC framework c. Databases d. *nix e. CI
  • 17. Stories: Four Weddings and One Funeral ● What could happen if developers do not understand each other ● What should be avoided ● Where to point ● What is going on when: oh crap it does not work!
  • 18. Story #1 1. HTML5 game for mobile platforms 2. CSS3 + Spritesheets + Lime.js + Google Closure Toolkit 3. CakePHP + MySQL + Ubuntu Linux 4. XML as interchange format 5. Over 20 API calls to load friends game scores and over 5 minutes to load it all
  • 19. Story #2 1. HTML5 Newspaper App for mobiles 2. Backbone.js + Require.js + jQuery 3. Drupal6 + Ubuntu linux + MySQL 4. XML as interchange format 5. XML built using strings concatenation (sic!) 6. Many drupal hooks that do not know about each other 7. 5 - 10 mins to load news feeds
  • 20. Story #3 1. HTML5 Multi Page Web App 2. Java + Ubuntu Linux + Oracle DB 3. Require.js + Backbone.js + jQuery 4. All clients in GMT timezone 5. Server was located in non-GMT and used local time zone 6. Clients needed to adopt server time to local time 7. Day could have 22, 23 and 25 hours. Really.
  • 21. Story #4 1. HTML5 Web portal for OpenStack platform 2. Python + OpenStack + Ubuntu + RabbitMQ 3. Angular.js + LESS + HTML5 4. One action invokes many (>5) ajax calls 5. All calls are enqueued as long as domain is the same 6. Gimme code #1, Gimme code #2 7. Huge latency, over 1 min to see single statistics entry
  • 22. Moral 1. One single UI element could involve a lot of back-end interactions 2. Applying front-end approaches to back-end and vice versa is a bad idea 3. Quick and dirty in a long term period leads to just dirty 4. Laziness on one side leads to overtime on another side
  • 23. Best practices ● RAML ● When you have over 3-5 calls per single action - think about middleware ● Tools should be chosen when you have analysed requirements and workaround ● No silver bullet and ‘Не все йогурты одинаково полезны’ ● Be ready for production from the very beginning ● Be ready for changes and do not rely on library/framework. Library could be replaced with another one if it implements the same pattern
  • 24. Best practices ● Definition of done for back-end work ○ RAML or documentation about HTTP request/response format ○ Unit tests ○ Deployable package deb, rpm whatever ○ VM where it could be deployed Jenkins job is even better ○ Notification to all team
  • 25. Best practices ● Definition of done for front-end work ○ Proper config for web server/requirements for back-end ○ Unit tests, cover these cases: negative, positive, invalid ○ Behavior ■ Right for correct user data. ■ Expected for incorrect user data. ■ Predictable for network failures. 200 OK is not the only response ○ Look and feel ■ Check your target browsers and devices. Safari !== iOS safari !== Chrome ○ Load time is reasonable and not only from localhost;) ○ Packaged into deb/rpm
  • 26. Best practices ● Definition of bugfix is done ○ Jira issue with description about bug ○ Code fixed and reviewed ○ Unit and automation test added to cover the case that bug is fixed ○ Code merged into master branch ○ Deployable package is available
  • 27. Resume, or why to choose full-stack? 1. Being full stack developer makes you polyglot. You can negotiate with front-end and back-end devs and dev-ops and QAs 2. Being full stack developer gives you better understanding of product lifecycle 3. You will know the junction points of your app
  • 28. Contacts ● pavlo.iuriichuk@globallogic.com ● skype: pavlo.yuriychuck ● twitter: @pavlo-yuriychuck