software engineering - trends & industry practices

37
Software Engineering INDUSTRY TRENDS AND PRACTICES Alfred Jett Grandeza Founder, Leangineer @ Lean Consulting leanconsulting.ph | ajgrandeza.com | github.com/grandezaaj

Upload: alfred-jett-grandeza

Post on 14-Apr-2017

157 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: Software Engineering - Trends & Industry Practices

Software EngineeringINDUSTRY TRENDS AND PRACTICES

Alfred Jett GrandezaFounder, Leangineer @ Lean Consulting

leanconsulting.ph | ajgrandeza.com | github.com/grandezaaj

Page 2: Software Engineering - Trends & Industry Practices

About Me•Graduate of Ateneo de Davao, Computer Science 2012

•Over 5 years of software engineering experience, .NET and AngularJS

•Former CTO of T.H.E. Patrons

•Co-founder of Lean Consulting/Lean Academy

•Microsoft Technology Associate (2)

•Member of Davao .NET Community (Davao .NET Users Group, Philippine .NET Users Group)

•I do consulting and freelance work from clients overseas

•Advocate of .NET Technologies

•I LOVE TO LEARN!

Page 3: Software Engineering - Trends & Industry Practices

Lean Consulting• Davao based start-up• Founded: February 2016• Lean Academy SOON!• More info:

• leanconsulting.ph• fb.com/leanconsutling.ph

Page 4: Software Engineering - Trends & Industry Practices

Disclaimer• Contents are half opinionated, half backed by studies

• I’ll be talking mostly from my experience – as a Developer and a Startup founder

• Mostly in the Object Oriented point of view

Page 5: Software Engineering - Trends & Industry Practices

Industry TrendsPOPULAR PROGRAMMING LANGUAGES

Page 6: Software Engineering - Trends & Industry Practices

Image from Coding Dojohttp://www.codingdojo.com/blog/9-most-in-demand-programming-languages-of-2016/

Page 7: Software Engineering - Trends & Industry Practices

It’s a good time to be a C# Developer• Microsoft is moving towards open source• .NET Core• https://github.com/dotnet/core

• Visual Studio Code• Runs on Linux, Mac and Windows

• Xamarin for Cross platform mobile development• Using C#• iOS, Android and Windows Phone and Mac OS

• Microsoft has been a supporting other open source frameworks such as AngularJS

• Azure supports different distribution of Linux and other open source frameworks (also PHP)

Page 8: Software Engineering - Trends & Industry Practices

The rise of JavaScript

Page 9: Software Engineering - Trends & Industry Practices

The rise of JavaScript• Your website sucks without JavaScript

• JS Frameworks make your website powerful

• JavaScript conquered the Web

• Now its taking over other areas• Mobile• PhoneGap, Ionic, Sencha Touch, jQuery Mobile and many more

• Server Side Applications• Node JS

Page 10: Software Engineering - Trends & Industry Practices

Single Page Applications• SPAs are web apps that load a single HTML page and dynamically that page as the user interacts

• Much of the work happen in the client side

• Usually written in JavaScript

Page 11: Software Engineering - Trends & Industry Practices

SPA Lifecycle

Page 12: Software Engineering - Trends & Industry Practices

TypeScript•Open source programming language

• Developed and maintained by Microsoft

• A superset of JavaScript

• Transpiles to plain JavaScript

• Strongly typed

• Class based / OOP approach

• Learn more:• http://www.typescriptlang.org/Playground

Image from: https://weblogs.asp.net/dwahlin/getting-started-with-typescript-classes-static-types-and-interfaces

Page 13: Software Engineering - Trends & Industry Practices

Best PracticesSOFTWARE DEVELOPMENT APPROACHES

Page 14: Software Engineering - Trends & Industry Practices

Agile Software Development• a set of principles for software development

• collaborative effort

• Adaptive

• Iterative

Page 15: Software Engineering - Trends & Industry Practices

Agile Methods & Practices• Extreme Programming• Lean Software Development• Kanban• Scrum• Test driven development• Domain Driven Design

Page 16: Software Engineering - Trends & Industry Practices

Domain Driven Design• DDD is an approach to software development

• Focuses on the complexity of the business domain

• Distinguishes core domain (unique to the business) from supporting sub domains

Page 17: Software Engineering - Trends & Industry Practices

Why is DDD important?• Helps you (Developer) understand more about the business

• Helps all of the stakeholders the needs of the business

• All stakeholders will be communicating in one language

Page 18: Software Engineering - Trends & Industry Practices

Test Driven Development• is a software development process

• relies on the repetition of a very short cycle

Page 19: Software Engineering - Trends & Industry Practices

Why use TDD?• Better understanding of your code and requirements

• Speeds up development• By limiting bugs in QA phase

• Cleaner code

• Saves business’ money

Page 20: Software Engineering - Trends & Industry Practices

S.O.L.I.D. Principles• 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

Page 21: Software Engineering - Trends & Industry Practices

Single Responsibility Principle• A class should have one responsibility only

• Separation of concerns

Page 22: Software Engineering - Trends & Industry Practices

Open Closed Principle• Open for extension• extend existing code

• Close for modification• Once a function or class or an entity has been developed and tested, it should only be modified to fix

bugs

Page 23: Software Engineering - Trends & Industry Practices

Liskov Substitution Principle• objects in a program should be replaceable with instances of their subtypes without altering the correctness of that program

• A parent class object should be able to refer child objects seamlessly during runtime polymorphism

Page 24: Software Engineering - Trends & Industry Practices

Interface Segregation Principle• many client-specific interfaces are better than one general-purpose interface

• client should not be forced to use a interface if it does not need it.

Page 25: Software Engineering - Trends & Industry Practices

Dependency Inversion Principle• Depend on abstractions, not on concretions

Page 26: Software Engineering - Trends & Industry Practices

Continuous Integration• is a practice of merging all developer working copies

• Best practices• Automated tests• Automated builds• Self-testing builds• Test in a clone of production environment• Automated Deployment

Page 27: Software Engineering - Trends & Industry Practices

Other Important topics• Version Control (Git, SVN)

• Design Patterns

• Defensive Programming

• Information Security

• Debugging

• Understanding someone else’s code

• Rest Web Services

Page 28: Software Engineering - Trends & Industry Practices

Lean’s Internal ProcessPRACTICES AND TOOLS

Page 29: Software Engineering - Trends & Industry Practices

Project Flow

Page 30: Software Engineering - Trends & Industry Practices

Wireframing tools• Balsamiq

• Show sample

Page 31: Software Engineering - Trends & Industry Practices

Project Management & Communication Tools• Trello.com for Tasks

• visualstudio.com for Code Repository

• Slack for Communication

• show sample

Page 32: Software Engineering - Trends & Industry Practices

Frameworks & IDEs• Visual Studio 2015 Community Edition

• MS SQL Express 2016

• ASP.NET Web API 2.0

• Angular JS 1.X

• Entity Framework 6

Page 33: Software Engineering - Trends & Industry Practices

Recommended books

Page 34: Software Engineering - Trends & Industry Practices
Page 35: Software Engineering - Trends & Industry Practices

Upcoming Events

Page 36: Software Engineering - Trends & Industry Practices

Events• Davao MSDN Session #2• Oct 22, 2016• 3rd floor, Topaz Tower, Damosa IT Park, Gluon, Inc• fb.com/events/323740844652839/

• Lean Academy• Oct 29, 2016

Page 37: Software Engineering - Trends & Industry Practices

Thank you for listening!ANY QUESTIONS?