SlideShare una empresa de Scribd logo
1 de 41
SOFTWARE
DEVELOPMENT
FUNDAMENTALS
by: A.J. Grandeza, Co-founder Lean Agenda
Topics
1. About Lean Agenda
2. About the Speaker
3. Expectations
4. Core Programming – the basics
5. Object Oriented Principles – the essentials
6. S.O.L.I.D. Principles
7. Industry needs and expectations AND TIPS!
The Lean Agenda
• A branch of Lean Consulting PH
• We aim to narrow the gap between school knowledge and industry
expectations
• Prepare and educate people on the 21st century skills
About Me
• Graduate of Ateneo de Davao, Computer Science 2012
• Over 5 years of software engineering experience, .NET and AngularJS
• Co-founder/CTO of T.H.E. Patrons (ex-CTO)
• Co-founder of Lean Consulting, Lean Agenda
• Microsoft Technology Associate
• I LIKE TO LEARN!
What to expect
• Programming Language: C#
• Only fundamentals will be discussed
• Not your typical what-is-a and this-is-a discussion
• Feel free to ask
• Feel free to correct the speaker
• Feel free to add
• Learn something new!
What I except from you
• Your attention
• Questions!
• You have at least little knowledge on programming
 Because we won’t just be discussing definitions
 We will have a why-when type of discussion
Core Programming – the basics
• What is a variable?
 Holds a value temporarily in a computer memory
• What is a constant?
 Same as variable BUT cannot be changed on runtime or during program execution
• What is a data type?
 Classification of the type of a data – Integer, Boolean
Core Programming – Data types
Why is it important to know the data type?
In simple terms…
Variable – is the container
Data type – is the type of container
Do you want to put cookies in a tumbler?
No!
Well, technically...
• Using the correct data type will save space – in memory, only use what you
need
 You don’t need to use int for “Age”. Nobody gets 2,147,483,647 years old
• Because you won’t be able to multiply a string… 2 * “2”
• It is an implementation detail
Double vs Float vs Decimal
• Precision is the main difference
• Float: 7 digits
• Double: 15-16 digits
 Both are floating binary point types
 Faster than decimal
• Decimal: 28-29 digits
 Floating decimal point types
 Mainly used in financial solutions
 Slower than the other 2
Core Programming – Data structures
• Arrays
• Dictionaries
Arrays
• A collection of variables
• C# arrays are zero indexed
Dictionaries
• A collection of objects that are accessed by using a key
• Use dictionary if your indexes have a special meaning besides just positional
placement
Core Programming - Decision Making
• If, if-else, if-else-if VS Switch
• Switch is faster (a little)
 However, this is just a micro-optimization
• Switch is more readable
• Use switch if you have many items, if-else if fewer
Core Programming - Repetition
• For
• While
• Do while
When to use for loop?
• you can run a statement or a block of statements repeatedly until a specified
expression evaluates to false
• Useful for arrays
• When the number of times is known before hand
• Example: Displaying all data in a list
When to use while?
• executes a statement or a block of statements until a specified expression
evaluates to false.
• When the number of times is NOT known before hand
• Example: when your program is waiting for a form to be completed, it will
not save the form
When to use do-while
• Almost the same with while BUT is executed one time before the conditional
expression is evaluated
• When the number of times is NOT known before hand AND you want to
make sure it will be executed at least once
• Example: Display a question, and if the answer is correct move on to the
next question.
Core Programming – Exception Handling
• What is an exception?
 An exception is a problem that arises during the execution of a program.
• Try
 identifies a block of code for which particular exceptions is activated
• Catch
 the place in a program where you want to handle the problem
• Finally
 is used to execute a given set of statements, whether an exception is thrown or not
thrown
• Throw
 is used to signal the occurrence of an anomalous situation (exception) during the
program execution
Core Programming – Exception Handling
• A try-catch structure doesn’t prevent the exception from being thrown, it
simply gives the developer a chance to keep the program from crashing.
• When to use?
 When you are trying to do something that may not work
