Technologies Intro for
Non-Tech
Maksym Palamarenko
September 30, 2018
Software Development Office
Training Goal
Introduce programming terminology, basic concepts and comparative
view for non-technical people.
Training outline
• Terms Review
• SDLC overview
• Engagement models
• Business domains at a glance
• Technologies explained
• Major players
• Second echelon technologies
• QC at a brief
Terms Review
• Front/Back-end developer
• Full stack developer
• Desktop/Mobile/Embedded
• IDE
• Issue tracking system
• Version/Source control
• OOP
• Garbage Collection
(GC)
• Compiled vs
interpreted
• Static/dynamic typing
• TDD/BDD/DDD
• Web service
• SOA/Microservices
• Continuous Integration (CI)
• Continuous delivery (CD)
• Business intelligence (BI)
• Business analyst (BA)
• Product Manager
• User experience (UX)
• Agile
• SCRUM/Kanban/Waterfall
• SDLC
SDLC
SDLC Frameworks
Language ratings
• TIOBE
• IEEE Spectrum
• Stack Overflow
• Github
• No one universally accepted
Technology
ratings
IEEE Spectrum
TIOBE
2018
Business Domains Brief
• ISV
• Emerging
• Enterprise
• Healthcare
• Telecoms
• Fintech
• Automotive
• Retail
• AgriTech
• InsurTech
• Logistics
• Media & Entertainment
• Manufacturing
• Energy
• …
C++ Java .Net
Front-
End
SQL
DB DevOps Mobile DS/ML
Major Players
• C++ is a middle-level programming language developed
by Bjarne Stroustrup starting in 1979 at Bell Labs
• Compiled, static type check
• Fully compatible with C
• Direct mapping of hardware features provided by the C
subset
• Standards: 98, 2011, 2014, 2017, (2020)
• IoT ready
• STL – standard library
• Other libraries: Boost, Qt, POCO,
• Drawbacks:
• No Garbage Collection (GC)
• Slow compilation
• Low portability
Hello World in C++
20 years on market
9 million developers
7 billion devices
Hello World in Java
C# and .Net
• Microsoft reply to Sun’s proprietary Java
• Follows syntax traditions of C++
• Very similar to Java at initial launch
• Evolved to more advanced language features with time
• Enterprise ready
• Only one major framework: .Net
• Strives to be less “Windows” now
• Mobile framework Xamarin
Common
WCF
ADO.Net/Entity
Framework
WebAPI nuget
Web
ASP.Net Web
forms
ASP.Net MVC ASP.Net Core
Desktop
WinForms WPF
.Net technologies
Hello World in C#
Front-End
• JavaScript (ECMAScript 5/6/7/8/9) - dynamic
programming language, allowing client-side script to
interact with the user and make dynamic web pages. It is
an interpreted language with object-oriented capabilities
• HTML 5 - markup language for describing web pages
• CSS 3 – styling web page
Front-End terms
• Web Server - program that uses HTTP to serve Web pages to users
• DOM - Document Object Model, all elements on a webpage
• Responsive web design - approach to web design which makes web pages
render well on a variety of devices and window or screen sizes.
• Native/hybrid mobile apps - platform (iOS, Android etc.)
specific/independent app design, distributed via AppStore. Partially
running in a mobile browser, hybrids do not have a URL, support a rich
user interface and access to system capabilities.
• Progressive Web Applications - web applications that can appear to the
user like traditional applications or native mobile applications. The
application type attempts to combine features offered by most modern
browsers with the benefits of a mobile experience.
JavaScript Frameworks 1
• React.js – powers Facebook and Instagram and is best at rendering complex user interfaces with high
performance. fundamental behind React is the concept of virtual DOM, which can be rendered either at
client or server side. React component libraries can be created and used across applications (e.g.
Material-UI framework)
• React Native, React for IoT, React for AR/VR - React has broken free of its web roots.
• Angular JS – JavaScript framework for developing Single Page Web Applications. Designed by Google.
Reached version 5.0. It gives option to extend HTML attributes by the use of Angular directives. Two way
data binding is at the core: When user interacts with the interface and provides an input, the view and
the model (JavaScript objects) are synchronized, the logic in the model is executed and the DOM gets
updated. This essentially takes away all the pain of writing manual code for DOM manipulation.
• Node.js – framework for developing server-side Web applications, uses non-blocking, event-driven I/O to
remain lightweight and efficient in the face of data-intensive real-time apps that run across distributed
devices. It helps build scalable and fast network applications, as it’s capable of handling a large number
of simultaneous connections with high throughput, which brings out high scalability
• also…
• Vue.js – newer MVVM framework, minimalism to the extreme, use selective modules and updates model
and view via two way data binding
• jQuery - cross-platform library designed to simplify the client-side scripting of HTML.
JavaScript Frameworks 2
• PhoneGap (Ionic) – popular hybrid frameworks
• Ember.js - MVC JavaScript framework. Targets the best of both AngularJS
(two way data binding) and ReactJS (server side rendering)
• Polymer.js – web component development. Created by Google in 2013
• Knockout.js - MVVM design paradigm. Currently slowed at development
• Meteor.js – frameworks that allows for rapid prototyping and produces
cross-platform (web, Android, iOS) code. Allows building end to end
mobile and web applications completely in JavaScript at lightning speed.
Meteor.JS is modular. server side packages run in the node.js.
• Backbone.js – lightweight, simple, small size package and easy to learn.
Powers Pinterest, Foursquare, Walmart. Slowed at development recently
• Underscore &lodash – utility libraries to increase productivity
CSS Frameworks
• Bootstrap – helps to build web design concepts, mobile first
projects, grid systems, typography, buttons and so on.
• Foundation - building websites, creating email templates, building
mobile and web apps.
• CSS Preprocessors:
• Sass
• LESS
JavaScript Tools
• Chrome Dev Tools: DOM inspect & JS debugger
• Gulp (Grunt) - toolkit that helps you automate painful or time-consuming tasks
in your development workflow.
• Npm (Yarn): The standard open-source package repository for the JavaScript
language.
• Webpack (Browserify): The most popular bundler for standard JavaScript look
for simple starter kit/boilerplate config examples to get things running fast)
• Mocha (Jasmine) - JavaScript test framework
• Sublime, Atom, VSCode, or WebStorm - the most popular JS editors today.
• ESLint: Catch syntax errors and style issues early. After code review and TDD,
the third best thing you can do to reduce bugs in your code.
• TypeScript - strict superset of JavaScript, and adds optional static typing and
class-based object-oriented programming to the language
• Babel: Used to compile ES6/7 to work on older browsers.
Hello World in JavaScript
SQL
Did not change significantly since 1992
No compatibility issues
Used universally across all technologies
Skills:
• Queries
• Writing stored procedures
• Creating DB structure from domain
• Administering DB
Major RDBMS Comparison
• MS SQL Server
• Microsoft
• Enterprise-ready
• Popular due to flexible pricing
model
• Windows only (but soon Linux!)
• Oracle
• All platforms
• #1 in enterprise
• Very expensive
• Looses market share
• Most instances: MySQL (because it's free)
• Most paid-for instances: MS SQL Server
(because it's cheap)
• Most license revenue: Oracle (because
it's expensive)
DB-Engines Ranking
DevOps
• DevOps is a culture, that emphasizes the collaboration and
communication of both software developers and other IT
professionals while automating the process of software
delivery and infrastructure changes.
Platforms
• Unix/Linux
• MacOS
• Windows
Virtualization
Containers
(Docker)
Serverless
CI/CD Clouds NetOps Monitoring
DevOps Terms
Providers
Amazon
Azure
Google
IBM
Service models
SaaS
PaaS
IaaS
Amazon
EC2
Lambda
S3
Aurora
RDS
DynamoDB
API Gateway
CloudFront
…
Clouds
Hello World in Bash
Data
science
Data
mining
Analyzing Reporting
Machine
learning
Data Science & ML
BI vs Data Science
iOS
Android
Mobile
Second Chapter
Python Ruby
PHP / LAMP GO
Objective C
/ Swift
Scala /
Functional
programming
Python
• Very easy to learn
• Diverse and big community with strong ties to Linux and academia
• Main Web framework – Django
• Language of choice for Machine Learning
• Python 3.0 (2008) broke backward compatibility, and much Python 2
code does not run unmodified on Python 3.
Hello World in Python
Ruby
• More tied to Web Development
• Adds lots of new features but less tricky at debugging and scaling
• Main Web Framework Ruby on Rails
• Example of users: Apple, Twitter, Github, Groupon, Shopify, Airbnb
Hello World in Ruby
LAMP =
Linux
Apache
MySQL
PHP/
Python/
Perl
PHP
• Backend oriented
• PHP is interpreted/scripting language
• Designed for web development
• Lots of legacy apps
• Current version 7 (fast) but 80% run on 5th
• PHP is used by 83.5% of all the web
• Slack, Etsy, Cloudflare, Tesla, Wikipedia,
WordPress.com, Tumblr
Facebook!
Hello World in PHP
GO
• Open sourced, created by Google (with c++ in mind)
• Compiled, statically typed, with garbage collection
• It also aims to be modern, with support for networked and
multicore computing (easy channels, “goroutines”)
• Users: Google, Netflix, Dropbox, Docker
• Drawbacks – still mostly experimental and not quite enterprise-
ready, poor community, small package supply
• Go is a programming language that values machine time over
human time
Hello World in GO
Objective C / Swift
• Used in Apple’s IOS/MacOS
• Objective C – very similar to C++ (a bit more dynamic and modern in
syntax)
• Swift is newer language, easier to read and maintain, more bug-safe
• Swift is not for legacy apps (>= Mac OS X 10.9, iOS 7.0)
Hello World in ObjectiveC/Swift
Scala / Functional programming
• Scala came from Java
• Scala tied to Functional programming
• Scala often used with Spark – Big data solution
• Functional programming - a style of building the structures that
avoid changing - state and mutable data.
• Benefits: Functional is more explicit, easier to test
• Cons: “pure” functional is hard to follow
• Also Haskell, Clojure
• No modern production language is “purely” functional
Hello World in Scala
QC at a Brief
• Manual QC – trained tester assumes the role of end-user.
• Automation QC – develops test scripts or tools which perform defined actions within user
environment.
• QC tools:
• Selenium
• xUnit
• Jmeter
• Postman
• …others
• Types of automation testing:
• Desktop UI
• Web
• Mobile
• Use BDD
If programming languages were poker players...
THANK YOU!
ANY QUESTIONS?
mpalamarenko@n-ix.com

Meetup. Technologies Intro for Non-Tech People

  • 1.
    Technologies Intro for Non-Tech MaksymPalamarenko September 30, 2018 Software Development Office
  • 2.
    Training Goal Introduce programmingterminology, basic concepts and comparative view for non-technical people.
  • 3.
    Training outline • TermsReview • SDLC overview • Engagement models • Business domains at a glance • Technologies explained • Major players • Second echelon technologies • QC at a brief
  • 4.
    Terms Review • Front/Back-enddeveloper • Full stack developer • Desktop/Mobile/Embedded • IDE • Issue tracking system • Version/Source control • OOP • Garbage Collection (GC) • Compiled vs interpreted • Static/dynamic typing • TDD/BDD/DDD • Web service • SOA/Microservices • Continuous Integration (CI) • Continuous delivery (CD) • Business intelligence (BI) • Business analyst (BA) • Product Manager • User experience (UX) • Agile • SCRUM/Kanban/Waterfall • SDLC
  • 5.
  • 6.
  • 7.
    Language ratings • TIOBE •IEEE Spectrum • Stack Overflow • Github • No one universally accepted
  • 8.
  • 9.
  • 10.
    Business Domains Brief •ISV • Emerging • Enterprise • Healthcare • Telecoms • Fintech • Automotive • Retail • AgriTech • InsurTech • Logistics • Media & Entertainment • Manufacturing • Energy • …
  • 11.
    C++ Java .Net Front- End SQL DBDevOps Mobile DS/ML Major Players
  • 12.
    • C++ isa middle-level programming language developed by Bjarne Stroustrup starting in 1979 at Bell Labs • Compiled, static type check • Fully compatible with C • Direct mapping of hardware features provided by the C subset • Standards: 98, 2011, 2014, 2017, (2020) • IoT ready • STL – standard library • Other libraries: Boost, Qt, POCO, • Drawbacks: • No Garbage Collection (GC) • Slow compilation • Low portability
  • 13.
  • 14.
    20 years onmarket 9 million developers 7 billion devices
  • 15.
  • 16.
    C# and .Net •Microsoft reply to Sun’s proprietary Java • Follows syntax traditions of C++ • Very similar to Java at initial launch • Evolved to more advanced language features with time • Enterprise ready • Only one major framework: .Net • Strives to be less “Windows” now • Mobile framework Xamarin
  • 17.
    Common WCF ADO.Net/Entity Framework WebAPI nuget Web ASP.Net Web forms ASP.NetMVC ASP.Net Core Desktop WinForms WPF .Net technologies
  • 18.
  • 19.
    Front-End • JavaScript (ECMAScript5/6/7/8/9) - dynamic programming language, allowing client-side script to interact with the user and make dynamic web pages. It is an interpreted language with object-oriented capabilities • HTML 5 - markup language for describing web pages • CSS 3 – styling web page
  • 20.
    Front-End terms • WebServer - program that uses HTTP to serve Web pages to users • DOM - Document Object Model, all elements on a webpage • Responsive web design - approach to web design which makes web pages render well on a variety of devices and window or screen sizes. • Native/hybrid mobile apps - platform (iOS, Android etc.) specific/independent app design, distributed via AppStore. Partially running in a mobile browser, hybrids do not have a URL, support a rich user interface and access to system capabilities. • Progressive Web Applications - web applications that can appear to the user like traditional applications or native mobile applications. The application type attempts to combine features offered by most modern browsers with the benefits of a mobile experience.
  • 21.
    JavaScript Frameworks 1 •React.js – powers Facebook and Instagram and is best at rendering complex user interfaces with high performance. fundamental behind React is the concept of virtual DOM, which can be rendered either at client or server side. React component libraries can be created and used across applications (e.g. Material-UI framework) • React Native, React for IoT, React for AR/VR - React has broken free of its web roots. • Angular JS – JavaScript framework for developing Single Page Web Applications. Designed by Google. Reached version 5.0. It gives option to extend HTML attributes by the use of Angular directives. Two way data binding is at the core: When user interacts with the interface and provides an input, the view and the model (JavaScript objects) are synchronized, the logic in the model is executed and the DOM gets updated. This essentially takes away all the pain of writing manual code for DOM manipulation. • Node.js – framework for developing server-side Web applications, uses non-blocking, event-driven I/O to remain lightweight and efficient in the face of data-intensive real-time apps that run across distributed devices. It helps build scalable and fast network applications, as it’s capable of handling a large number of simultaneous connections with high throughput, which brings out high scalability • also… • Vue.js – newer MVVM framework, minimalism to the extreme, use selective modules and updates model and view via two way data binding • jQuery - cross-platform library designed to simplify the client-side scripting of HTML.
  • 22.
    JavaScript Frameworks 2 •PhoneGap (Ionic) – popular hybrid frameworks • Ember.js - MVC JavaScript framework. Targets the best of both AngularJS (two way data binding) and ReactJS (server side rendering) • Polymer.js – web component development. Created by Google in 2013 • Knockout.js - MVVM design paradigm. Currently slowed at development • Meteor.js – frameworks that allows for rapid prototyping and produces cross-platform (web, Android, iOS) code. Allows building end to end mobile and web applications completely in JavaScript at lightning speed. Meteor.JS is modular. server side packages run in the node.js. • Backbone.js – lightweight, simple, small size package and easy to learn. Powers Pinterest, Foursquare, Walmart. Slowed at development recently • Underscore &lodash – utility libraries to increase productivity
  • 23.
    CSS Frameworks • Bootstrap– helps to build web design concepts, mobile first projects, grid systems, typography, buttons and so on. • Foundation - building websites, creating email templates, building mobile and web apps. • CSS Preprocessors: • Sass • LESS
  • 24.
    JavaScript Tools • ChromeDev Tools: DOM inspect & JS debugger • Gulp (Grunt) - toolkit that helps you automate painful or time-consuming tasks in your development workflow. • Npm (Yarn): The standard open-source package repository for the JavaScript language. • Webpack (Browserify): The most popular bundler for standard JavaScript look for simple starter kit/boilerplate config examples to get things running fast) • Mocha (Jasmine) - JavaScript test framework • Sublime, Atom, VSCode, or WebStorm - the most popular JS editors today. • ESLint: Catch syntax errors and style issues early. After code review and TDD, the third best thing you can do to reduce bugs in your code. • TypeScript - strict superset of JavaScript, and adds optional static typing and class-based object-oriented programming to the language • Babel: Used to compile ES6/7 to work on older browsers.
  • 25.
    Hello World inJavaScript
  • 26.
    SQL Did not changesignificantly since 1992 No compatibility issues Used universally across all technologies Skills: • Queries • Writing stored procedures • Creating DB structure from domain • Administering DB
  • 27.
    Major RDBMS Comparison •MS SQL Server • Microsoft • Enterprise-ready • Popular due to flexible pricing model • Windows only (but soon Linux!) • Oracle • All platforms • #1 in enterprise • Very expensive • Looses market share • Most instances: MySQL (because it's free) • Most paid-for instances: MS SQL Server (because it's cheap) • Most license revenue: Oracle (because it's expensive)
  • 28.
  • 29.
    DevOps • DevOps isa culture, that emphasizes the collaboration and communication of both software developers and other IT professionals while automating the process of software delivery and infrastructure changes.
  • 30.
    Platforms • Unix/Linux • MacOS •Windows Virtualization Containers (Docker) Serverless CI/CD Clouds NetOps Monitoring DevOps Terms
  • 31.
  • 32.
  • 33.
  • 34.
    BI vs DataScience
  • 36.
  • 37.
    Second Chapter Python Ruby PHP/ LAMP GO Objective C / Swift Scala / Functional programming
  • 38.
    Python • Very easyto learn • Diverse and big community with strong ties to Linux and academia • Main Web framework – Django • Language of choice for Machine Learning • Python 3.0 (2008) broke backward compatibility, and much Python 2 code does not run unmodified on Python 3.
  • 39.
  • 40.
    Ruby • More tiedto Web Development • Adds lots of new features but less tricky at debugging and scaling • Main Web Framework Ruby on Rails • Example of users: Apple, Twitter, Github, Groupon, Shopify, Airbnb
  • 41.
  • 43.
  • 44.
    PHP • Backend oriented •PHP is interpreted/scripting language • Designed for web development • Lots of legacy apps • Current version 7 (fast) but 80% run on 5th • PHP is used by 83.5% of all the web • Slack, Etsy, Cloudflare, Tesla, Wikipedia, WordPress.com, Tumblr Facebook!
  • 45.
  • 46.
    GO • Open sourced,created by Google (with c++ in mind) • Compiled, statically typed, with garbage collection • It also aims to be modern, with support for networked and multicore computing (easy channels, “goroutines”) • Users: Google, Netflix, Dropbox, Docker • Drawbacks – still mostly experimental and not quite enterprise- ready, poor community, small package supply • Go is a programming language that values machine time over human time
  • 47.
  • 48.
    Objective C /Swift • Used in Apple’s IOS/MacOS • Objective C – very similar to C++ (a bit more dynamic and modern in syntax) • Swift is newer language, easier to read and maintain, more bug-safe • Swift is not for legacy apps (>= Mac OS X 10.9, iOS 7.0)
  • 49.
    Hello World inObjectiveC/Swift
  • 50.
    Scala / Functionalprogramming • Scala came from Java • Scala tied to Functional programming • Scala often used with Spark – Big data solution • Functional programming - a style of building the structures that avoid changing - state and mutable data. • Benefits: Functional is more explicit, easier to test • Cons: “pure” functional is hard to follow • Also Haskell, Clojure • No modern production language is “purely” functional
  • 51.
  • 52.
    QC at aBrief • Manual QC – trained tester assumes the role of end-user. • Automation QC – develops test scripts or tools which perform defined actions within user environment. • QC tools: • Selenium • xUnit • Jmeter • Postman • …others • Types of automation testing: • Desktop UI • Web • Mobile • Use BDD
  • 53.
    If programming languageswere poker players...
  • 54.