際際滷

際際滷Share a Scribd company logo
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

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

  • #16: Frameworks are optional, but very commonly used Those are just a few examples, there are many other languages and frameworks
  • #21: - 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.