• When not to use?
 To hide problems happening in your code
• Demo
Object Oriented - Principles
• What is OOP?
 Is a programming paradigm based on objects
• Is it useful? Why?
 Code reusability
 Provides clear modular structure for programs
 Software components can be easily adapted and modified
• What are its disadvantages?
 Over complication
 Complexity in understanding “established” code – especially for beginners
 Prone to code spaghetti
Classes
• Can be reused
• It’s like a blueprint
• Includes attributes and behaviour
Abstraction
• Exposing essential feature
• Hides irrelevant detail
• Process of identifying common patterns that have systematic variations
Encapsulation
• Hide implementation details
• Creates a black box
• Behaviour can be exposed through interfaces
• Data members cannot be directly changed
• Encapsulation is implemented by using access specifiers
 Private
 Public
 Protected
 Internal
 Protected Internal
Inheritance
• Data & behaviour taken from another class
• Concept of super and sub class
• Provides base functionality for similar objects
• Allows for code re-use
• Use the “is-a” test if it’s appropriate to use
Polymorphism
• Poly = multiple
• Morph = to change
• Polymorphism = multiple forms or changes
• Behaviour change
• Virtual methods and overriding
Abstract Class VS Interfaces
• Abstract class
 Cannot be instantiated
 Must be inherited from
 May be fully implemented, partially implemented or not implemented at all
• Why do we need abstract classes?
 To provide some sort of default functionality
 Affects all derived classes if there are changes on the base class
Abstract Class VS Interfaces
• Interface
 Totally abstract set of members
 No implementation, contains only signatures
 Represents a contract
 In real world, a medium to interact with something
• Why do we need Interfaces?
 Multiple inheritance support
 Used in service contracts
 Loose coupling
 Modularity
S.O.L.I.D. Principles
• What is S.O.L.I.D. ?
• Basic principles which help you create good software architecture
• Acronym for
 Single Responsibility Principle
 Open Closed Principle
 Liskov Substitution Principle
 Interface Segregation Principle
 Dependency Inversion Principle
Single Responsibility Principle
• A class should have one responsibility only
• Separation of concern
• A class is not a swiss knife
• Demo
Open Closed Principle
• Should be open for extension but closed for modification
• Demo
Liskov Substitution Principle
• objects in a program should be replaceable with instances of their subtypes
without altering the correctness of that program
• Demo
Interface Segregation Principle
• many client-specific interfaces are better than one general-purpose interface
• Demo
Dependency Inversion Principle
• Depend on abstractions, not on concretions
• Demo
What to expect in the real world
• “If you think teachers are tough, wait till you get a boss” – Bill Gates
• Do not expect any training
• Be ready to read, read and read
• If you get bored easily on tedious work, programming is for you!
What to learn & how to improve
• If you’re a beginner, master one programming language
• After, strategically choose another language
• Master SQL. Everything is all about data.
• Learn Version Control, it’ll save a lot of time and plus points on applying for
work!
• Constantly challenge yourself
• Join GitHub, StackOverflow
• Don’t be lazy, always follow best practices until it becomes a habit
• Constantly learn new things
• Always ask why
Any questions?
• “ Any fool can write code that a
computer can understand. Good
programmers write code that humans
can understand. ” - Martin Fowler
References
• http://stackoverflow.com/questions/618535/difference-between-decimal-float-and-double-in-net
• https://msdn.microsoft.com/en-us/library/cs7y5x0x%28v=vs.90%29.aspx
• http://csharpindepth.com/Articles/General/FloatingPoint.aspx
• https://msdn.microsoft.com/en-us/library/aa288453(v=vs.71).aspx
• http://programmers.stackexchange.com/questions/139052/dictionary-vs-list
• https://msdn.microsoft.com/en-us/library/ch45axte.aspx
• http://wiki.tcl.tk/13398
• https://standardofnorms.wordpress.com/2012/09/02/4-pillars-of-object-oriented-programming/
• http://www.c-sharpcorner.com/UploadFile/d0e913/abstract-class-interface-two-villains-of-every-interview/
• http://www.c-sharpcorner.com/UploadFile/d0e913/abstract-class-interface-two-villains-of-every-interview756/
• http://www.c-sharpcorner.com/UploadFile/yusufkaratoprak/difference-between-loose-coupling-and-tight-coupling/
• http://www.codeproject.com/Articles/703634/SOLID-architecture-principles-using-simple-Csharp

