SlideShare a Scribd company logo
Front-end it
like a PRO
By Stanislav Khorunzhyi
A few words about me
1. Senior JavaScript Developer at Sigma Software
2. I am a driver of JavaScript community in my company
3. 99% of my work is strictly directed to the Front-End development
4. During last year I interviewed more than 50 people on different
positions
5. Now I work onVue.js start-ups
6. I think that any successful project must have Git Hooks, good
linters,TypeScript, Unit tests and lodash.
Who is a PRO developer?
1. Makes code that does not require any refactoring
2. Applies the brand-new practices and features
3. Puts the right things to the right places
4. Knows how to work with UI
5. Always keeps in mind that the user experience (UX) is the most
important part of any application / website / game etc.
MOVE
SHOOT
Because your form is not a form…
Tip #1: Always use <form> tag for a form
Tip #1: Always use <form> tag for a form
Tip #2: Use labels for inputs
Tip #2: Use labels for inputs
Tip #3: Use modern tags
PRO developer uses the new tags from HTML5 specification:
Tip #4: Add shortcuts & hotkeys
Tip #4: Add shortcuts & hotkeys
1. https://www.npmjs.com/package/hotkeys-js
2. https://www.npmjs.com/package/mousetrap
Tip #5: Keep a version of the app in footer
1. It allows users to report bugs
2. Allows QA engineers to specify the app version in bug
description
3. Avoids inconsistent state when on some environment it
works, but on other it doesn’t
Tip #6: Configure ESLint + Stylelint at the beginning
1. Forget aboutTSLint (it’s fully deprecated)
2. Don’t spent time on configuring linter by yourself (just use
or modify Airbnb or other popular config)
3. Continuously extend the config and adapt it to the project
needs
4. Run linters on each commit or push in Git
Tip #7: Add Git hooks to the project
1. Git hooks allow you to run any bash script when certain
important actions occur
2. The most popular actions to hook are commit and push
3. All what you need is Husky!
Not this one…
Tip #7: Add Git hooks to the project
Husky makes git hooks easy:
https://www.npmjs.com/package/husky
package.json
Tip #7: Add Git hooks to the project
Lint-staged will run Git hooks only against staged Git files:
https://www.npmjs.com/package/lint-staged
package.json
Tip #8: Know how the transpiling process work
1. What happens to theTypeScript / ES Next code?
2. What is the difference between concatenation,
minification and transpiling?
3. What are polyfills for?
4. How SASS / LESS / etc. variables work?
Transpiling process:TypeScript
1. TypeScript gets compiled into JavaScript withTSC (TypeScript
compiler) and in rare cases with Babel
2. When there is aTypeError, theTypeScript will not be built for the
production (types are pretty strict)
3. Each 3rd party dependency (library) must have a @types included
(or the developer must describe them by himself)
Processing code:Transpiling
ECMAScript 5ECMAScript Next
Processing code: Concatenation
Users.vue
***.vue
Button.vue
Bets.vue
utils.js
Footer.vue
app.c5ff7b7f.js
Processing code: Minification
Processing code:The results
Processing code: Polyfills
A polyfill is a piece of code (usually JavaScript on theWeb)
used to provide modern functionality on older browsers that
do not natively support it.
Tip #9: Configure auto-polyfills
.browserlistrc file will help tools like PostCSS or babel-preset-env
correctly add polyfills to your app:
Tip #10: Use modern array methods
Tip #10: Use modern array methods
Tip #11: Use lazy loading
1. Lazy loading helps your application to be loaded faster
2. Scripts, images, videos or even the whole pages can be
lazy loaded
3. If the lazy loading is applied to the pages, make sure you
lazy load only rarely used pages
Tip #12: Optimize the final bundle
1. UseWeback bundle analyzer to check what is included to
your final bundle
2. Use Audit tab on Chrome DevTools (called Lighthouse) to
check the page loading speed
3. Try to avoid libraries with default exports
webpack-bundle-analyzer
bundlephobia.com
Useful resources
1. HTML semantics and modern tags
2. Building forms
3. eslint-config-airbnb
4. stylelint-config-airbnb
5. TypeScript compiler options
6. Polyfills in JavaScript
7. Configuring browserslist
8. Modern array methods
Apply these rules and let’s
make the Front-End
great again!
https://t.me/stan_kh

More Related Content

What's hot

Continuous integration 101
Continuous integration 101Continuous integration 101
Continuous integration 101
Manuel Spezzani
 
Buildbot
BuildbotBuildbot
Buildbot
williewu
 
Buildbot: The Continuous Integration Python framework
Buildbot: The Continuous Integration Python frameworkBuildbot: The Continuous Integration Python framework
Buildbot: The Continuous Integration Python framework
Carles San Agustin
 
