SlideShare a Scribd company logo
1 of 22
Introduction to the
Software Development
world
If you want to become a software developer, press enter to start.
● Tutti Quintella (@tuttiq online)
● From São Paulo, Brazil
● Major in Computer Engineering
● Software Engineer since 2011
● Main experience with web & mobile development
● Like dancing, cooking and going out/socializing
(not all developers are introverts!)
Who am I?
● What's a software or app? Can I run software anywhere?
● What are operating systems or platforms?
● What can I do with software development? What kind of developer
do I want to be?
● What are programming languages vs frameworks?
● What to consider when choosing a programming language or
framework?
First things first
Refreshing basic concepts
Basic concepts
● Computer: any electronic device that has a
processor (laptops, servers, smartphones,
smartwatches, smart tvs, micro-computers…)
● Software: the programs that run in a
computer
● App: software application. Software
designed to perform a specific function
directly for the user or, in some cases, for
another application.
Basic concepts
In other words: software or apps are a bunch of text files with instructions
that a computer can understand and execute.
Basic concepts
● Operating system: the base software that
supports a computer's basic functions, like
managing hardware resources and
software applications. Ex: managing
information on the memory, managing
peripherals, installing and running apps.
● Platform: a major piece of software. Ex:
operating systems.
What can I do with software
development?
What kind of developer do I
want to be?
App / Game Development
● Web Apps / Games (web pages, software you access from a browser)
○ Divided in Back-end (Server side) and Front-end (Client side)
○ Examples: Amazon, Gmail, Google Docs, web games
● Mobile Apps / Games (software you run on a phone or tablet)
○ Android, iOS
○ Examples: Uber, Whatsapp, Instagram, mobile games
● PC Apps / Games (software you run on a personal computer)
○ Windows / Linux / MacOS
○ Examples: Microsoft Office, Skype, Photoshop, PC games
What do I want to do?
App / Game Development
● Game Console Apps / Games (software you run on a game console)
○ XBox, PlayStation, Nintendo Wii, etc…
○ Examples: Netflix for XBox, any console game
● Other devices
○ ATMs, SmartTVs, Smart Watches, micro-computers…
○ Examples: Netflix for SmartTVs, Apple Watch apps, IoT, etc...
● Multi-platform
○ Code once, use it for multiple devices / operating systems
○ Examples: Cordova, Ionic, Electron, Unity3D
What do I want to do?
Other types of programming
● Infrastructure / DevOps
○ Windows / Linux Servers
○ Server configuration, performance monitor, continuous integration...
○ Tools: AWS, Jenkins, Sentry, NewRelic, Docker, Kubernetes, etc...
● Data Analysis
○ Analyze big amounts of data and turn into meaningful information
○ Tools: SQL, R, Google BigQuery, TrasureData, Tableau
● Data Science / AI / Machine Learning
○ Algorithms and systems built to learn and adapt over data
○ Image recognition, NPL (Natural Language Processing), etc...
What do I want to do?
App Development
● Web Apps (web pages, software you access from a browser)
○ Divided in Back-end (Server side) and Front-end (Client side)
○ Examples: Amazon, Gmail, Google Docs
● Mobile Apps / Games (software you run on a phone or tablet)
○ Android, iOS
○ Examples: Uber, Whatsapp, Instagram, mobile games
● PC Apps / Games (software you run on a personal computer)
○ Windows / Linux / MacOS
○ Examples: Microsoft Office, Skype, Photoshop, PC games
My "choice"
Programming languages
Libraries
Frameworks
Programming languages vs Frameworks/Libraries
● Programming languages: Java, Ruby, Python, Javascript...
● Frameworks/Libraries: Spring, Rails, Django, ReactJS, NodeJS
● What is a library?
● What is a framework?
○ "A supporting structure around which something can be built"
○ "A system of rules, ideas, or beliefs that is used to plan or decide something"
○ In a more practical definition: usually a big language extension, that
provides standards and features that the programming language doesn't
have by itself (a.k.a a big and opinionated library)
Language Frameworks
Go Echo, Chi, Gin
C / C++ Wt, CppCMS...
C# ASP.NET
Perl Mojolicious, Catalyst...
Scala Play
Elixir Phoenix
Programming languages vs Frameworks
Language Frameworks
JavaScript jQuery, React, Angular, NodeJS...
Java JSF, Spring, Android SDK...
Swift FlourishUI, Perfect, ReactKit
Ruby Rails, Sinatra...
Python Django, Flask...
PHP Laravel, CodeIgniter, Zend...
● Templates, markup, key-value formats: HTML, XML, JSON, YAML
● Styling: CSS (Frameworks: Bootstrap, Materialize, Bulma…)
Other languages and file formats
What to consider when choosing
a programming language or
framework?
1. Age of a language/framework
a. Is it already obsolete due to new languages?
b. Does it solve modern problems?
c. How mature is it (how stable are updates and how complete is its documentation)?
1. What's the learning curve like and how much effort/time do I want to spend learning it?
1. Is it appropriate and useful for what I want to develop?
a. Is it commonly used for similar purposes?
b. Does it have libraries/helpers/tools that will help with it?
1. Is it valuable in the market?
a. Are many companies hiring to work with it? Are the jobs well paid?
b. Is it a market trend? What are the reasons for the trend?
c. Will it be valuable in the short/mid-term future?
Choosing what to learn/use
Final considerations
About the profession / industry / community
● After the first programming language and tools, it gets easier.
● Don't let technical jargon scare you.
● Be aware of opinions being presented as rules or "the right way" to
do things.
● Software development is insanely broad, don't worry about having
to know everything. Keep on learning.
Last but not least
● Everybody has to consult Google/StackOverflow ALL THE TIME. You
are NOT the only one.
● If you hear something like "A true software developer...", just ignore
whatever comes next.
● There are different types of developers and software development.
And every type deserves respect.
● Let's respect our differences and support each other :)
Thank you!
Email: q.tuane@gmail.com
Twitter / Github: @tuttiq
Facebook / Messenger: https://fb.me/tuttiquintella
LinkedIn: https://linkedin.com/in/tuttiquintella