Más contenido relacionado

La actualidad más candente

Code Review Matters and Manners
Code Review Matters and MannersCode Review Matters and Manners
Code Review Matters and MannersTrisha Gee
 
2CPP01 - Intro to Module
2CPP01 - Intro to Module2CPP01 - Intro to Module
2CPP01 - Intro to ModuleMichael Heron
 
Level Up Your Automated Tests
Level Up Your Automated TestsLevel Up Your Automated Tests
Level Up Your Automated TestsTrisha Gee
 
2013 09-11 java zone - extreme programming live
2013 09-11 java zone - extreme programming live2013 09-11 java zone - extreme programming live
2013 09-11 java zone - extreme programming liveJohannes Brodwall
 
Technical Mentoring, What works and not
Technical Mentoring, What works and notTechnical Mentoring, What works and not
Technical Mentoring, What works and notStanly Lau
 
Is Groovy better for testing than Java?
Is Groovy better for testing than Java?Is Groovy better for testing than Java?
Is Groovy better for testing than Java?Trisha Gee
 
How I help others to level up technical practices
How I help others to level up technical practicesHow I help others to level up technical practices
How I help others to level up technical practicesStanly Lau
 
Pragmatic Architecture for Agile Teams - GeeCON 2014
Pragmatic Architecture for Agile Teams - GeeCON 2014Pragmatic Architecture for Agile Teams - GeeCON 2014
Pragmatic Architecture for Agile Teams - GeeCON 2014Janne Sinivirta
 
2 anton muzhailo - team development techniques you must know to be a valuab...
2   anton muzhailo - team development techniques you must know to be a valuab...2   anton muzhailo - team development techniques you must know to be a valuab...
2 anton muzhailo - team development techniques you must know to be a valuab...Ievgenii Katsan
 
Pragmatic Architecture in .NET
Pragmatic Architecture in .NETPragmatic Architecture in .NET
Pragmatic Architecture in .NEThousecor
 
Lessons learned with Bdd: a tutorial
Lessons learned with Bdd: a tutorialLessons learned with Bdd: a tutorial
Lessons learned with Bdd: a tutorialAlan Richardson
 
TDD - Christchurch APN May 2012
TDD - Christchurch APN May 2012TDD - Christchurch APN May 2012
TDD - Christchurch APN May 2012Alan Christensen
 
Level Up Your Automated Tests
Level Up Your Automated TestsLevel Up Your Automated Tests
Level Up Your Automated TestsTrisha Gee
 

La actualidad más candente (19)

Code Review Matters and Manners
Code Review Matters and MannersCode Review Matters and Manners
Code Review Matters and Manners
 
2CPP01 - Intro to Module
2CPP01 - Intro to Module2CPP01 - Intro to Module
2CPP01 - Intro to Module
 
Level Up Your Automated Tests
Level Up Your Automated TestsLevel Up Your Automated Tests
Level Up Your Automated Tests
 
2013 09-11 java zone - extreme programming live
2013 09-11 java zone - extreme programming live2013 09-11 java zone - extreme programming live
2013 09-11 java zone - extreme programming live
 
Technical Mentoring, What works and not
Technical Mentoring, What works and notTechnical Mentoring, What works and not
Technical Mentoring, What works and not
 
Is Groovy better for testing than Java?
Is Groovy better for testing than Java?Is Groovy better for testing than Java?
Is Groovy better for testing than Java?
 
Clean Code
Clean CodeClean Code
Clean Code
 
How I help others to level up technical practices
How I help others to level up technical practicesHow I help others to level up technical practices
How I help others to level up technical practices
 