Continuous integration with docker, buildbot and git
Continuous integration with docker, buildbot and gitContinuous integration with docker, buildbot and git
Continuous integration with docker, buildbot and git
Adieu
 
TDD
TDDTDD
GDG Passo fundo - Apps with unit tests (Karma + jasmine + angular)
GDG Passo fundo - Apps with unit tests (Karma + jasmine + angular)GDG Passo fundo - Apps with unit tests (Karma + jasmine + angular)
GDG Passo fundo - Apps with unit tests (Karma + jasmine + angular)
Matheus Marabesi
 
That worked before
That worked beforeThat worked before
That worked before
Christian Güdemann
 
How to become senior .net developer
How to become senior .net developerHow to become senior .net developer
How to become senior .net developer
Tung Nguyen Thanh
 
AI Bootcamp Toronto 2018 - Set up a chat bot from zero to hero
AI Bootcamp Toronto 2018 - Set up a chat bot from zero to heroAI Bootcamp Toronto 2018 - Set up a chat bot from zero to hero
AI Bootcamp Toronto 2018 - Set up a chat bot from zero to hero
Jucinei Pereira Dos Santos
 
De Zero a Produção - João Jesus
De Zero a Produção - João JesusDe Zero a Produção - João Jesus
De Zero a Produção - João Jesus
Comunidade NetPonto
 
How to Get started with Press2Flash in 8 Steps
How to Get started with Press2Flash in 8 StepsHow to Get started with Press2Flash in 8 Steps
How to Get started with Press2Flash in 8 Steps
Erwan Jegouzo
 
Php On Windows
Php On WindowsPhp On Windows
Php On Windows
Pierre Joye
 
Android studio
Android studioAndroid studio
Android studio
Enrique López Mañas
 
MobileCity:Introduction to IOS
MobileCity:Introduction to IOSMobileCity:Introduction to IOS
MobileCity:Introduction to IOS
Allan Davis
 
Continuous Integration using Buildbot
Continuous Integration using Buildbot Continuous Integration using Buildbot
Continuous Integration using Buildbot
Akshay Sundaran
 
What Visual Studio Code can do for Java Development
What Visual Studio Code can do for Java DevelopmentWhat Visual Studio Code can do for Java Development
What Visual Studio Code can do for Java Development
Ed Burns
 
Typescript
TypescriptTypescript
Typescript
Micky S
 
Angular for rookies MS TechDays 2017
Angular for rookies MS TechDays 2017Angular for rookies MS TechDays 2017
Angular for rookies MS TechDays 2017
Erik van Appeldoorn
 
Freelance symfony framework
Freelance symfony frameworkFreelance symfony framework
Freelance symfony framework
anikanielsen
 
PHP Conference Brazil - What can we expect about framework Laminas?
PHP Conference Brazil - What can we expect about framework Laminas?PHP Conference Brazil - What can we expect about framework Laminas?
PHP Conference Brazil - What can we expect about framework Laminas?
Flávio Lisboa
 

What's hot (20)

Continuous integration 101
Continuous integration 101Continuous integration 101
Continuous integration 101
 
Buildbot
BuildbotBuildbot
Buildbot
 
Buildbot: The Continuous Integration Python framework
Buildbot: The Continuous Integration Python frameworkBuildbot: The Continuous Integration Python framework
Buildbot: The Continuous Integration Python framework
 
Continuous integration with docker, buildbot and git
Continuous integration with docker, buildbot and gitContinuous integration with docker, buildbot and git
Continuous integration with docker, buildbot and git
 
TDD
TDDTDD
TDD
 
GDG Passo fundo - Apps with unit tests (Karma + jasmine + angular)
GDG Passo fundo - Apps with unit tests (Karma + jasmine + angular)GDG Passo fundo - Apps with unit tests (Karma + jasmine + angular)
GDG Passo fundo - Apps with unit tests (Karma + jasmine + angular)
 
That worked before
That worked beforeThat worked before
That worked before
 
How to become senior .net developer
How to become senior .net developerHow to become senior .net developer
How to become senior .net developer
 
AI Bootcamp Toronto 2018 - Set up a chat bot from zero to hero
AI Bootcamp Toronto 2018 - Set up a chat bot from zero to heroAI Bootcamp Toronto 2018 - Set up a chat bot from zero to hero
AI Bootcamp Toronto 2018 - Set up a chat bot from zero to hero
 
De Zero a Produção - João Jesus
De Zero a Produção - João JesusDe Zero a Produção - João Jesus
De Zero a Produção - João Jesus
 
How to Get started with Press2Flash in 8 Steps
How to Get started with Press2Flash in 8 StepsHow to Get started with Press2Flash in 8 Steps
How to Get started with Press2Flash in 8 Steps
 