More Related Content

Similar to Introduction to the Software Development world

Computer Programming Overview
Computer Programming OverviewComputer Programming Overview
Computer Programming Overviewagorolabs
 
GDSC career guide presentation.pptx
GDSC career guide presentation.pptxGDSC career guide presentation.pptx
GDSC career guide presentation.pptxDishaSharma737984
 
GDSC career guide presentation.pptx
GDSC career guide presentation.pptxGDSC career guide presentation.pptx
GDSC career guide presentation.pptxAryanSharma853911
 
12 best programming languages for web & app development
12 best programming languages for web & app development12 best programming languages for web & app development
12 best programming languages for web & app developmentBiztech Consulting & Solutions
 
Flutter not yet another mobile cross-platform framework - i ox-kl19
Flutter   not yet another mobile cross-platform framework - i ox-kl19Flutter   not yet another mobile cross-platform framework - i ox-kl19
Flutter not yet another mobile cross-platform framework - i ox-kl19oradoe
 
Specification Of The Programming Language Of Java
Specification Of The Programming Language Of JavaSpecification Of The Programming Language Of Java
Specification Of The Programming Language Of JavaKim Moore
 
What is a "programmer"?
What is a "programmer"?What is a "programmer"?
What is a "programmer"?Jeff Crockett
 
Software development, mobile platforms, cloud services - Lean Development and...
Software development, mobile platforms, cloud services - Lean Development and...Software development, mobile platforms, cloud services - Lean Development and...
Software development, mobile platforms, cloud services - Lean Development and...Francesco Mapelli
 