Pragmatic Architecture for Agile Teams - GeeCON 2014
Pragmatic Architecture for Agile Teams - GeeCON 2014Pragmatic Architecture for Agile Teams - GeeCON 2014
Pragmatic Architecture for Agile Teams - GeeCON 2014
 
2 anton muzhailo - team development techniques you must know to be a valuab...
2   anton muzhailo - team development techniques you must know to be a valuab...2   anton muzhailo - team development techniques you must know to be a valuab...
2 anton muzhailo - team development techniques you must know to be a valuab...
 
Pragmatic Architecture in .NET
Pragmatic Architecture in .NETPragmatic Architecture in .NET
Pragmatic Architecture in .NET
 
Useful automation
Useful automationUseful automation
Useful automation
 
Clean code
Clean codeClean code
Clean code
 
Why You're A Bad PHP Programmer
Why You're A Bad PHP ProgrammerWhy You're A Bad PHP Programmer
Why You're A Bad PHP Programmer
 
clean code - uncle bob
clean code - uncle bobclean code - uncle bob
clean code - uncle bob
 
Lessons learned with Bdd: a tutorial
Lessons learned with Bdd: a tutorialLessons learned with Bdd: a tutorial
Lessons learned with Bdd: a tutorial
 
(A)TDD The what, why and how
(A)TDD The what, why and how(A)TDD The what, why and how
(A)TDD The what, why and how
 
TDD - Christchurch APN May 2012
TDD - Christchurch APN May 2012TDD - Christchurch APN May 2012
TDD - Christchurch APN May 2012
 
Level Up Your Automated Tests
Level Up Your Automated TestsLevel Up Your Automated Tests
Level Up Your Automated Tests
 

Similar a Software development fundamentals

Orthogonality: A Strategy for Reusable Code
Orthogonality: A Strategy for Reusable CodeOrthogonality: A Strategy for Reusable Code
Orthogonality: A Strategy for Reusable Codersebbe
 
Improving Software Quality Using Object Oriented Design Principles
Improving Software Quality Using Object Oriented Design PrinciplesImproving Software Quality Using Object Oriented Design Principles
Improving Software Quality Using Object Oriented Design PrinciplesDr. Syed Hassan Amin
 
The 360 Developer
The 360 DeveloperThe 360 Developer
The 360 Developerenteritos
 
CPP16 - Object Design
CPP16 - Object DesignCPP16 - Object Design
CPP16 - Object DesignMichael Heron
 
Software Engineering - Trends & Industry Practices
Software Engineering - Trends & Industry PracticesSoftware Engineering - Trends & Industry Practices
Software Engineering - Trends & Industry PracticesAlfred Jett Grandeza
 
Is your code SOLID enough?
 Is your code SOLID enough? Is your code SOLID enough?
Is your code SOLID enough?SARCCOM
 
Driving application development through behavior driven development
Driving application development through behavior driven developmentDriving application development through behavior driven development
Driving application development through behavior driven developmentEinar Ingebrigtsen
 
Clean code presentation
Clean code presentationClean code presentation
Clean code presentationBhavin Gandhi
 
Reading Notes : the practice of programming
Reading Notes : the practice of programmingReading Notes : the practice of programming
Reading Notes : the practice of programmingJuggernaut Liu
 
How to guarantee your change is integrated to Moodle core
How to guarantee your change is integrated to Moodle coreHow to guarantee your change is integrated to Moodle core
How to guarantee your change is integrated to Moodle coreDan Poltawski
 
Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®Hannes Lowette
 
It's XP Stupid (2019)
It's XP Stupid (2019)It's XP Stupid (2019)
It's XP Stupid (2019)Mike Harris
 
Introduction to Functional Programming
Introduction to Functional ProgrammingIntroduction to Functional Programming
Introduction to Functional ProgrammingDave Fancher
 
Agile Software Development
Agile Software DevelopmentAgile Software Development
Agile Software DevelopmentAhmet Bulut
 
