SlideShare a Scribd company logo

30 Skills to Master to Become a Senior Software Engineer

S
S

This talk was given February 6, 2016 at the SunshinePHP conference in Miami, Florida.

30 Skills to Master to Become a Senior Software Engineer

1 of 73
Download to read offline
30 Skills to Master to Become a
Senior Software Engineer
Dr. Sean Coates

February 6, 2016
About Me
• CTO at CircleBack Lending - Boca Raton, FL
• @fooyay
• scoates@circlebacklending.com
Why I Care
• hired 15 PHP developers in the past 18 months
• reviewed hundreds of candidates
• 95% of candidates simply do not measure up
• really wish more people embraced these skills
• we always need more senior software engineers
Why You Should Care
• Senior Software Engineers command higher salaries
• software development done the right way makes for
more reliable applications that are easier to expand
and grow
• well-rounded individuals are more likely to be tasked
with mentoring and leading others, to spread the
knowledge
• a lot less time wasted on technical debt
Fair Warning!
• this is a highly opinionated presentation
• I favor open source and PHP related technologies,
but there are certainly other paths to success
• your mileage may vary
• going to cover a lot of ground quickly - there is a
link to the slides at the end
If You Want to Keep Score
There are 30 skills, if you want to score yourself, give
your self points on each slide based on which
solution matches your practice.
• 0 points for poor
• 3 points for fair
• 7 points for good
• 10 points for excellent answers
Ad

Recommended

Containerizing legacy applications
Containerizing legacy applicationsContainerizing legacy applications
Containerizing legacy applicationsAndrew Kirkpatrick
 
Developing PHP Applications Faster
Developing PHP Applications FasterDeveloping PHP Applications Faster
Developing PHP Applications FasterAdam Culp
 
Behaviour testing for single-page applications and API’s
Behaviour testing for single-page applications and API’sBehaviour testing for single-page applications and API’s
Behaviour testing for single-page applications and API’sAndrew Kirkpatrick
 
How To Use Selenium Successfully (Java Edition)
How To Use Selenium Successfully (Java Edition)How To Use Selenium Successfully (Java Edition)
How To Use Selenium Successfully (Java Edition)Dave Haeffner
 
Laravel Forge: Hello World to Hello Production
Laravel Forge: Hello World to Hello ProductionLaravel Forge: Hello World to Hello Production
Laravel Forge: Hello World to Hello ProductionJoe Ferguson
 
Mastering Test Automation: How to Use Selenium Successfully
Mastering Test Automation: How to Use Selenium Successfully Mastering Test Automation: How to Use Selenium Successfully
Mastering Test Automation: How to Use Selenium Successfully Applitools
 
Creating a Smooth Development Workflow for High-Quality Modular Open-Source P...
Creating a Smooth Development Workflow for High-Quality Modular Open-Source P...Creating a Smooth Development Workflow for High-Quality Modular Open-Source P...
Creating a Smooth Development Workflow for High-Quality Modular Open-Source P...Pantheon
 

More Related Content

What's hot

How To Use Selenium Successfully (Java Edition)
How To Use Selenium Successfully (Java Edition)How To Use Selenium Successfully (Java Edition)
How To Use Selenium Successfully (Java Edition)Sauce Labs
 
Continuous delivery with open source tools
Continuous delivery with open source toolsContinuous delivery with open source tools
Continuous delivery with open source toolsSebastian Helzle
 
Testing Your Code as Part of an Industrial Grade Workflow
Testing Your Code as Part of an Industrial Grade WorkflowTesting Your Code as Part of an Industrial Grade Workflow
Testing Your Code as Part of an Industrial Grade WorkflowPantheon
 
Organizing Your PHP Projects (2010 ConFoo)
Organizing Your PHP Projects (2010 ConFoo)Organizing Your PHP Projects (2010 ConFoo)
Organizing Your PHP Projects (2010 ConFoo)Paul Jones
 
Testing desktop apps with selenium
Testing desktop apps with seleniumTesting desktop apps with selenium
Testing desktop apps with seleniumFilip Braun
 
Auditing Drupal Sites
Auditing Drupal SitesAuditing Drupal Sites
Auditing Drupal SitesExove
 
Automated Testing using JavaScript
Automated Testing using JavaScriptAutomated Testing using JavaScript
Automated Testing using JavaScriptSimon Guest
 
Beyond the Release: CI That Transforms Organizations
Beyond the Release: CI That Transforms OrganizationsBeyond the Release: CI That Transforms Organizations
Beyond the Release: CI That Transforms OrganizationsSauce Labs
 
Selenium RC: Automated Testing of Modern Web Applications
Selenium RC: Automated Testing of Modern Web ApplicationsSelenium RC: Automated Testing of Modern Web Applications
Selenium RC: Automated Testing of Modern Web Applicationsqooxdoo
 
Take your CFML Legacy Apps to Modernization
Take your CFML Legacy Apps to ModernizationTake your CFML Legacy Apps to Modernization
Take your CFML Legacy Apps to ModernizationOrtus Solutions, Corp
 
Continuous Delivery for Front-End Engineers
Continuous Delivery for Front-End EngineersContinuous Delivery for Front-End Engineers
Continuous Delivery for Front-End EngineersSergey Bolshchikov
 
Why Your Site is Slow: Performance Answers for Your Clients
Why Your Site is Slow: Performance Answers for Your ClientsWhy Your Site is Slow: Performance Answers for Your Clients
Why Your Site is Slow: Performance Answers for Your ClientsPantheon
 
Testing Java Web Apps With Selenium
Testing Java Web Apps With SeleniumTesting Java Web Apps With Selenium
Testing Java Web Apps With SeleniumMarakana Inc.
 
Improve Development Process with Open Source Software
Improve Development Process with Open Source SoftwareImprove Development Process with Open Source Software
Improve Development Process with Open Source Softwareelliando dias
 
Continuous Delivery concept overview. Continuous Integration Systems. DevOps ...
Continuous Delivery concept overview. Continuous Integration Systems. DevOps ...Continuous Delivery concept overview. Continuous Integration Systems. DevOps ...
Continuous Delivery concept overview. Continuous Integration Systems. DevOps ...eleksdev
 