Php On Windows
Php On WindowsPhp On Windows
Php On Windows
 
Android studio
Android studioAndroid studio
Android studio
 
MobileCity:Introduction to IOS
MobileCity:Introduction to IOSMobileCity:Introduction to IOS
MobileCity:Introduction to IOS
 
Continuous Integration using Buildbot
Continuous Integration using Buildbot Continuous Integration using Buildbot
Continuous Integration using Buildbot
 
What Visual Studio Code can do for Java Development
What Visual Studio Code can do for Java DevelopmentWhat Visual Studio Code can do for Java Development
What Visual Studio Code can do for Java Development
 
Typescript
TypescriptTypescript
Typescript
 
Angular for rookies MS TechDays 2017
Angular for rookies MS TechDays 2017Angular for rookies MS TechDays 2017
Angular for rookies MS TechDays 2017
 
Freelance symfony framework
Freelance symfony frameworkFreelance symfony framework
Freelance symfony framework
 
PHP Conference Brazil - What can we expect about framework Laminas?
PHP Conference Brazil - What can we expect about framework Laminas?PHP Conference Brazil - What can we expect about framework Laminas?
PHP Conference Brazil - What can we expect about framework Laminas?
 

Similar to Stanislav Khorunzhyi, "Front-end it like a PRO"

Autotools, Design Patterns and more
Autotools, Design Patterns and moreAutotools, Design Patterns and more
Autotools, Design Patterns and more
Vicente Bolea
 
Pain Driven Development by Alexandr Sugak
Pain Driven Development by Alexandr SugakPain Driven Development by Alexandr Sugak
Pain Driven Development by Alexandr Sugak
Sigma Software
 
DevOps - A Purpose for an Institution.pdf
DevOps - A Purpose for an Institution.pdfDevOps - A Purpose for an Institution.pdf
DevOps - A Purpose for an Institution.pdf
Vishwas N
 
Continuous integration
Continuous integrationContinuous integration
Continuous integration
Boris Dominic
 
Test Driven Development (TDD) with FlexUnit 4 - 360|Flex San Jose preso
Test Driven Development (TDD) with FlexUnit 4 - 360|Flex San Jose presoTest Driven Development (TDD) with FlexUnit 4 - 360|Flex San Jose preso
Test Driven Development (TDD) with FlexUnit 4 - 360|Flex San Jose preso
Elad Elrom
 
Test Driven Development (TDD) Preso 360|Flex 2010
Test Driven Development (TDD) Preso 360|Flex 2010Test Driven Development (TDD) Preso 360|Flex 2010
Test Driven Development (TDD) Preso 360|Flex 2010
guest5639fa9
 
Code campiasi scm-project-gabriel-cristescu-ditech
Code campiasi scm-project-gabriel-cristescu-ditechCode campiasi scm-project-gabriel-cristescu-ditech
Code campiasi scm-project-gabriel-cristescu-ditech
Codecamp Romania
 
Software Development Standard Operating Procedure
Software Development Standard Operating Procedure Software Development Standard Operating Procedure
Software Development Standard Operating Procedure
rupeshchanchal
 
Application depolyment
Application depolymentApplication depolyment
Application depolyment
shriikantL
 
Enterprise PHP (PHP London Conference 2008)
Enterprise PHP (PHP London Conference 2008)Enterprise PHP (PHP London Conference 2008)
Enterprise PHP (PHP London Conference 2008)
Ivo Jansch
 
Why is .Net Technology Recognised for Software Development?
Why is .Net Technology Recognised for Software Development?Why is .Net Technology Recognised for Software Development?
Why is .Net Technology Recognised for Software Development?
LOGINPHP360
 
Why is .Net Technology Recognised for Software Development?
Why is .Net Technology Recognised for Software Development?Why is .Net Technology Recognised for Software Development?
Why is .Net Technology Recognised for Software Development?
LOGINPHP360
 
Is Python still production ready ? Ludovic Gasc
Is Python still production ready ? Ludovic GascIs Python still production ready ? Ludovic Gasc
Is Python still production ready ? Ludovic Gasc
Pôle Systematic Paris-Region
 
ID E's features
ID E's featuresID E's features
ID E's features
wajahat Gul
 
Developer 1: Workflows And Code Management
Developer 1: Workflows And Code ManagementDeveloper 1: Workflows And Code Management
Developer 1: Workflows And Code Management
Inflectra
 
Magento 2 Best Practice Workfow // David Lambauer // Meet Magento 2017 // Lei...
Magento 2 Best Practice Workfow // David Lambauer // Meet Magento 2017 // Lei...Magento 2 Best Practice Workfow // David Lambauer // Meet Magento 2017 // Lei...
Magento 2 Best Practice Workfow // David Lambauer // Meet Magento 2017 // Lei...
AOE
 