Productivity Apps and Tools for Workplace version (0.8.2)
Productivity Apps and Tools for Workplace version (0.8.2)Productivity Apps and Tools for Workplace version (0.8.2)
Productivity Apps and Tools for Workplace version (0.8.2)DreamKonnect Consulting
 
How to make money from opensource
How to make money from opensourceHow to make money from opensource
How to make money from opensourceebalaskas
 
Intoduction to Linux
Intoduction to LinuxIntoduction to Linux
Intoduction to LinuxAnshul Sharma
 
Info Session GDSC USICT
Info Session GDSC USICTInfo Session GDSC USICT
Info Session GDSC USICTDSCUSICT
 
Life in CSE.pptx
Life in CSE.pptxLife in CSE.pptx
Life in CSE.pptxVedVekhande
 
Developing an Engineering Mindset by Junaid Javed
Developing an Engineering Mindset by Junaid JavedDeveloping an Engineering Mindset by Junaid Javed
Developing an Engineering Mindset by Junaid JavedJamil Goheer
 
DT2014-15 S01: Digital Toolbox
DT2014-15 S01: Digital ToolboxDT2014-15 S01: Digital Toolbox
DT2014-15 S01: Digital ToolboxCarlos Cámara
 
Mobile App vs Mobile Web Development
Mobile App vs Mobile Web DevelopmentMobile App vs Mobile Web Development
Mobile App vs Mobile Web DevelopmentTAG_education
 

Similar to Introduction to the Software Development world (20)

Computer Programming Overview
Computer Programming OverviewComputer Programming Overview
Computer Programming Overview
 
GDSC career guide presentation.pptx
GDSC career guide presentation.pptxGDSC career guide presentation.pptx
GDSC career guide presentation.pptx
 
GDSC career guide presentation.pptx
GDSC career guide presentation.pptxGDSC career guide presentation.pptx
GDSC career guide presentation.pptx
 
12 best programming languages for web & app development
12 best programming languages for web & app development12 best programming languages for web & app development
12 best programming languages for web & app development
 
Flutter not yet another mobile cross-platform framework - i ox-kl19
Flutter   not yet another mobile cross-platform framework - i ox-kl19Flutter   not yet another mobile cross-platform framework - i ox-kl19
Flutter not yet another mobile cross-platform framework - i ox-kl19
 
Specification Of The Programming Language Of Java
Specification Of The Programming Language Of JavaSpecification Of The Programming Language Of Java
Specification Of The Programming Language Of Java
 
What is a "programmer"?
What is a "programmer"?What is a "programmer"?
What is a "programmer"?
 
Software development, mobile platforms, cloud services - Lean Development and...
Software development, mobile platforms, cloud services - Lean Development and...Software development, mobile platforms, cloud services - Lean Development and...
Software development, mobile platforms, cloud services - Lean Development and...
 
Productivity Apps and Tools for Workplace version (0.8.2)
Productivity Apps and Tools for Workplace version (0.8.2)Productivity Apps and Tools for Workplace version (0.8.2)
Productivity Apps and Tools for Workplace version (0.8.2)
 
History Of C Essay
History Of C EssayHistory Of C Essay
History Of C Essay
 
Chapter 1
Chapter 1Chapter 1
Chapter 1
 
How to make money from opensource
How to make money from opensourceHow to make money from opensource
How to make money from opensource
 
Foss Presentation
Foss PresentationFoss Presentation
Foss Presentation
 
Intoduction to Linux
Intoduction to LinuxIntoduction to Linux
Intoduction to Linux
 
Info Session GDSC USICT
Info Session GDSC USICTInfo Session GDSC USICT
Info Session GDSC USICT
 
Life in CSE.pptx
Life in CSE.pptxLife in CSE.pptx
Life in CSE.pptx
 
Developing an Engineering Mindset by Junaid Javed
Developing an Engineering Mindset by Junaid JavedDeveloping an Engineering Mindset by Junaid Javed
Developing an Engineering Mindset by Junaid Javed
 