Selenium Tips & Tricks, presented at the Tel Aviv Selenium Meetup
Selenium Tips & Tricks, presented at the Tel Aviv Selenium MeetupSelenium Tips & Tricks, presented at the Tel Aviv Selenium Meetup
Selenium Tips & Tricks, presented at the Tel Aviv Selenium MeetupDave Haeffner
 

What's hot (20)

How To Use Selenium Successfully (Java Edition)
How To Use Selenium Successfully (Java Edition)How To Use Selenium Successfully (Java Edition)
How To Use Selenium Successfully (Java Edition)
 
Continuous delivery with open source tools
Continuous delivery with open source toolsContinuous delivery with open source tools
Continuous delivery with open source tools
 
Enterprise PHP
Enterprise PHPEnterprise PHP
Enterprise PHP
 
Testing Your Code as Part of an Industrial Grade Workflow
Testing Your Code as Part of an Industrial Grade WorkflowTesting Your Code as Part of an Industrial Grade Workflow
Testing Your Code as Part of an Industrial Grade Workflow
 
Organizing Your PHP Projects (2010 ConFoo)
Organizing Your PHP Projects (2010 ConFoo)Organizing Your PHP Projects (2010 ConFoo)
Organizing Your PHP Projects (2010 ConFoo)
 
Testing desktop apps with selenium
Testing desktop apps with seleniumTesting desktop apps with selenium
Testing desktop apps with selenium
 
Developing better PHP projects
Developing better PHP projectsDeveloping better PHP projects
Developing better PHP projects
 
Auditing Drupal Sites
Auditing Drupal SitesAuditing Drupal Sites
Auditing Drupal Sites
 
Automated Testing using JavaScript
Automated Testing using JavaScriptAutomated Testing using JavaScript
Automated Testing using JavaScript
 
Web presentation
Web presentationWeb presentation
Web presentation
 
Beyond the Release: CI That Transforms Organizations
Beyond the Release: CI That Transforms OrganizationsBeyond the Release: CI That Transforms Organizations
Beyond the Release: CI That Transforms Organizations
 
Selenium RC: Automated Testing of Modern Web Applications
Selenium RC: Automated Testing of Modern Web ApplicationsSelenium RC: Automated Testing of Modern Web Applications
Selenium RC: Automated Testing of Modern Web Applications
 
Take your CFML Legacy Apps to Modernization
Take your CFML Legacy Apps to ModernizationTake your CFML Legacy Apps to Modernization
Take your CFML Legacy Apps to Modernization
 
Continuous Delivery for Front-End Engineers
Continuous Delivery for Front-End EngineersContinuous Delivery for Front-End Engineers
Continuous Delivery for Front-End Engineers
 
Why Your Site is Slow: Performance Answers for Your Clients
Why Your Site is Slow: Performance Answers for Your ClientsWhy Your Site is Slow: Performance Answers for Your Clients
Why Your Site is Slow: Performance Answers for Your Clients
 
Drupal 7 ci and testing
Drupal 7 ci and testingDrupal 7 ci and testing
Drupal 7 ci and testing
 
Testing Java Web Apps With Selenium
Testing Java Web Apps With SeleniumTesting Java Web Apps With Selenium
Testing Java Web Apps With Selenium
 
Improve Development Process with Open Source Software
Improve Development Process with Open Source SoftwareImprove Development Process with Open Source Software
Improve Development Process with Open Source Software
 
Continuous Delivery concept overview. Continuous Integration Systems. DevOps ...
Continuous Delivery concept overview. Continuous Integration Systems. DevOps ...Continuous Delivery concept overview. Continuous Integration Systems. DevOps ...
Continuous Delivery concept overview. Continuous Integration Systems. DevOps ...
 
Selenium Tips & Tricks, presented at the Tel Aviv Selenium Meetup
Selenium Tips & Tricks, presented at the Tel Aviv Selenium MeetupSelenium Tips & Tricks, presented at the Tel Aviv Selenium Meetup
Selenium Tips & Tricks, presented at the Tel Aviv Selenium Meetup
 

Viewers also liked

Career building and skills development
Career building and skills developmentCareer building and skills development
Career building and skills developmentguestaf76a10
 
Why Software Process Improvement Is Not Enough
Why Software Process Improvement Is Not EnoughWhy Software Process Improvement Is Not Enough
Why Software Process Improvement Is Not EnoughAlly Gill
 
Automatic Assessment of Programming Assignments
Automatic Assessment of Programming AssignmentsAutomatic Assessment of Programming Assignments
Automatic Assessment of Programming AssignmentsPetri Ihantola
 
web design & web development
web design & web developmentweb design & web development
web design & web developmentHossam Mohamed
 
Exploring how technology caters to your students multiple intelligences
Exploring how technology caters to your students multiple intelligencesExploring how technology caters to your students multiple intelligences
Exploring how technology caters to your students multiple intelligencesKelly Walsh
 
Employee Recruitment System srs
Employee Recruitment System srsEmployee Recruitment System srs
Employee Recruitment System srskrupal shah
 
Employee Management System
Employee Management SystemEmployee Management System
Employee Management Systemvivek shah
 
Basics of c++ Programming Language
Basics of c++ Programming LanguageBasics of c++ Programming Language
Basics of c++ Programming LanguageAhmad Idrees
 

Viewers also liked (11)

Career building and skills development
Career building and skills developmentCareer building and skills development
Career building and skills development
 
Why Software Process Improvement Is Not Enough
Why Software Process Improvement Is Not EnoughWhy Software Process Improvement Is Not Enough
Why Software Process Improvement Is Not Enough
 
Automatic Assessment of Programming Assignments
Automatic Assessment of Programming AssignmentsAutomatic Assessment of Programming Assignments
Automatic Assessment of Programming Assignments
 
web design & web development
web design & web developmentweb design & web development
web design & web development
 
Exploring how technology caters to your students multiple intelligences
Exploring how technology caters to your students multiple intelligencesExploring how technology caters to your students multiple intelligences
Exploring how technology caters to your students multiple intelligences
 
Career Options in Software Industry
Career Options in Software IndustryCareer Options in Software Industry
Career Options in Software Industry
 