Basic software engineering principles - Session 1
Basic software engineering principles - Session 1Basic software engineering principles - Session 1
Basic software engineering principles - Session 1LahiruWijewardana1
 

Similar a Software development fundamentals (20)

Orthogonality: A Strategy for Reusable Code
Orthogonality: A Strategy for Reusable CodeOrthogonality: A Strategy for Reusable Code
Orthogonality: A Strategy for Reusable Code
 
Improving Software Quality Using Object Oriented Design Principles
Improving Software Quality Using Object Oriented Design PrinciplesImproving Software Quality Using Object Oriented Design Principles
Improving Software Quality Using Object Oriented Design Principles
 
The 360 Developer
The 360 DeveloperThe 360 Developer
The 360 Developer
 
CPP16 - Object Design
CPP16 - Object DesignCPP16 - Object Design
CPP16 - Object Design
 
It's XP, Stupid
It's XP, StupidIt's XP, Stupid
It's XP, Stupid
 
Software Engineering - Trends & Industry Practices
Software Engineering - Trends & Industry PracticesSoftware Engineering - Trends & Industry Practices
Software Engineering - Trends & Industry Practices
 
Is your code SOLID enough?
 Is your code SOLID enough? Is your code SOLID enough?
Is your code SOLID enough?
 
Driving application development through behavior driven development
Driving application development through behavior driven developmentDriving application development through behavior driven development
Driving application development through behavior driven development
 
Clean code presentation
Clean code presentationClean code presentation
Clean code presentation
 
Reading Notes : the practice of programming
Reading Notes : the practice of programmingReading Notes : the practice of programming
Reading Notes : the practice of programming
 
How to guarantee your change is integrated to Moodle core
How to guarantee your change is integrated to Moodle coreHow to guarantee your change is integrated to Moodle core
How to guarantee your change is integrated to Moodle core
 
Solid principles
Solid principlesSolid principles
Solid principles
 
Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®
 
It's XP Stupid (2019)
It's XP Stupid (2019)It's XP Stupid (2019)
It's XP Stupid (2019)
 
Introduction to Functional Programming
Introduction to Functional ProgrammingIntroduction to Functional Programming
Introduction to Functional Programming
 
android principle.pptx
android principle.pptxandroid principle.pptx
android principle.pptx
 
Agile Software Development
Agile Software DevelopmentAgile Software Development
Agile Software Development
 
Basic software engineering principles - Session 1
Basic software engineering principles - Session 1Basic software engineering principles - Session 1
Basic software engineering principles - Session 1
 
Oop.pptx
Oop.pptxOop.pptx
Oop.pptx
 
Design p atterns
Design p atternsDesign p atterns
Design p atterns
 

Más de Alfred Jett Grandeza

Más de Alfred Jett Grandeza (6)

Automated testing using Selenium & NUnit
Automated testing using Selenium & NUnitAutomated testing using Selenium & NUnit
Automated testing using Selenium & NUnit
 
What’s new in VS 2017?
What’s new in VS 2017?What’s new in VS 2017?
What’s new in VS 2017?
 
What's new in Angular 2?
What's new in Angular 2?What's new in Angular 2?
What's new in Angular 2?
 
Career Options for CS/IT/IS graduates
Career Options for CS/IT/IS graduatesCareer Options for CS/IT/IS graduates
Career Options for CS/IT/IS graduates
 
Introducing MS VS LightSwitch 2011
Introducing MS VS LightSwitch 2011Introducing MS VS LightSwitch 2011
Introducing MS VS LightSwitch 2011
 
Using xml in a data set (ado.net)
Using xml in a data set (ado.net)Using xml in a data set (ado.net)
Using xml in a data set (ado.net)
 

Último

Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceanilsa9823
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️anilsa9823
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 

Último (20)

Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 

