Presentation is loading. Please wait.

Presentation is loading. Please wait.

Software Development An overview of careers in Business Application Development http://goo.gl/3go6re Sources: Dice.com, money.CNN.com, InfoWorld.com, money.USNews.com,

Similar presentations


Presentation on theme: "Software Development An overview of careers in Business Application Development http://goo.gl/3go6re Sources: Dice.com, money.CNN.com, InfoWorld.com, money.USNews.com,"— Presentation transcript:

1 Software Development An overview of careers in Business Application Development Sources: Dice.com, money.CNN.com, InfoWorld.com, money.USNews.com, GlassDoor.com, Indeed.com, OODesign.com, LosTechies.com, myself

2 The Job Market Or… “How to win at life”

3 Jobs… jobs EVERYWHERE! 120% growth over the last 4 years
Estimated 30% growth through 2020 Jobs in every city Demand for developers far exceeds supply

4 Who likes money? Average salary of $92,000+
Salary starts lower, but scales quickly with experience. Some of the highest disposable income is in Texas!

5 The most fun you can have at a desk (legally).
Flexible hours Casual dress code Fun environments Beer and ping pong!

6 What is Software Development?
No, really…

7 Consulting vs Product vs IT

8 git merge reality Coding is only half the battle.
You must understand the needs of many different clients. Development methodologies are part of the job.

9 Do you like Waze or Google Maps?
Agile ( Waterfall XP SCRUM KANBAN

10 It’s all fun and games until someone uses REGEX.
Complexity comes from modeling the real world in code in a manageable way. Complex algorithms are rarely needed. Business requirements are often mundane.

11 Let’s just rewrite it… Making WORKING code is easy
Making GOOD code is hard Aim for Readability and Maintainability Performance is rarely a concern

12 Principals of Software Development
An overview of the tools we use in Business Application Development

13 TDD Unit testing aids in bug finding and refactoring.
Writing tests first guarantees that code is tested and follows good design. This process normally follows the Red->Green->Refactor workflow.

14 It’s dangerous to go alone! Take this.
DRY SOLID Principals Design Patterns YAGNI Standards/Conventions Automated Testing/TDD Pair Programming

15 Single Responsibility Principal
Each class should do ONE thing and only ONE thing. Classes should be as small as possible. Then make them smaller.

16 SRP Example class Book class Book class Printer { { {
    string getTitle()…     string getAuthor()…     void printCurrentPage()… } class Book     string getTitle()...     string getAuthor()...     string getCurrentPage() {         return currentPage;     } } class Printer     void PrintPage(string page) {         Console.Print(page);     } }

17 Open-Closed Principal
Classes should be open for extension, but closed for modification. If you add functionality, you should be able to add code, not change existing code.

18 OCP Example class Sql { public Sql(string table)… public void Create()… public void Update()… interface ISql { public Sql(string table)… public void Run()… class SqlCreate : Sql class SqlDelete : Sql

19 Liskov Substitution Principal
Derived types and base types should be compatible. Derived classes should EXTEND base classes, not change them.

20 LSP Example class Square extends Rectangle {
public void setWidth(int width) m_width = width; m_height = width; } public void setHeight(int height) m_width = height; m_height = height; class Rectangle { public int getWidth()… public void setWidth(int width)… public int getHeight()… public void setHeight(int height)… public int getArea()… }

21 LSP Example continued…
public void SetRectangle(Rectangle shape, int width, int height) { shape.setWidth(width); shape.setHeight(height); } // What happens if we pass this function a Square object?

22 Interface Segregation Principal
Interfaces should not be “fat”. If you implement an interface, it should mean that you need the whole thing.

23 ISP Example interface IWorkable { public void Work(); }
interface IWorker { public void Work(); public void Eat(); } class Worker : IWorker class Robot : IWorker interface IWorkable { public void Work(); } interface IFeedable() public void Eat(); class Robot : IWorkable

24 Dependency Inversion Principal
Higher level classes should depend on lower level classes. Classes should depend on abstractions, not concretions.

25 DIP Example interface IPrinter { void PrintPage(); }
class ConsolePrinter : IPrinter     void PrintPage(string page) {         Console.Print(page);     } } class TreeBurner: IPrinter         HPPrinter.Print(page); class BookPrinter     void PrintBook(Book book, IPrinter printer) {         var page = book. getCurrentPage() while(page != null) printer.PrintPage(page); page = book. getCurrentPage() }     }

26 Design Patterns http://www.dofactory.com/net/design-patterns
Patterns provide solutions for common situations that follow best practices. Patterns are easily recognizable by other developers.

27 Josh Rizzo Senior Consultant Improving Enterprises


Download ppt "Software Development An overview of careers in Business Application Development http://goo.gl/3go6re Sources: Dice.com, money.CNN.com, InfoWorld.com, money.USNews.com,"

Similar presentations


Ads by Google