Programing Fundamental
Programing FundamentalPrograming Fundamental
Programing Fundamental
 
Career Pathing
Career PathingCareer Pathing
Career Pathing
 
Employee Recruitment System srs
Employee Recruitment System srsEmployee Recruitment System srs
Employee Recruitment System srs
 
Employee Management System
Employee Management SystemEmployee Management System
Employee Management System
 
Basics of c++ Programming Language
Basics of c++ Programming LanguageBasics of c++ Programming Language
Basics of c++ Programming Language
 

Similar to 30 Skills to Master to Become a Senior Software Engineer

System design for Web Application
System design for Web ApplicationSystem design for Web Application
System design for Web ApplicationMichael Choi
 
The Guide to becoming a full stack developer in 2018
The Guide to becoming a full stack developer in 2018The Guide to becoming a full stack developer in 2018
The Guide to becoming a full stack developer in 2018Amit Ashwini
 
Website and it's importance
Website and it's importanceWebsite and it's importance
Website and it's importanceRobinSingh347
 
198970820 p-oooooooooo
198970820 p-oooooooooo198970820 p-oooooooooo
198970820 p-oooooooooohomeworkping4
 
Top 30 Scalability Mistakes
Top 30 Scalability MistakesTop 30 Scalability Mistakes
Top 30 Scalability MistakesJohn Coggeshall
 
