Getting Started with Software Development for Cisco DevNet LEARNING THE FOUNDATIONS OF SOFTWARE DESIGN Nick Russo NETWORK ENGINEER @nickrusso42518 www.njrusmc.net
Should I be here? Agenda Core skills: Bash Basic software design skills Python workspace setup tips Building a simple web app
Basic Skills You Should Have Ability to Basic Python Real-life IT comprehend programming experience unfamiliar code
Pluralsight has deep-dive courses on almost every topic here!
Your Role at Globomantics
Demo First things first: the Bash shell
Waterfall Development Strategy Get requirements Design Implement Test Deliver Time
Waterfall Advantages and Disadvantages Advantages Disadvantages Works well when requirements Cannot adapt to change don't change Hard to "go back and fix" Clearly defined stages Testing only at the end Easy to manage
Agile Development Strategy - Scrum Sprint Sprint Reqts Reqts Design Design Implement Implement Test next sprint Test Delivery Delivery Time
Agile Advantages and Disadvantages Advantages Disadvantages Delivers software (value) faster Requires customer interaction Fosters teamwork and skill sharing Not many docs; people dependency Little planning required Requires a competent team leader
Lean Development Strategy – Kanban Backlog In Process (max = 2) Completed Bug 2 Bug 1 New feature 1 New feature 2 New feature 4 Bug 3 New feature 3 New feature 2
Lean Advantages and Disadvantages Advantages Disadvantages Minimal batch size Requires discipline Task-oriented; no roles Need sensible WIP limits Fastest delivery Encourages recklessness
Pillars of Good Coding Functional Usage of design Error checking decomposition patterns
Design Pattern A generic and reusable solution that solves a recurring problem in software development. It is a blueprint for a strong code project and often satisfies specific project requirements.
Detour: Object-oriented Programming (OOP) class Customer cust_a = new Customer() string name cust_a.name = "John" integer balance cust_a.balance = 14 method print_stats() cust_a.print_stats() class instantiates object
Making Life Easier with pip and virtualenv pip: Python package manager virtualenv: create separation between Python projects pypi.org
Demo Getting set up for CRM prototyping
The Observer Design Pattern Subjects Observers (Publishers) (Subscribers) subject.register(observer) method update(): subject.unregister(observer) do green actions method notify(): method update(): for each observer: do blue actions observer.update()
Demo Observer pattern: balances are past due!
The Model View Controller (MVC) Pattern model.read() view.display() model.write() view.get() Model Controller View (Model) (View) (Template)
Demo An MVC-based CRM app using Flask
Software Basics in Review Keep your Bash Software is more MVC skills fresh! than just coding implementation
Recommend
More recommend