Introduction to DevOps
Introduction to DevOpsIntroduction to DevOps
Introduction to DevOps
Omid Vahdaty
 
Untangling4
Untangling4Untangling4
Untangling4
Derek Jacoby
 
Fun with Jenkins & Salesforce
Fun with Jenkins & SalesforceFun with Jenkins & Salesforce
Fun with Jenkins & Salesforce
Abhinav Gupta
 
Introducing Continuous Integration Using Vsts
Introducing Continuous Integration Using VstsIntroducing Continuous Integration Using Vsts
Introducing Continuous Integration Using Vsts
Mohamed Samy
 

Similar to Stanislav Khorunzhyi, "Front-end it like a PRO" (20)

Autotools, Design Patterns and more
Autotools, Design Patterns and moreAutotools, Design Patterns and more
Autotools, Design Patterns and more
 
Pain Driven Development by Alexandr Sugak
Pain Driven Development by Alexandr SugakPain Driven Development by Alexandr Sugak
Pain Driven Development by Alexandr Sugak
 
DevOps - A Purpose for an Institution.pdf
DevOps - A Purpose for an Institution.pdfDevOps - A Purpose for an Institution.pdf
DevOps - A Purpose for an Institution.pdf
 
Continuous integration
Continuous integrationContinuous integration
Continuous integration
 
Test Driven Development (TDD) with FlexUnit 4 - 360|Flex San Jose preso
Test Driven Development (TDD) with FlexUnit 4 - 360|Flex San Jose presoTest Driven Development (TDD) with FlexUnit 4 - 360|Flex San Jose preso
Test Driven Development (TDD) with FlexUnit 4 - 360|Flex San Jose preso
 
Test Driven Development (TDD) Preso 360|Flex 2010
Test Driven Development (TDD) Preso 360|Flex 2010Test Driven Development (TDD) Preso 360|Flex 2010
Test Driven Development (TDD) Preso 360|Flex 2010
 
Code campiasi scm-project-gabriel-cristescu-ditech
Code campiasi scm-project-gabriel-cristescu-ditechCode campiasi scm-project-gabriel-cristescu-ditech
Code campiasi scm-project-gabriel-cristescu-ditech
 
Software Development Standard Operating Procedure
Software Development Standard Operating Procedure Software Development Standard Operating Procedure
Software Development Standard Operating Procedure
 
Application depolyment
Application depolymentApplication depolyment
Application depolyment
 
Enterprise PHP (PHP London Conference 2008)
Enterprise PHP (PHP London Conference 2008)Enterprise PHP (PHP London Conference 2008)
Enterprise PHP (PHP London Conference 2008)
 
Why is .Net Technology Recognised for Software Development?
Why is .Net Technology Recognised for Software Development?Why is .Net Technology Recognised for Software Development?
Why is .Net Technology Recognised for Software Development?
 
Why is .Net Technology Recognised for Software Development?
Why is .Net Technology Recognised for Software Development?Why is .Net Technology Recognised for Software Development?
Why is .Net Technology Recognised for Software Development?
 
Is Python still production ready ? Ludovic Gasc
Is Python still production ready ? Ludovic GascIs Python still production ready ? Ludovic Gasc
Is Python still production ready ? Ludovic Gasc
 
ID E's features
ID E's featuresID E's features
ID E's features
 
Developer 1: Workflows And Code Management
Developer 1: Workflows And Code ManagementDeveloper 1: Workflows And Code Management
Developer 1: Workflows And Code Management
 
Magento 2 Best Practice Workfow // David Lambauer // Meet Magento 2017 // Lei...
Magento 2 Best Practice Workfow // David Lambauer // Meet Magento 2017 // Lei...Magento 2 Best Practice Workfow // David Lambauer // Meet Magento 2017 // Lei...
Magento 2 Best Practice Workfow // David Lambauer // Meet Magento 2017 // Lei...
 
Introduction to DevOps
Introduction to DevOpsIntroduction to DevOps
Introduction to DevOps
 
Untangling4
Untangling4Untangling4
Untangling4
 
Fun with Jenkins & Salesforce
Fun with Jenkins & SalesforceFun with Jenkins & Salesforce
Fun with Jenkins & Salesforce
 
Introducing Continuous Integration Using Vsts
Introducing Continuous Integration Using VstsIntroducing Continuous Integration Using Vsts
Introducing Continuous Integration Using Vsts
 

More from Sigma Software

Fast is Best. Using .NET MinimalAPIs
Fast is Best. Using .NET MinimalAPIsFast is Best. Using .NET MinimalAPIs
Fast is Best. Using .NET MinimalAPIs
Sigma Software
 
