Software Development as a Craft



Software Development as a Craft

1 2


software-development-as-a-craft

Presentation delivered to UBC CPEN 321

On Github jpoon / software-development-as-a-craft

Software Development as a Craft

Jason PoonSoftware Developer, Microsoft

Hi, I'm a

software developer

Programmer vs Developer

  • Software development is a craft.
  • Programming is only one aspect of software development.
  • Knowing how to program is not the same as being able to develop high quality software.
It's like woodworking. You can START by growing a tree, then chopping it down and finishing it, sanding it, before you make a table. Or you can go to Ikea. More likely you'll try something in between. Modifying a WordPress theme is going to Ikea. Writing you own web framework is growing a tree first because you don't like the existing trees. You have to decide where on the spectrum you want to be, from being a custom furniture maker from the Woodright's Shop or someone who assembles prefabricated pieces made by someone else.

Software Development Process

work closely with the customer to discover what is required design a software architecture that balances simplicity, scalability, performance, and reliability implement writing quality code unit tests, component tests, integration tests, etc.

Software Development Process

Software Development Process

Traditional Waterfall model Requirements known up front

Software Development Process

agile development involves breaking things up into smaller bite sized chuncks

Learning the Craft

  • learn the fundamentals
    • data structures
    • algorithms
  • apprenticeship
    • code reviews
    • extreme programming
    • mentorship
best way to learn it is to sit down with someone who knows how to do it and learn it from them

Lessons I've Learned

Shipping Services

Shrink-Wrapped Software

Examples:

  • Windows 10
  • Office 365
  • DropBox
  • Google Docs

What does this mean as a developer?

  • Don't be afraid of shipping
  • Always shipping
  • Impossible to be 100% bug-free
  • Everyone is accountable

Lessons I've learned

Things will Fail

Lots of stuff can go wrong

  • Reddit effect
  • misconfigured machines
  • bad configurations
  • hard drive failure
  • ...etc

Dealing with Failure

  • Failover
  • Defensive Programming
    switch (Orientation)
    {
        case Orientation.Horizontal:
            break;
    
        case Orientation.Vertical:
            break;
    
        default:
            throw new NotSupportedException();
    }
        						
  • Fail fast, fail hard
  • KISS

Tools of the Craft

IDE

  • Visual Studio
  • Visual Studio Code
  • Xcode
  • Eclipse
  • NetBeans
  • Sublime

Team Tools

  • Visual Studio Online
  • GitHub
  • Slack

Cloud Hosting

  • Microsoft Azure
  • Amazon Web Services
  • Google Cloud
  • Heroku

Hardware

  • Raspberry Pi
  • Arduino
  • Particle Photon
  • Windows IoT

App Dev

  • Cordova
  • React Native
  • Xamarin

Web Dev

  • Postman
  • Fiddler
  • NodeJS
  • JS Frameworks

Tools of the Craft

IDE

  • Visual Studio
  • Visual Studio Code
  • Xcode
  • Eclipse
  • NetBeans
  • Sublime

Team Tools

  • Visual Studio Online
  • GitHub
  • Slack

Cloud Hosting

  • Microsoft Azure
  • Amazon Web Services
  • Google Cloud
  • Heroku

Hardware

  • Raspberry Pi
  • Arduino
  • Particle Photon
  • Windows IoT

App Dev

  • Cordova
  • React Native
  • Xamarin

Web Dev

  • Postman
  • Fiddler
  • NodeJS
  • JS Frameworks
Dreamspark

Tools of the Craft

IDE

  • Visual Studio
  • Visual Studio Code
  • Xcode
  • Eclipse
  • NetBeans
  • Sublime

Team Tools

  • Visual Studio Online
  • GitHub
  • Slack

Cloud Hosting

  • Microsoft Azure
  • Amazon Web Services
  • Google Cloud
  • Heroku

Hardware

  • Raspberry Pi
  • Arduino
  • Particle Photon
  • Windows IoT

App Dev

  • Cordova
  • React Native
  • Xamarin

Web Dev

  • Postman
  • Fiddler
  • NodeJS
  • JS Frameworks
Free

Applying your Craft

  • Continue Schooling

  • Work for Someone

  • Work for Yourself

Stop by and say hello tomorrow (Oct. 1) at theCareer Fair or Oct. 6, 7pm @ Dempster 310 for Meet Microsoft Presentation.

Jason Poon

Software Development as a Craft Jason Poon Software Developer, Microsoft