Cross platform engineering - Lessons Learned (Michael Asimakopoulos, Valadis ...
Cross platform engineering - Lessons Learned (Michael Asimakopoulos, Valadis ...Cross platform engineering - Lessons Learned (Michael Asimakopoulos, Valadis ...
Cross platform engineering - Lessons Learned (Michael Asimakopoulos, Valadis ...GreeceJS
 
Meetup. Technologies Intro for Non-Tech People
Meetup. Technologies Intro for Non-Tech PeopleMeetup. Technologies Intro for Non-Tech People
Meetup. Technologies Intro for Non-Tech PeopleIT Arena
 
SharePoint Framework -The future of SharePoint/ Office 365 developer ecosystem.
SharePoint Framework -The future of SharePoint/ Office 365 developer ecosystem. SharePoint Framework -The future of SharePoint/ Office 365 developer ecosystem.
SharePoint Framework -The future of SharePoint/ Office 365 developer ecosystem. Kushan Lahiru Perera
 
Java And Community Support
Java And Community SupportJava And Community Support
Java And Community SupportWilliam Grosso
 
Top 10 Scalability Mistakes
Top 10 Scalability MistakesTop 10 Scalability Mistakes
Top 10 Scalability MistakesJohn Coggeshall
 
Node.JS Vs PHP: Which Is The Top Server-Side Programming Language?
Node.JS Vs PHP: Which Is The Top Server-Side Programming Language?Node.JS Vs PHP: Which Is The Top Server-Side Programming Language?
Node.JS Vs PHP: Which Is The Top Server-Side Programming Language?Pixel Crayons
 
Bledar Gjocaj - Java open source
Bledar Gjocaj - Java open sourceBledar Gjocaj - Java open source
Bledar Gjocaj - Java open sourceOpen Labs Albania
 
Tech Thursdays: Building Products
Tech Thursdays: Building ProductsTech Thursdays: Building Products
Tech Thursdays: Building ProductsHayden Bleasel
 
Top 6 leading PHP frameworks for web development
Top 6 leading PHP frameworks for web developmentTop 6 leading PHP frameworks for web development
Top 6 leading PHP frameworks for web developmentAppfinz Technologies
 
Java Development Company | Xicom
Java Development Company | XicomJava Development Company | Xicom
Java Development Company | XicomRyanForeman5
 

Similar to 30 Skills to Master to Become a Senior Software Engineer (20)

System design for Web Application
System design for Web ApplicationSystem design for Web Application
System design for Web Application
 
The Guide to becoming a full stack developer in 2018
The Guide to becoming a full stack developer in 2018The Guide to becoming a full stack developer in 2018
The Guide to becoming a full stack developer in 2018
 
Website and it's importance
Website and it's importanceWebsite and it's importance
Website and it's importance
 
198970820 p-oooooooooo
198970820 p-oooooooooo198970820 p-oooooooooo
198970820 p-oooooooooo
 
Top 30 Scalability Mistakes
Top 30 Scalability MistakesTop 30 Scalability Mistakes
Top 30 Scalability Mistakes
 
lamp.pptx
lamp.pptxlamp.pptx
lamp.pptx
 
Cross platform engineering - Lessons Learned (Michael Asimakopoulos, Valadis ...
Cross platform engineering - Lessons Learned (Michael Asimakopoulos, Valadis ...Cross platform engineering - Lessons Learned (Michael Asimakopoulos, Valadis ...
Cross platform engineering - Lessons Learned (Michael Asimakopoulos, Valadis ...
 
Dean4j@Njug5
Dean4j@Njug5Dean4j@Njug5
Dean4j@Njug5
 
Meetup. Technologies Intro for Non-Tech People
Meetup. Technologies Intro for Non-Tech PeopleMeetup. Technologies Intro for Non-Tech People
Meetup. Technologies Intro for Non-Tech People
 
SharePoint Framework -The future of SharePoint/ Office 365 developer ecosystem.
SharePoint Framework -The future of SharePoint/ Office 365 developer ecosystem. SharePoint Framework -The future of SharePoint/ Office 365 developer ecosystem.
SharePoint Framework -The future of SharePoint/ Office 365 developer ecosystem.
 
Java And Community Support
Java And Community SupportJava And Community Support
Java And Community Support
 
Codeigniter
CodeigniterCodeigniter
Codeigniter
 
Top 10 Scalability Mistakes
Top 10 Scalability MistakesTop 10 Scalability Mistakes
Top 10 Scalability Mistakes
 
Node.JS Vs PHP: Which Is The Top Server-Side Programming Language?
Node.JS Vs PHP: Which Is The Top Server-Side Programming Language?Node.JS Vs PHP: Which Is The Top Server-Side Programming Language?
Node.JS Vs PHP: Which Is The Top Server-Side Programming Language?
 
Bledar Gjocaj - Java open source
Bledar Gjocaj - Java open sourceBledar Gjocaj - Java open source
Bledar Gjocaj - Java open source
 
Tech Thursdays: Building Products
Tech Thursdays: Building ProductsTech Thursdays: Building Products
Tech Thursdays: Building Products
 
Top 6 leading PHP frameworks for web development
Top 6 leading PHP frameworks for web developmentTop 6 leading PHP frameworks for web development
Top 6 leading PHP frameworks for web development
 
How backbone.js is different from ember.js?
How backbone.js is different from ember.js?How backbone.js is different from ember.js?
How backbone.js is different from ember.js?
 
Sustainability and bit-rot
Sustainability and bit-rotSustainability and bit-rot
Sustainability and bit-rot
 
Java Development Company | Xicom
Java Development Company | XicomJava Development Company | Xicom
Java Development Company | Xicom
 

Recently uploaded

Enhancing SaaS Performance: A Hands-on Workshop for Partners
Enhancing SaaS Performance: A Hands-on Workshop for PartnersEnhancing SaaS Performance: A Hands-on Workshop for Partners
Enhancing SaaS Performance: A Hands-on Workshop for PartnersThousandEyes
 
Microsoft Azure News - Feb 2024
Microsoft Azure News - Feb 2024Microsoft Azure News - Feb 2024
Microsoft Azure News - Feb 2024Daniel Toomey
 
LLMs, LMMs, their Improvement Suggestions and the Path towards AGI.pdf
LLMs, LMMs, their Improvement Suggestions and the Path towards AGI.pdfLLMs, LMMs, their Improvement Suggestions and the Path towards AGI.pdf
LLMs, LMMs, their Improvement Suggestions and the Path towards AGI.pdfThomas Poetter
 
My sample product research idea for you!
My sample product research idea for you!My sample product research idea for you!
My sample product research idea for you!KivenRaySarsaba
 
Tete thermostatique Zigbee MOES BRT-100 V2.pdf
Tete thermostatique Zigbee MOES BRT-100 V2.pdfTete thermostatique Zigbee MOES BRT-100 V2.pdf
Tete thermostatique Zigbee MOES BRT-100 V2.pdfDomotica daVinci
 
Z-Wave Fan coil Thermostat Heltun_HE-HT01_User_Manual.pdf
Z-Wave Fan coil Thermostat Heltun_HE-HT01_User_Manual.pdfZ-Wave Fan coil Thermostat Heltun_HE-HT01_User_Manual.pdf
Z-Wave Fan coil Thermostat Heltun_HE-HT01_User_Manual.pdfDomotica daVinci
 
Put a flag on it. A busy developer's guide to feature toggles.
Put a flag on it. A busy developer's guide to feature toggles.Put a flag on it. A busy developer's guide to feature toggles.
Put a flag on it. A busy developer's guide to feature toggles.Mateusz Kwasniewski
 
21ST CENTURY LITERACY FROM TRADITIONAL TO MODERN
21ST CENTURY LITERACY FROM TRADITIONAL TO MODERN21ST CENTURY LITERACY FROM TRADITIONAL TO MODERN
21ST CENTURY LITERACY FROM TRADITIONAL TO MODERNRonnelBaroc
 
Navigating the Never Normal Strategies for Portfolio Leaders
Navigating the Never Normal Strategies for Portfolio LeadersNavigating the Never Normal Strategies for Portfolio Leaders
Navigating the Never Normal Strategies for Portfolio LeadersOnePlan Solutions
 
Curtain Module Manual Zigbee Neo CS01-1C.pdf
Curtain Module Manual Zigbee Neo CS01-1C.pdfCurtain Module Manual Zigbee Neo CS01-1C.pdf
Curtain Module Manual Zigbee Neo CS01-1C.pdfDomotica daVinci
 
From eSIMs to iSIMs: It’s Inside the Manufacturing
From eSIMs to iSIMs: It’s Inside the ManufacturingFrom eSIMs to iSIMs: It’s Inside the Manufacturing
From eSIMs to iSIMs: It’s Inside the ManufacturingSoracom Global, Inc.
 
Automate Your Master Data Processes for Shared Service Center Excellence
Automate Your Master Data Processes for Shared Service Center ExcellenceAutomate Your Master Data Processes for Shared Service Center Excellence
Automate Your Master Data Processes for Shared Service Center ExcellencePrecisely
 
Avoiding Bad Stats and the Benefits of Playing Trivia with Friends: PancakesC...
Avoiding Bad Stats and the Benefits of Playing Trivia with Friends: PancakesC...Avoiding Bad Stats and the Benefits of Playing Trivia with Friends: PancakesC...
Avoiding Bad Stats and the Benefits of Playing Trivia with Friends: PancakesC...Adrian Sanabria
 
Manual Eurotronic Thermostatic Valve Comry Z-Wave
Manual Eurotronic Thermostatic Valve Comry Z-WaveManual Eurotronic Thermostatic Valve Comry Z-Wave
Manual Eurotronic Thermostatic Valve Comry Z-WaveDomotica daVinci
 
Heltun_HE-RS01_User_Manual_B9AH.pdf
Heltun_HE-RS01_User_Manual_B9AH.pdfHeltun_HE-RS01_User_Manual_B9AH.pdf
Heltun_HE-RS01_User_Manual_B9AH.pdfMarielaL5
 
5 Things You Shouldn’t Do at Salesforce World Tour Sydney 2024!
5 Things You Shouldn’t Do at Salesforce World Tour Sydney 2024!5 Things You Shouldn’t Do at Salesforce World Tour Sydney 2024!
5 Things You Shouldn’t Do at Salesforce World Tour Sydney 2024!XfilesPro
 
Bluetooth Low Energy(BLE) and beacons working
Bluetooth Low Energy(BLE) and beacons workingBluetooth Low Energy(BLE) and beacons working
Bluetooth Low Energy(BLE) and beacons workingshrey Ansh
 
Q1 Memory Fabric Forum: Advantages of Optical CXL​ for Disaggregated Compute ...
Q1 Memory Fabric Forum: Advantages of Optical CXL​ for Disaggregated Compute ...Q1 Memory Fabric Forum: Advantages of Optical CXL​ for Disaggregated Compute ...
Q1 Memory Fabric Forum: Advantages of Optical CXL​ for Disaggregated Compute ...Memory Fabric Forum
 
OTel Orientation_ How to Train Teams (OTel in Practice).pdf
OTel Orientation_ How to Train Teams (OTel in Practice).pdfOTel Orientation_ How to Train Teams (OTel in Practice).pdf
OTel Orientation_ How to Train Teams (OTel in Practice).pdfPaige Cruz
 
Introduction to Serverless with AWS Lambda in C#.pptx
Introduction to Serverless with AWS Lambda in C#.pptxIntroduction to Serverless with AWS Lambda in C#.pptx
Introduction to Serverless with AWS Lambda in C#.pptxBrandon Minnick, MBA
 

Recently uploaded (20)

Enhancing SaaS Performance: A Hands-on Workshop for Partners
Enhancing SaaS Performance: A Hands-on Workshop for PartnersEnhancing SaaS Performance: A Hands-on Workshop for Partners
Enhancing SaaS Performance: A Hands-on Workshop for Partners
 
Microsoft Azure News - Feb 2024
Microsoft Azure News - Feb 2024Microsoft Azure News - Feb 2024
Microsoft Azure News - Feb 2024
 
LLMs, LMMs, their Improvement Suggestions and the Path towards AGI.pdf
LLMs, LMMs, their Improvement Suggestions and the Path towards AGI.pdfLLMs, LMMs, their Improvement Suggestions and the Path towards AGI.pdf
LLMs, LMMs, their Improvement Suggestions and the Path towards AGI.pdf
 
My sample product research idea for you!
My sample product research idea for you!My sample product research idea for you!
My sample product research idea for you!
 
Tete thermostatique Zigbee MOES BRT-100 V2.pdf
Tete thermostatique Zigbee MOES BRT-100 V2.pdfTete thermostatique Zigbee MOES BRT-100 V2.pdf
Tete thermostatique Zigbee MOES BRT-100 V2.pdf
 
Z-Wave Fan coil Thermostat Heltun_HE-HT01_User_Manual.pdf
Z-Wave Fan coil Thermostat Heltun_HE-HT01_User_Manual.pdfZ-Wave Fan coil Thermostat Heltun_HE-HT01_User_Manual.pdf
Z-Wave Fan coil Thermostat Heltun_HE-HT01_User_Manual.pdf
 
Put a flag on it. A busy developer's guide to feature toggles.
Put a flag on it. A busy developer's guide to feature toggles.Put a flag on it. A busy developer's guide to feature toggles.
Put a flag on it. A busy developer's guide to feature toggles.
 
21ST CENTURY LITERACY FROM TRADITIONAL TO MODERN
21ST CENTURY LITERACY FROM TRADITIONAL TO MODERN21ST CENTURY LITERACY FROM TRADITIONAL TO MODERN
21ST CENTURY LITERACY FROM TRADITIONAL TO MODERN
 
Navigating the Never Normal Strategies for Portfolio Leaders
Navigating the Never Normal Strategies for Portfolio LeadersNavigating the Never Normal Strategies for Portfolio Leaders
Navigating the Never Normal Strategies for Portfolio Leaders
 
Curtain Module Manual Zigbee Neo CS01-1C.pdf
Curtain Module Manual Zigbee Neo CS01-1C.pdfCurtain Module Manual Zigbee Neo CS01-1C.pdf
Curtain Module Manual Zigbee Neo CS01-1C.pdf
 
From eSIMs to iSIMs: It’s Inside the Manufacturing
From eSIMs to iSIMs: It’s Inside the ManufacturingFrom eSIMs to iSIMs: It’s Inside the Manufacturing
From eSIMs to iSIMs: It’s Inside the Manufacturing
 
Automate Your Master Data Processes for Shared Service Center Excellence
Automate Your Master Data Processes for Shared Service Center ExcellenceAutomate Your Master Data Processes for Shared Service Center Excellence
Automate Your Master Data Processes for Shared Service Center Excellence
 
Avoiding Bad Stats and the Benefits of Playing Trivia with Friends: PancakesC...
Avoiding Bad Stats and the Benefits of Playing Trivia with Friends: PancakesC...Avoiding Bad Stats and the Benefits of Playing Trivia with Friends: PancakesC...
Avoiding Bad Stats and the Benefits of Playing Trivia with Friends: PancakesC...
 
Manual Eurotronic Thermostatic Valve Comry Z-Wave
Manual Eurotronic Thermostatic Valve Comry Z-WaveManual Eurotronic Thermostatic Valve Comry Z-Wave
Manual Eurotronic Thermostatic Valve Comry Z-Wave
 
Heltun_HE-RS01_User_Manual_B9AH.pdf
Heltun_HE-RS01_User_Manual_B9AH.pdfHeltun_HE-RS01_User_Manual_B9AH.pdf
Heltun_HE-RS01_User_Manual_B9AH.pdf
 
5 Things You Shouldn’t Do at Salesforce World Tour Sydney 2024!
5 Things You Shouldn’t Do at Salesforce World Tour Sydney 2024!5 Things You Shouldn’t Do at Salesforce World Tour Sydney 2024!
5 Things You Shouldn’t Do at Salesforce World Tour Sydney 2024!
 
Bluetooth Low Energy(BLE) and beacons working
Bluetooth Low Energy(BLE) and beacons workingBluetooth Low Energy(BLE) and beacons working
Bluetooth Low Energy(BLE) and beacons working
 
Q1 Memory Fabric Forum: Advantages of Optical CXL​ for Disaggregated Compute ...
Q1 Memory Fabric Forum: Advantages of Optical CXL​ for Disaggregated Compute ...Q1 Memory Fabric Forum: Advantages of Optical CXL​ for Disaggregated Compute ...
Q1 Memory Fabric Forum: Advantages of Optical CXL​ for Disaggregated Compute ...
 
OTel Orientation_ How to Train Teams (OTel in Practice).pdf
OTel Orientation_ How to Train Teams (OTel in Practice).pdfOTel Orientation_ How to Train Teams (OTel in Practice).pdf
OTel Orientation_ How to Train Teams (OTel in Practice).pdf
 
Introduction to Serverless with AWS Lambda in C#.pptx
Introduction to Serverless with AWS Lambda in C#.pptxIntroduction to Serverless with AWS Lambda in C#.pptx
Introduction to Serverless with AWS Lambda in C#.pptx
 

30 Skills to Master to Become a Senior Software Engineer

  • 1. 30 Skills to Master to Become a Senior Software Engineer Dr. Sean Coates February 6, 2016
  • 2. About Me • CTO at CircleBack Lending - Boca Raton, FL • @fooyay • scoates@circlebacklending.com
  • 3. Why I Care • hired 15 PHP developers in the past 18 months • reviewed hundreds of candidates • 95% of candidates simply do not measure up • really wish more people embraced these skills • we always need more senior software engineers
  • 4. Why You Should Care • Senior Software Engineers command higher salaries • software development done the right way makes for more reliable applications that are easier to expand and grow • well-rounded individuals are more likely to be tasked with mentoring and leading others, to spread the knowledge • a lot less time wasted on technical debt
  • 5. Fair Warning! • this is a highly opinionated presentation • I favor open source and PHP related technologies, but there are certainly other paths to success • your mileage may vary • going to cover a lot of ground quickly - there is a link to the slides at the end
  • 6. If You Want to Keep Score There are 30 skills, if you want to score yourself, give your self points on each slide based on which solution matches your practice. • 0 points for poor • 3 points for fair • 7 points for good • 10 points for excellent answers
  • 7. 1. A Server-Side Programming Language In the early days of the web, this might have been all you needed. Also, we’re going to assume web applications here - things are different for other applications. Other types of applications include mobile apps, video game development, data science applications, embedded / device development. These will require different technologies and tools.
  • 8. 1. A Server-Side Programming Language Poor: C, Fortran, COBOL, Pascal, Lisp Fair: Perl, Node.js, Scala Good: Ruby, Java, Python, C# Excellent: PHP, of course.
  • 9. 2. Database Technology The database is the foundation of your application and can be the source of many problems if not implemented correctly. Not only is it the retention of all of your data, it also defines how you are modeling your business objects. Do it wrong, and you can have all kinds of difficulties.
  • 10. 2. Database Technology Poor: Just using flat files. Fair: Mongo or some other NoSQL store only. Or, using a commercial database product. Good: SQL on MySQL or PostgreSQL Excellent: Experience with an RDBMS (MySQL, PostgreSQL, MariaDB Aurora), a columnar store (Amazon Redshift), and a key/value store (Mongo, Redis, others). Great with several DBs.
  • 11. 3. SQL and Data Modeling Improper and inefficient use of SQL is the most common source of performance problems in applications. Data modeling covers concepts like normalization, naming schemes, performance considerations. It also communicates your understanding of the data.
  • 12. 3. SQL and Data Modeling Poor: Relies on ORMs to perform database queries. Fair: Writes basic SQL. Works with a DBA to create tables. Good: Good with complex queries. Understands normalization. Has a style guide. Excellent: Can explain a query plan. Handle extremely complex queries. Strong skills with normalization and modeling. Follows a style guide.
  • 13. 4. HTML Used to describe web documents, HTML5 has added new features including multimedia elements and support for scalable vector graphics and mathematical formulas.
  • 14. 4. HTML Poor: Relies on word processors or web publisher tools to create web pages. Fair: Can write documents in raw HTML. Good: Uses some of the new multimedia features in HTML5. Excellent: Full understanding of HTML5. Developed replacements for Flash components. Uses MathML.
  • 15. 5. CSS Cascading Style Sheets allow developers to control the styling of web elements independently of the HTML source code. CSS3 adds new features giving web designers more control. Now, Sass and other tools are available to make writing CSS easier.
  • 16. 5. CSS Poor: Limited or no use of CSS styling. Fair: Limited use of CSS files. Good: Using Bootstrap and templates. Using other CSS tools like Less. Excellent: Extending past Bootstrap using Sass, highly customized styles reflecting your corporate identity.
  • 17. 6. JavaScript This browser-side language has been used to push logic down to the client, enabling for more interactive websites. Using techniques like AJAX it is possible to create single-page applications which are popular in some places.
  • 18. 6. JavaScript Poor: Spaghetti code that causes problems for everyone who encounters it. Fair: Simple animations and rendering. Good: Can perform basic AJAX functions, making interactive websites. Excellent: Excellent use of AJAX, ECMAScript, JSON, and related tools to create client-side programs that run in the browser. Follows OOP techniques and pursues the same level of code quality as seen on the server.
  • 19. 7. A Client-Side Framework While most people at this point are programming with jQuery, there have been several frameworks and libraries in recent years that greatly advance the state of the art. And while it may be premature to pick a winner at this point, AngularJS has the mindshare currently.
  • 20. 7. A Client-Side Framework Poor: Limited or no use of jQuery or other tools. Fair: Moderate use of jQuery only. May also use older libraries like Ext JS and Prototype. Good: Strong use of jQuery with one of the other frameworks (Backbone, React, Vue) Excellent: Robust use of AngularJS and jQuery, supplemented with additional special-purpose JavaScript libraries like D3.js.
  • 21. 7. A Client-Side Framework It’s 2016. There’s more to life than just jQuery.
  • 22. 8. Gulp Gulp is a toolset that automates part of your workflow. It covers many areas including CSS preprocessing, CSS and JS minification, running unit tests, refreshing your browser when saved files change, and many more.
  • 23. 8. Gulp Poor: You’re doing these things mostly by hand. Fair: A collection of random scripts. Apache Ant, YUI Compressor, etc. Good: Using an alternative instead, or just using Gulp for a couple of things. Grunt, Broccoli, Brunch, Mimosa are among the many options. Excellent: Making use of Gulp to automate several parts of your workflow.
  • 24. 9. Node.js Server-side JavaScript got a huge resurgence with the development of Node.js. We generally prefer PHP for server-side development, but there are a lot of great tools (Gulp included) that are built using Node, so knowledge of Node has become required.
  • 25. 9. Node.js Poor: No experience with Node. Fair: At least one application using Node. Good: Using Node to serve up pages instead of PHP. Excellent: Automating several server-side operations and development workflows using Node and tools built on Node.
  • 26. 10. Virtual Machines With virtual machines, you can create a Linux environment running on your laptop that resembles your production environment more closely than just running applications natively on OS X. With Vagrant, provisioning these virtual machines becomes easier, often pre- loaded with a full suite of applications.
  • 27. 10. Virtual Machines Poor: Still running on dedicated servers. Fair: Passive experience with VMs, such as using Amazon AWS. Good: Using Vagrant to load and develop on Homestead. Excellent: Creating your own VMs and sharing them with your team, to save the work of installing all the various libraries and tools.
  • 28. 11. SSH OpenSSH is the most popular implementation of SSH. SSH is a key tool used for accessing systems remotely, copying data, and creating secure pipelines between systems. Working with SSH requires an understanding of public-key encryption.
  • 29. 11. SSH Poor: the 80s called they want their telnet and ftp back Fair: Just ssh. Good: Using ssh and scp. Excellent: Proper use of public key encryption, key sizes, ssh, tunneling, and secure copy.
  • 30. 12. Version Control Being able to maintain multiple concurrent versions of the software is crucial for professional software engineering. While git is widely used by most, not everyone uses the advanced features or follows the gitflow method.
  • 31. 12. Version Control Poor: Ancient systems like cvs, or often no use of version control at all. Fair: Instead of git, uses svn, Mercurial, Perforce, or TFS. Good: Using git, typically with feature branches. Excellent: Using git with gitflow, with separate develop, master, feature, release, and hotfix branches.
  • 32. 13. A Server-Side Framework Laravel has become the most popular MVC framework, bringing not only a great collection of best practices and supportive ecosystem, it also incorporates a great collection of tools and components. Examine Sitepoint’s 2015 survey of PHP frameworks to see Laravel ahead of all others for use at work and in personal projects.
  • 33. 13. A Server-Side Framework Poor: A custom built, “in-house” framework. Or non- MVC frameworks like Drupal, Wordpress. Fair: Zend Framework 2, CodeIgniter, Phalcon, other open source MVC frameworks. Good: Latest version of Symfony, Yii, or CakePHP. Also Rails (Ruby), Django (Python), Play (Java). Excellent: Using Laravel and all of its components. Watching Laracasts, following Laravel blogs.
  • 34. 14. An Object-Relational Mapper With the rise of the MVC pattern and the Repository pattern, ORM tools have been created to make life easier and keep developers from writing the same code in every application. Most implementations follow the Active Record or the Data Mapper pattern.
  • 35. 14. An Object-Relational Mapper Poor: A custom built ORM, or worse, not using an ORM at all. Fair: Propel. Also, other ORMs in other frameworks. Good: Doctrine - A Data Mapper implementation used by many other frameworks. Excellent: Eloquent - Laravel’s Active Record implementation.
  • 36. 15. Database Seeding and Migrations Database seeders are scripts that set initial data in tables, or sometimes define the entire contents of a reference data table. Migrations are scripts used to create and alter database tables as part of a software change. These scripts ensure the database has the correct data and schema across the various versions.
  • 37. 15. Database Seeding and Migrations Poor: Database changes performed by hand. Fair: Migration scripts are in use. Good: Seeders and migrations are in use. Excellent: Seeders and migrations are always used, and maintained in version control. A key part of using Laravel, for example.
  • 38. 16. View Templates In the early days PHP itself served the purpose of view templates, but we’ve come a long way since then and there are very powerful tools available now. These keep application logic completely separated from presentation logic, and allow front-end developers to focus on the view.
  • 39. 16. View Templates Poor: In-house custom engine, or none at all. Fair: Smarty - was good in its day but we have much better options now. Good: Twig, which has a great following. Excellent: Blade. That means you’re using Laravel.
  • 40. 17. Security Any real business has to be acutely concerned with security. Web applications have a long history of being subject to hacks due to weakness in application security. Hackers, script-kiddies, DDOS attacks, corporate espionage, negligence, and criminals provide an ever-growing pool of threats that we must be vigilant against.
  • 41. 17. Security Poor: Having a purely reactive approach. Fair: Occasional security scans. Good: Adopting some security techniques and scans, often in response to an audit. Excellent: Guided by a CISO, following OWASP, building a security maturity model, making security a part of every code review.
  • 42. 18. Creating APIs Most systems will end up talking to other systems. Sometimes it’s a simple matter of breaking up the monolith, and sometimes it’s relying on 3rd-party services outside your company in order to more efficiently perform your business functions. The connections between these systems need to be developed in a clear, predictable, manageable way that is easy to improve and expand.
  • 43. 18. Creating APIs Poor: Custom-built XML-based APIs, trading messages via csv files or fixed-length records. Fair: Good old SOAP. APIs are documented but dated. Good: REST with XML, but some of the above is missing. Excellent: Sending JSON data via REST commands, properly versioned, documented, and authenticated. Asynchronous messages land in queues. Use industry standards where available.
  • 44. 19. Composer As applications increase in size, the number of packages included grows dramatically. Using a tool like Composer allows you to manage your libraries and dependencies easily.
  • 45. 19. Composer Poor: Including libraries and automatically asking for the latest, untested version. Every build is an adventure! Fair: Including hundreds of libraries and packages, not sure if they are all still in use. Good: Using Node’s npm, or Ruby’s bundler. Depending on outside repositories to build. Excellent: All of your libraries are managed by Composer, and local copies of properly vetted versions of libraries are kept.
  • 46. 20. Packages Don’t reinvent the wheel. Don’t spend countless resources developing some common functionality that can be had much more easily by using a package or library.
  • 47. 20. Packages Poor: Custom-build all the things. Fair: Using old, dated packages. Struggle with maintenance. Good: Using the latest packages, even some obscure bleeding edge ones. Excellent: Recognize which packages and libraries to use, which versions are best, and stick to those which are popular and widely used.
  • 48. 21. Creating Dummy Data When creating large amounts of test data for your test suites, you want that data to look realistic. At the same time, using production data is considered to be too risky. Fortunately, there are tools available to help. Faker is among the best of these.
  • 49. 21. Creating Dummy Data Poor: Not creating any test data. Or using production data and exposing customer private information to a test environment. Fair: Copying production data and then writing scripts to scrub out the private information. Good: Using your own scripts to generate test data. Excellent: Robust use of Faker to generate test data.
  • 50. 22. Unit Testing One of the biggest indicators that separates the senior software engineers from the rest of the pack is the use of unit testing and test driven development. When people say they don’t “have the time” to write unit tests, they always spend ten times as long fixing bugs and battling technical debt.
  • 51. 22. Unit Testing Poor: Not writing tests. Thinking you don’t have the time to write tests. Fair: Writing some phpunit tests after the fact, aiming for better code coverage. Good: Doing TDD with phpunit or phpspec, covering happy path and some failure cases. Excellent: Doing BDD with Behat and TDD with phpspec. Covering all your edge cases.
  • 52. 23. IDE Many old-school developers often rely solely on a text editor to write their code. Others use advanced editors with nice plugins and integrations. An integrated development environment provides much more functionality and power to the skilled developer.
  • 53. 23. IDE Poor: Simply using a text editor. Fair: Sublime Text or vim power-user with lots of plugins and integrations. Good: Using other IDEs like Eclipse. Excellent: Using PhpStorm with XDebug and taking full advantage of its features.
  • 54. 24. NoSQL Sometimes known as document stores or key-value stores, NoSQL databases like MongoDB, CouchDB, Redis, Memcached, Dynamo, Cassandra and others provide a simple way for storing unstructured data. Also used in situations where database schema changes rapidly. While the best product depends on the application, there are certain guidelines in the use of NoSQL databases.
  • 55. 24. NoSQL Poor: Storing data in text files. Fair: Storing data in obscure proprietary databases (Access) or custom-built databases. Or using a NoSQL database for everything. Good: Using a NoSQL database for storing session data and a couple other common applications. Excellent: Using appropriate NoSQL databases for certain applications involving unstructured data or data with single keys. Using RDBMS for highly structured, relational data, and columnar stores for data warehouse applications.
  • 56. 25. Automated Deployment The process of assembling software, running tests, integrating libraries, compiling code, and building packages can be complex and prone to error. Thus it is wise to apply as much automation as possible to these processes.
  • 57. 25. Automated Deployment Poor: No automation, processes handled manually. Fair: A random collection of custom scripts. Good: Some use of Jenkins, or using other CI tools like Bamboo or Travis. Excellent: Using Jenkins with the Jenkins Best Practices.
  • 58. 26. Business Analysis This is the art of identifying business needs and determining solutions. Typical work products include storyboards, use cases, UML diagrams, flowcharts, wireframes, and requirements documents.
  • 59. 26. Business Analysis Poor: You receive and react to random requests from the business all the time. Fair: You’re working with excessive business requirements documents filled with outdated information. Good: You can develop robust functional specifications and have a strong understanding of the business. Excellent: Not only can you write excellent specifications, you also have a deep understanding of the business and help design new processes and systems.
  • 60. 27. Project Management When projects grow in size and require the efforts of several individuals or teams, it becomes necessary to manage the project’s dependencies and resource constraints.
  • 61. 27. Project Management Poor: No planning or coordination. Fair: Proactive efforts are made, planning occurs. Good: You’re using some project management tools. Plans are documented and tracked. Excellent: You can coordinate the efforts of several teams while maintaining the Agile principles, making strong use of tools that integrate with the ticket tracking system and other tools.
  • 62. 28. Ticketing System With a good issue tracking system, you not only manage the present requirements, you also provide historical statistics and reference material.
  • 63. 28. Ticketing System Poor: Physical tickets like post-its or 3x5 cards. Spreadsheets. Fair: Older open-source tools like Mantis and Bugzilla. Other commercial products lacking in features. Good: Other professional tools such as Rally, Pivotal Tracker, Microsoft TFS. A healthy implementation of Redmine also works. Excellent: Using JIRA to track all issues, bugs, projects, and desired features. Customizing JIRA to model your company’s workflows.
  • 64. 29. Teamwork A highly effective team can accomplish much more than individuals acting separately. Strong teams also learn faster and lower defect rates.
  • 65. 29. Teamwork Poor: A cowboy culture of rock stars, coding ninjas, and primadonnas. Fair: A co-located team working on the same project. Good: Peer-level code reviews using pull requests. A collaborative culture. Excellent: Using pair programming regularly. Team in constant communication via Slack or HipChat.
  • 66. 30. Patterns of Enterprise Engineering In software development, common problems reoccur regularly. This leads to general, re-usable solutions. By learning these patterns, we gain a common language for describing these situations and, at a high level, their solutions.
  • 67. 30. Patterns of Enterprise Engineering Poor: Ignorance of patterns leading to random solutions each time. Fair: Occasional use of a few patterns. Good: A software architect on the team understands several common patterns and provides guidance. Excellent: Everyone on the team understands the patterns widely used in solving the company’s software problems. Pattern solutions used appropriately (don’t overdo it).
  • 68. So, that’s all you need to know. Now you’re ready to be a senior software engineer! You got 300 points, right?
  • 70. Okay, There’s 30 More Things • Homebrew • /etc/hosts, dnsmasq • sprites • disaster recovery • SOLID principles • CDNs • master data management • giving presentations • TLS • physical/mental health • Ansible (chef, puppet) • Kanban • A/B testing • prototyping • UI/UX • database administration • AWS • Selenium • time management • style guide • Agile principles • data modeling • interviewing • SEO • R (SAS, NumPy/SciPy) • physical security • websockets • negotiation • columnar databases • exception handling, alerting, and reporting
  • 72. It Never Ends. Never stop learning. If you’re not learning new things all the time you’ll never keep up. That’s the joy of this business. You never run out of exciting new things to learn.
  • 73. Thanks for listening. Dr. Sean Coates, CTO at CircleBack Lending @fooyay scoates@circlebacklending.com legacy.joind.in/16794 now hiring in Boca Raton, FL!