"Are you developing or declining? Don't become an IT-dinosaur"
"Are you developing or declining? Don't become an IT-dinosaur""Are you developing or declining? Don't become an IT-dinosaur"
"Are you developing or declining? Don't become an IT-dinosaur"
Sigma Software
 
Michael Smolin, "Decrypting customer's cultural code"
Michael Smolin, "Decrypting customer's cultural code"Michael Smolin, "Decrypting customer's cultural code"
Michael Smolin, "Decrypting customer's cultural code"
Sigma Software
 
Max Kunytsia, “Why is continuous product discovery better than continuous del...
Max Kunytsia, “Why is continuous product discovery better than continuous del...Max Kunytsia, “Why is continuous product discovery better than continuous del...
Max Kunytsia, “Why is continuous product discovery better than continuous del...
Sigma Software
 
Marcelino Moreno, "Product Management Mindset"
Marcelino Moreno, "Product Management Mindset"Marcelino Moreno, "Product Management Mindset"
Marcelino Moreno, "Product Management Mindset"
Sigma Software
 
Andrii Pastushok, "Product Discovery in Outsourcing - What, When, and How"
Andrii Pastushok, "Product Discovery in Outsourcing - What, When, and How"Andrii Pastushok, "Product Discovery in Outsourcing - What, When, and How"
Andrii Pastushok, "Product Discovery in Outsourcing - What, When, and How"
Sigma Software
 
Elena Turkenych “BA vs PM: Who' the right person, for the right job, with the...
Elena Turkenych “BA vs PM: Who' the right person, for the right job, with the...Elena Turkenych “BA vs PM: Who' the right person, for the right job, with the...
Elena Turkenych “BA vs PM: Who' the right person, for the right job, with the...
Sigma Software
 
Eleonora Budanova “BA+PM+DEV team: how to build the synergy”
Eleonora Budanova “BA+PM+DEV team: how to build the synergy”Eleonora Budanova “BA+PM+DEV team: how to build the synergy”
Eleonora Budanova “BA+PM+DEV team: how to build the synergy”
Sigma Software
 
Stoyan Atanasov “How crucial is the BA role in an IT Project"
Stoyan Atanasov “How crucial is the BA role in an IT Project"Stoyan Atanasov “How crucial is the BA role in an IT Project"
Stoyan Atanasov “How crucial is the BA role in an IT Project"
Sigma Software
 
Olexandra Kovalyova, "Equivalence Partitioning, Boundary Values ​​Analysis, C...
Olexandra Kovalyova, "Equivalence Partitioning, Boundary Values ​​Analysis, C...Olexandra Kovalyova, "Equivalence Partitioning, Boundary Values ​​Analysis, C...
Olexandra Kovalyova, "Equivalence Partitioning, Boundary Values ​​Analysis, C...
Sigma Software
 
Yana Lysa — "Decision Tables, State-Transition testing, Pairwase Testing"
Yana Lysa — "Decision Tables, State-Transition testing, Pairwase Testing"Yana Lysa — "Decision Tables, State-Transition testing, Pairwase Testing"
Yana Lysa — "Decision Tables, State-Transition testing, Pairwase Testing"
Sigma Software
 
VOLVO x HACK SPRINT
VOLVO x HACK SPRINTVOLVO x HACK SPRINT
VOLVO x HACK SPRINT
Sigma Software
 
Business digitalization trends and challenges
Business digitalization trends and challengesBusiness digitalization trends and challenges
Business digitalization trends and challenges
Sigma Software
 
Дмитро Терещенко, "How to secure your application with Secure SDLC"
Дмитро Терещенко, "How to secure your application with Secure SDLC"Дмитро Терещенко, "How to secure your application with Secure SDLC"
Дмитро Терещенко, "How to secure your application with Secure SDLC"Sigma Software
 
Яна Лиса, “Ефективні методи написання хороших мануальних тестових сценаріїв”
Яна Лиса, “Ефективні методи написання хороших мануальних тестових сценаріїв”Яна Лиса, “Ефективні методи написання хороших мануальних тестових сценаріїв”
Яна Лиса, “Ефективні методи написання хороших мануальних тестових сценаріїв”
Sigma Software
 
Тетяна Осетрова, “Модель зрілості розподіленної проектної команди”
Тетяна Осетрова, “Модель зрілості розподіленної проектної команди”Тетяна Осетрова, “Модель зрілості розподіленної проектної команди”
Тетяна Осетрова, “Модель зрілості розподіленної проектної команди”
Sigma Software
 
Training solutions and content creation
Training solutions and content creationTraining solutions and content creation
Training solutions and content creation
Sigma Software
 
False news - false truth: tips & tricks how to avoid them
False news - false truth: tips & tricks how to avoid themFalse news - false truth: tips & tricks how to avoid them
False news - false truth: tips & tricks how to avoid them
Sigma Software
 