DT2014-15 S01: Digital Toolbox
DT2014-15 S01: Digital ToolboxDT2014-15 S01: Digital Toolbox
DT2014-15 S01: Digital Toolbox
 
Lecture 1.pptx
Lecture 1.pptxLecture 1.pptx
Lecture 1.pptx
 
Mobile App vs Mobile Web Development
Mobile App vs Mobile Web DevelopmentMobile App vs Mobile Web Development
Mobile App vs Mobile Web Development
 

Recently uploaded

"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 

Recently uploaded (20)

"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 

Introduction to the Software Development world

  • 1. Introduction to the Software Development world If you want to become a software developer, press enter to start.
  • 2. ● Tutti Quintella (@tuttiq online) ● From São Paulo, Brazil ● Major in Computer Engineering ● Software Engineer since 2011 ● Main experience with web & mobile development ● Like dancing, cooking and going out/socializing (not all developers are introverts!) Who am I?
  • 3. ● What's a software or app? Can I run software anywhere? ● What are operating systems or platforms? ● What can I do with software development? What kind of developer do I want to be? ● What are programming languages vs frameworks? ● What to consider when choosing a programming language or framework? First things first
  • 5. Basic concepts ● Computer: any electronic device that has a processor (laptops, servers, smartphones, smartwatches, smart tvs, micro-computers…) ● Software: the programs that run in a computer ● App: software application. Software designed to perform a specific function directly for the user or, in some cases, for another application.
  • 6. Basic concepts In other words: software or apps are a bunch of text files with instructions that a computer can understand and execute.
  • 7. Basic concepts ● Operating system: the base software that supports a computer's basic functions, like managing hardware resources and software applications. Ex: managing information on the memory, managing peripherals, installing and running apps. ● Platform: a major piece of software. Ex: operating systems.
  • 8. What can I do with software development? What kind of developer do I want to be?
  • 9. App / Game Development ● Web Apps / Games (web pages, software you access from a browser) ○ Divided in Back-end (Server side) and Front-end (Client side) ○ Examples: Amazon, Gmail, Google Docs, web games ● Mobile Apps / Games (software you run on a phone or tablet) ○ Android, iOS ○ Examples: Uber, Whatsapp, Instagram, mobile games ● PC Apps / Games (software you run on a personal computer) ○ Windows / Linux / MacOS ○ Examples: Microsoft Office, Skype, Photoshop, PC games What do I want to do?
  • 10. App / Game Development ● Game Console Apps / Games (software you run on a game console) ○ XBox, PlayStation, Nintendo Wii, etc… ○ Examples: Netflix for XBox, any console game ● Other devices ○ ATMs, SmartTVs, Smart Watches, micro-computers… ○ Examples: Netflix for SmartTVs, Apple Watch apps, IoT, etc... ● Multi-platform ○ Code once, use it for multiple devices / operating systems ○ Examples: Cordova, Ionic, Electron, Unity3D What do I want to do?
  • 11. Other types of programming ● Infrastructure / DevOps ○ Windows / Linux Servers ○ Server configuration, performance monitor, continuous integration... ○ Tools: AWS, Jenkins, Sentry, NewRelic, Docker, Kubernetes, etc... ● Data Analysis ○ Analyze big amounts of data and turn into meaningful information ○ Tools: SQL, R, Google BigQuery, TrasureData, Tableau ● Data Science / AI / Machine Learning ○ Algorithms and systems built to learn and adapt over data ○ Image recognition, NPL (Natural Language Processing), etc... What do I want to do?
  • 12. App Development ● Web Apps (web pages, software you access from a browser) ○ Divided in Back-end (Server side) and Front-end (Client side) ○ Examples: Amazon, Gmail, Google Docs ● Mobile Apps / Games (software you run on a phone or tablet) ○ Android, iOS ○ Examples: Uber, Whatsapp, Instagram, mobile games ● PC Apps / Games (software you run on a personal computer) ○ Windows / Linux / MacOS ○ Examples: Microsoft Office, Skype, Photoshop, PC games My "choice"
  • 14. Programming languages vs Frameworks/Libraries ● Programming languages: Java, Ruby, Python, Javascript... ● Frameworks/Libraries: Spring, Rails, Django, ReactJS, NodeJS ● What is a library? ● What is a framework? ○ "A supporting structure around which something can be built" ○ "A system of rules, ideas, or beliefs that is used to plan or decide something" ○ In a more practical definition: usually a big language extension, that provides standards and features that the programming language doesn't have by itself (a.k.a a big and opinionated library)
  • 15. Language Frameworks Go Echo, Chi, Gin C / C++ Wt, CppCMS... C# ASP.NET Perl Mojolicious, Catalyst... Scala Play Elixir Phoenix Programming languages vs Frameworks Language Frameworks JavaScript jQuery, React, Angular, NodeJS... Java JSF, Spring, Android SDK... Swift FlourishUI, Perfect, ReactKit Ruby Rails, Sinatra... Python Django, Flask... PHP Laravel, CodeIgniter, Zend...
  • 16. ● Templates, markup, key-value formats: HTML, XML, JSON, YAML ● Styling: CSS (Frameworks: Bootstrap, Materialize, Bulma…) Other languages and file formats
  • 17. What to consider when choosing a programming language or framework?
  • 18. 1. Age of a language/framework a. Is it already obsolete due to new languages? b. Does it solve modern problems? c. How mature is it (how stable are updates and how complete is its documentation)? 1. What's the learning curve like and how much effort/time do I want to spend learning it? 1. Is it appropriate and useful for what I want to develop? a. Is it commonly used for similar purposes? b. Does it have libraries/helpers/tools that will help with it? 1. Is it valuable in the market? a. Are many companies hiring to work with it? Are the jobs well paid? b. Is it a market trend? What are the reasons for the trend? c. Will it be valuable in the short/mid-term future? Choosing what to learn/use
  • 20. About the profession / industry / community ● After the first programming language and tools, it gets easier. ● Don't let technical jargon scare you. ● Be aware of opinions being presented as rules or "the right way" to do things. ● Software development is insanely broad, don't worry about having to know everything. Keep on learning.
  • 21. Last but not least ● Everybody has to consult Google/StackOverflow ALL THE TIME. You are NOT the only one. ● If you hear something like "A true software developer...", just ignore whatever comes next. ● There are different types of developers and software development. And every type deserves respect. ● Let's respect our differences and support each other :)
  • 22. Thank you! Email: q.tuane@gmail.com Twitter / Github: @tuttiq Facebook / Messenger: https://fb.me/tuttiquintella LinkedIn: https://linkedin.com/in/tuttiquintella

Editor's Notes

  1. Frameworks are optional, but very commonly used Those are just a few examples, there are many other languages and frameworks
  2. - After you learn your first programming language and how to use its tools, you'll need way less time and effort to learn other languages and tools, as there are a lot of similarities. Base concepts and sometimes syntax are the same, a lot of tools are multi-platform or support multiple languages - There are a lot of technical jargon for concepts you probably already know. Don't let them scare you. If you think you know something similar but with a different name, it's probably because they're the same thing, in different contexts. Examples: pointer == reference, static attributes == class attributes, integration tests == end-2-end tests, dependency injection == passing all you need as parameters to a class/function, interpreted language == scripting language, NoSQL DB == Non-relational DB - Some people will mention "rules" you should follow or "the right way" to do things. Take it with a grain of salt. Many things are subjective and based on personal opinion or empirical knowledge. Example: test philosophy, design patterns, code readability, what language/framework is better - There are no obvious or dumb questions. Don't believe if you hear "everyone knows this". Software development is insanely broad, it's impossible for everyone to know everything.