Software development fundamentals

  • 2. Topics 1. About Lean Agenda 2. About the Speaker 3. Expectations 4. Core Programming – the basics 5. Object Oriented Principles – the essentials 6. S.O.L.I.D. Principles 7. Industry needs and expectations AND TIPS!
  • 3. The Lean Agenda • A branch of Lean Consulting PH • We aim to narrow the gap between school knowledge and industry expectations • Prepare and educate people on the 21st century skills
  • 4. About Me • Graduate of Ateneo de Davao, Computer Science 2012 • Over 5 years of software engineering experience, .NET and AngularJS • Co-founder/CTO of T.H.E. Patrons (ex-CTO) • Co-founder of Lean Consulting, Lean Agenda • Microsoft Technology Associate • I LIKE TO LEARN!
  • 5. What to expect • Programming Language: C# • Only fundamentals will be discussed • Not your typical what-is-a and this-is-a discussion • Feel free to ask • Feel free to correct the speaker • Feel free to add • Learn something new!
  • 6. What I except from you • Your attention • Questions! • You have at least little knowledge on programming  Because we won’t just be discussing definitions  We will have a why-when type of discussion
  • 7. Core Programming – the basics • What is a variable?  Holds a value temporarily in a computer memory • What is a constant?  Same as variable BUT cannot be changed on runtime or during program execution • What is a data type?  Classification of the type of a data – Integer, Boolean
  • 8. Core Programming – Data types
  • 9. Why is it important to know the data type?
  • 10. In simple terms… Variable – is the container Data type – is the type of container Do you want to put cookies in a tumbler? No!
  • 11. Well, technically... • Using the correct data type will save space – in memory, only use what you need  You don’t need to use int for “Age”. Nobody gets 2,147,483,647 years old • Because you won’t be able to multiply a string… 2 * “2” • It is an implementation detail
  • 12. Double vs Float vs Decimal • Precision is the main difference • Float: 7 digits • Double: 15-16 digits  Both are floating binary point types  Faster than decimal • Decimal: 28-29 digits  Floating decimal point types  Mainly used in financial solutions  Slower than the other 2
  • 13. Core Programming – Data structures • Arrays • Dictionaries
  • 14. Arrays • A collection of variables • C# arrays are zero indexed
  • 15. Dictionaries • A collection of objects that are accessed by using a key • Use dictionary if your indexes have a special meaning besides just positional placement
  • 16. Core Programming - Decision Making • If, if-else, if-else-if VS Switch • Switch is faster (a little)  However, this is just a micro-optimization • Switch is more readable • Use switch if you have many items, if-else if fewer
  • 17. Core Programming - Repetition • For • While • Do while
  • 18. When to use for loop? • you can run a statement or a block of statements repeatedly until a specified expression evaluates to false • Useful for arrays • When the number of times is known before hand • Example: Displaying all data in a list
  • 19. When to use while? • executes a statement or a block of statements until a specified expression evaluates to false. • When the number of times is NOT known before hand • Example: when your program is waiting for a form to be completed, it will not save the form
  • 20. When to use do-while • Almost the same with while BUT is executed one time before the conditional expression is evaluated • When the number of times is NOT known before hand AND you want to make sure it will be executed at least once • Example: Display a question, and if the answer is correct move on to the next question.
  • 21. Core Programming – Exception Handling • What is an exception?  An exception is a problem that arises during the execution of a program. • Try  identifies a block of code for which particular exceptions is activated • Catch  the place in a program where you want to handle the problem • Finally  is used to execute a given set of statements, whether an exception is thrown or not thrown • Throw  is used to signal the occurrence of an anomalous situation (exception) during the program execution
  • 22. Core Programming – Exception Handling • A try-catch structure doesn’t prevent the exception from being thrown, it simply gives the developer a chance to keep the program from crashing. • When to use?  When you are trying to do something that may not work • When not to use?  To hide problems happening in your code • Demo
  • 23. Object Oriented - Principles • What is OOP?  Is a programming paradigm based on objects • Is it useful? Why?  Code reusability  Provides clear modular structure for programs  Software components can be easily adapted and modified • What are its disadvantages?  Over complication  Complexity in understanding “established” code – especially for beginners  Prone to code spaghetti
  • 24. Classes • Can be reused • It’s like a blueprint • Includes attributes and behaviour
  • 25. Abstraction • Exposing essential feature • Hides irrelevant detail • Process of identifying common patterns that have systematic variations
  • 26. Encapsulation • Hide implementation details • Creates a black box • Behaviour can be exposed through interfaces • Data members cannot be directly changed • Encapsulation is implemented by using access specifiers  Private  Public  Protected  Internal  Protected Internal
  • 27. Inheritance • Data & behaviour taken from another class • Concept of super and sub class • Provides base functionality for similar objects • Allows for code re-use • Use the “is-a” test if it’s appropriate to use
  • 28. Polymorphism • Poly = multiple • Morph = to change • Polymorphism = multiple forms or changes • Behaviour change • Virtual methods and overriding
  • 29. Abstract Class VS Interfaces • Abstract class  Cannot be instantiated  Must be inherited from  May be fully implemented, partially implemented or not implemented at all • Why do we need abstract classes?  To provide some sort of default functionality  Affects all derived classes if there are changes on the base class
  • 30. Abstract Class VS Interfaces • Interface  Totally abstract set of members  No implementation, contains only signatures  Represents a contract  In real world, a medium to interact with something • Why do we need Interfaces?  Multiple inheritance support  Used in service contracts  Loose coupling  Modularity
  • 31. S.O.L.I.D. Principles • What is S.O.L.I.D. ? • Basic principles which help you create good software architecture • Acronym for  Single Responsibility Principle  Open Closed Principle  Liskov Substitution Principle  Interface Segregation Principle  Dependency Inversion Principle
  • 32. Single Responsibility Principle • A class should have one responsibility only • Separation of concern • A class is not a swiss knife • Demo
  • 33. Open Closed Principle • Should be open for extension but closed for modification • Demo
  • 34. Liskov Substitution Principle • objects in a program should be replaceable with instances of their subtypes without altering the correctness of that program • Demo
  • 35. Interface Segregation Principle • many client-specific interfaces are better than one general-purpose interface • Demo
  • 36. Dependency Inversion Principle • Depend on abstractions, not on concretions • Demo
  • 37. What to expect in the real world • “If you think teachers are tough, wait till you get a boss” – Bill Gates • Do not expect any training • Be ready to read, read and read • If you get bored easily on tedious work, programming is for you!
  • 38. What to learn & how to improve • If you’re a beginner, master one programming language • After, strategically choose another language • Master SQL. Everything is all about data. • Learn Version Control, it’ll save a lot of time and plus points on applying for work! • Constantly challenge yourself • Join GitHub, StackOverflow • Don’t be lazy, always follow best practices until it becomes a habit • Constantly learn new things • Always ask why
  • 40. • “ Any fool can write code that a computer can understand. Good programmers write code that humans can understand. ” - Martin Fowler
  • 41. References • http://stackoverflow.com/questions/618535/difference-between-decimal-float-and-double-in-net • https://msdn.microsoft.com/en-us/library/cs7y5x0x%28v=vs.90%29.aspx • http://csharpindepth.com/Articles/General/FloatingPoint.aspx • https://msdn.microsoft.com/en-us/library/aa288453(v=vs.71).aspx • http://programmers.stackexchange.com/questions/139052/dictionary-vs-list • https://msdn.microsoft.com/en-us/library/ch45axte.aspx • http://wiki.tcl.tk/13398 • https://standardofnorms.wordpress.com/2012/09/02/4-pillars-of-object-oriented-programming/ • http://www.c-sharpcorner.com/UploadFile/d0e913/abstract-class-interface-two-villains-of-every-interview/ • http://www.c-sharpcorner.com/UploadFile/d0e913/abstract-class-interface-two-villains-of-every-interview756/ • http://www.c-sharpcorner.com/UploadFile/yusufkaratoprak/difference-between-loose-coupling-and-tight-coupling/ • http://www.codeproject.com/Articles/703634/SOLID-architecture-principles-using-simple-Csharp