Анна Бойко, "Хороший контракт vs очікування клієнтів. Що вбереже вас, якщо вд...
Анна Бойко, "Хороший контракт vs очікування клієнтів. Що вбереже вас, якщо вд...Анна Бойко, "Хороший контракт vs очікування клієнтів. Що вбереже вас, якщо вд...
Анна Бойко, "Хороший контракт vs очікування клієнтів. Що вбереже вас, якщо вд...
Sigma Software
 
Дмитрий Лапшин, "The importance of TEX and Internal Quality. How explain and ...
Дмитрий Лапшин, "The importance of TEX and Internal Quality. How explain and ...Дмитрий Лапшин, "The importance of TEX and Internal Quality. How explain and ...
Дмитрий Лапшин, "The importance of TEX and Internal Quality. How explain and ...
Sigma Software
 

More from Sigma Software (20)

Fast is Best. Using .NET MinimalAPIs
Fast is Best. Using .NET MinimalAPIsFast is Best. Using .NET MinimalAPIs
Fast is Best. Using .NET MinimalAPIs
 
"Are you developing or declining? Don't become an IT-dinosaur"
"Are you developing or declining? Don't become an IT-dinosaur""Are you developing or declining? Don't become an IT-dinosaur"
"Are you developing or declining? Don't become an IT-dinosaur"
 
Michael Smolin, "Decrypting customer's cultural code"
Michael Smolin, "Decrypting customer's cultural code"Michael Smolin, "Decrypting customer's cultural code"
Michael Smolin, "Decrypting customer's cultural code"
 
Max Kunytsia, “Why is continuous product discovery better than continuous del...
Max Kunytsia, “Why is continuous product discovery better than continuous del...Max Kunytsia, “Why is continuous product discovery better than continuous del...
Max Kunytsia, “Why is continuous product discovery better than continuous del...
 
Marcelino Moreno, "Product Management Mindset"
Marcelino Moreno, "Product Management Mindset"Marcelino Moreno, "Product Management Mindset"
Marcelino Moreno, "Product Management Mindset"
 
Andrii Pastushok, "Product Discovery in Outsourcing - What, When, and How"
Andrii Pastushok, "Product Discovery in Outsourcing - What, When, and How"Andrii Pastushok, "Product Discovery in Outsourcing - What, When, and How"
Andrii Pastushok, "Product Discovery in Outsourcing - What, When, and How"
 
Elena Turkenych “BA vs PM: Who' the right person, for the right job, with the...
Elena Turkenych “BA vs PM: Who' the right person, for the right job, with the...Elena Turkenych “BA vs PM: Who' the right person, for the right job, with the...
Elena Turkenych “BA vs PM: Who' the right person, for the right job, with the...
 
Eleonora Budanova “BA+PM+DEV team: how to build the synergy”
Eleonora Budanova “BA+PM+DEV team: how to build the synergy”Eleonora Budanova “BA+PM+DEV team: how to build the synergy”
Eleonora Budanova “BA+PM+DEV team: how to build the synergy”
 
Stoyan Atanasov “How crucial is the BA role in an IT Project"
Stoyan Atanasov “How crucial is the BA role in an IT Project"Stoyan Atanasov “How crucial is the BA role in an IT Project"
Stoyan Atanasov “How crucial is the BA role in an IT Project"
 
Olexandra Kovalyova, "Equivalence Partitioning, Boundary Values ​​Analysis, C...
Olexandra Kovalyova, "Equivalence Partitioning, Boundary Values ​​Analysis, C...Olexandra Kovalyova, "Equivalence Partitioning, Boundary Values ​​Analysis, C...
Olexandra Kovalyova, "Equivalence Partitioning, Boundary Values ​​Analysis, C...
 
Yana Lysa — "Decision Tables, State-Transition testing, Pairwase Testing"
Yana Lysa — "Decision Tables, State-Transition testing, Pairwase Testing"Yana Lysa — "Decision Tables, State-Transition testing, Pairwase Testing"
Yana Lysa — "Decision Tables, State-Transition testing, Pairwase Testing"
 
VOLVO x HACK SPRINT
VOLVO x HACK SPRINTVOLVO x HACK SPRINT
VOLVO x HACK SPRINT
 
Business digitalization trends and challenges
Business digitalization trends and challengesBusiness digitalization trends and challenges
Business digitalization trends and challenges
 
Дмитро Терещенко, "How to secure your application with Secure SDLC"
Дмитро Терещенко, "How to secure your application with Secure SDLC"Дмитро Терещенко, "How to secure your application with Secure SDLC"
Дмитро Терещенко, "How to secure your application with Secure SDLC"
 
Яна Лиса, “Ефективні методи написання хороших мануальних тестових сценаріїв”
Яна Лиса, “Ефективні методи написання хороших мануальних тестових сценаріїв”Яна Лиса, “Ефективні методи написання хороших мануальних тестових сценаріїв”
Яна Лиса, “Ефективні методи написання хороших мануальних тестових сценаріїв”
 
Тетяна Осетрова, “Модель зрілості розподіленної проектної команди”
Тетяна Осетрова, “Модель зрілості розподіленної проектної команди”Тетяна Осетрова, “Модель зрілості розподіленної проектної команди”
Тетяна Осетрова, “Модель зрілості розподіленної проектної команди”
 
Training solutions and content creation
Training solutions and content creationTraining solutions and content creation
Training solutions and content creation
 
False news - false truth: tips & tricks how to avoid them
False news - false truth: tips & tricks how to avoid themFalse news - false truth: tips & tricks how to avoid them
False news - false truth: tips & tricks how to avoid them
 
Анна Бойко, "Хороший контракт vs очікування клієнтів. Що вбереже вас, якщо вд...
Анна Бойко, "Хороший контракт vs очікування клієнтів. Що вбереже вас, якщо вд...Анна Бойко, "Хороший контракт vs очікування клієнтів. Що вбереже вас, якщо вд...
Анна Бойко, "Хороший контракт vs очікування клієнтів. Що вбереже вас, якщо вд...
 
Дмитрий Лапшин, "The importance of TEX and Internal Quality. How explain and ...
Дмитрий Лапшин, "The importance of TEX and Internal Quality. How explain and ...Дмитрий Лапшин, "The importance of TEX and Internal Quality. How explain and ...
Дмитрий Лапшин, "The importance of TEX and Internal Quality. How explain and ...
 

Recently uploaded

Best 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERPBest 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERP
Pixlogix Infotech
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
Uni Systems S.M.S.A.
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Paige Cruz
 
Full-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalizationFull-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalization
Zilliz
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
Neo4j
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
Matthew Sinclair
 
Mariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceXMariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceX
Mariano Tinti
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
Neo4j
 
Infrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI modelsInfrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI models
Zilliz
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
Kumud Singh
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
Kari Kakkonen
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
danishmna97
 
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
Edge AI and Vision Alliance
 
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
SOFTTECHHUB
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
Quotidiano Piemontese
 
How to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For FlutterHow to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For Flutter
Daiki Mogmet Ito
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
panagenda
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
DianaGray10
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
Zilliz
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 

Recently uploaded (20)

Best 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERPBest 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERP
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
 
Full-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalizationFull-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalization
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
 
Mariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceXMariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceX
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
 
Infrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI modelsInfrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI models
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
 
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
 
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
 
How to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For FlutterHow to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For Flutter
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 

Stanislav Khorunzhyi, "Front-end it like a PRO"

  • 1. Front-end it like a PRO By Stanislav Khorunzhyi
  • 2. A few words about me 1. Senior JavaScript Developer at Sigma Software 2. I am a driver of JavaScript community in my company 3. 99% of my work is strictly directed to the Front-End development 4. During last year I interviewed more than 50 people on different positions 5. Now I work onVue.js start-ups 6. I think that any successful project must have Git Hooks, good linters,TypeScript, Unit tests and lodash.
  • 3. Who is a PRO developer? 1. Makes code that does not require any refactoring 2. Applies the brand-new practices and features 3. Puts the right things to the right places 4. Knows how to work with UI 5. Always keeps in mind that the user experience (UX) is the most important part of any application / website / game etc.
  • 4.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10. Because your form is not a form…
  • 11. Tip #1: Always use <form> tag for a form
  • 12. Tip #1: Always use <form> tag for a form
  • 13. Tip #2: Use labels for inputs
  • 14. Tip #2: Use labels for inputs
  • 15. Tip #3: Use modern tags PRO developer uses the new tags from HTML5 specification:
  • 16. Tip #4: Add shortcuts & hotkeys
  • 17. Tip #4: Add shortcuts & hotkeys 1. https://www.npmjs.com/package/hotkeys-js 2. https://www.npmjs.com/package/mousetrap
  • 18. Tip #5: Keep a version of the app in footer 1. It allows users to report bugs 2. Allows QA engineers to specify the app version in bug description 3. Avoids inconsistent state when on some environment it works, but on other it doesn’t
  • 19. Tip #6: Configure ESLint + Stylelint at the beginning 1. Forget aboutTSLint (it’s fully deprecated) 2. Don’t spent time on configuring linter by yourself (just use or modify Airbnb or other popular config) 3. Continuously extend the config and adapt it to the project needs 4. Run linters on each commit or push in Git
  • 20. Tip #7: Add Git hooks to the project 1. Git hooks allow you to run any bash script when certain important actions occur 2. The most popular actions to hook are commit and push 3. All what you need is Husky!
  • 22. Tip #7: Add Git hooks to the project Husky makes git hooks easy: https://www.npmjs.com/package/husky package.json
  • 23. Tip #7: Add Git hooks to the project Lint-staged will run Git hooks only against staged Git files: https://www.npmjs.com/package/lint-staged package.json
  • 24. Tip #8: Know how the transpiling process work 1. What happens to theTypeScript / ES Next code? 2. What is the difference between concatenation, minification and transpiling? 3. What are polyfills for? 4. How SASS / LESS / etc. variables work?
  • 25. Transpiling process:TypeScript 1. TypeScript gets compiled into JavaScript withTSC (TypeScript compiler) and in rare cases with Babel 2. When there is aTypeError, theTypeScript will not be built for the production (types are pretty strict) 3. Each 3rd party dependency (library) must have a @types included (or the developer must describe them by himself)
  • 30. Processing code: Polyfills A polyfill is a piece of code (usually JavaScript on theWeb) used to provide modern functionality on older browsers that do not natively support it.
  • 31. Tip #9: Configure auto-polyfills .browserlistrc file will help tools like PostCSS or babel-preset-env correctly add polyfills to your app:
  • 32. Tip #10: Use modern array methods
  • 33.
  • 34.
  • 35. Tip #10: Use modern array methods
  • 36. Tip #11: Use lazy loading 1. Lazy loading helps your application to be loaded faster 2. Scripts, images, videos or even the whole pages can be lazy loaded 3. If the lazy loading is applied to the pages, make sure you lazy load only rarely used pages
  • 37. Tip #12: Optimize the final bundle 1. UseWeback bundle analyzer to check what is included to your final bundle 2. Use Audit tab on Chrome DevTools (called Lighthouse) to check the page loading speed 3. Try to avoid libraries with default exports
  • 40. Useful resources 1. HTML semantics and modern tags 2. Building forms 3. eslint-config-airbnb 4. stylelint-config-airbnb 5. TypeScript compiler options 6. Polyfills in JavaScript 7. Configuring browserslist 8. Modern array methods
  • 41. Apply these rules and let’s make the Front-End great again! https://t.me/stan_kh

Editor's Notes

  1. Расставим все точки над и... Но делает это не бездумно Делает правильные вещи в правильных местах
  2. Интерфейс довольно сильно нагружен, с первого взгляда довольно сложно сказать куда мы должны нажать чтобы передать сообщение по рации. Но нам не нужно быть профессионалом или игроманом, чтобы знать что
  3. И первый пример ошибки, которую не допустит профессиональный девелопер,
  4. Это использование тега формы для создания форм.
  5. Скорей всего этот пример для вас он очевиден и прост. Но это отличный пример того, как простым несоблюдением правил, мы можем испортить пользователям их user experience В формах есть еще несколько паттернов, к которым пользователи уже привыкли, к примеру
  6. Мы можем положить эти лейблы в span и добавить стилей, но если мы положим их в тег <label> с аттрибутом for
  7. на нашем инпуте автоматически сработает событие фокус. Поэтому правильное использование форм, поможет значительно улучшить user experience на вашем приложении
  8. There are many new tags that came with HTML 5 and you have to know them all. I would also say that semantic HTML is pretty important to get your app ranked to the top in the Google search results. Google robots will know where is the article, and where is the headings
  9. We added a couple of shortcuts to the app, like c - create request and cmd + D to duplicate an existing request. The users were so happy with these improvemet. Это сможет показать вашу компетенцию с лучшей стороны, что вы заботитесь не только о том как бы побыстрей сдать фичу, а о своих пользователях
  10. Вы можете предложить это сделать, и возможно это сэкономит вам уйму времени. Избежать ситуации,
  11. Мы долгое время использовали Хаски на одном из проектов, и после столкнулись в проблемой
  12. Linters for JavaScript are pretty fast, but on one of my projects we had too many components and we realized that we didn't have to run linters for the files, that we had not touched
  13. Как профессиональный разработчик, вы должны хорошо знать как работает процесс транспайлинга, и что происходит с вашим кодом до того как он попадает на продакшн
  14. Чем-то похоже на такие языки как Джава
  15. Есть такое слово Транспайлинг Что же это значит? Наш код, он адаптируется, заменяя новые конструкции на те, которые уже есть в старых версиях языка, и зачастую это увеличивает размер файла
  16. Each modern front-end project ships only one javascript file
  17. Earlier we used to include polyfills to our apps manually Ok, moving forward
  18. И давайте снова сделаем фронт-енд великим! Всем спасибо!