410 likes | 547 Views
Software Engineer’s Role in the Company. Managing Production and Support Services. Margarita Antonova. Volunteer Trainer @ Telerik Academy. academy.telerik.com. Business System Analyst. Telerik Corporation. IT. Developers. Business. Product. Table of Contents.
E N D
Software Engineer’s Role in the Company Managing Production and Support Services Margarita Antonova Volunteer Trainer @ Telerik Academy academy.telerik.com Business System Analyst Telerik Corporation IT Developers Business Product
Table of Contents • Organizing Software Production • Waterfall • Agile • Workshop 1: Process Management • Capacity & Overhead • Cost-Benefit Analysis • Time-Value Challenges • Workshop 2: Cost-Benefit Analysis of Product Ideas
Organizing Software Production Approaches and techniques for efficient development of software products
Organizing Development • Requirements – do we know what we need to produce? • Design – do we know how we want it to look like? • Is an interface necessary • User Experience • Development – do we understand what it needs to do? • Can we develop it? – Technology Acquaintance • How long will it take us? • Quality Assurance – is it actually usable? • Feedback – circle back to requirements
Organizing Development • Who works on developing a software? • Back-end developers • Front-end developers • Database developers • Designers and UX experts • QAs and Testers • Business Analysts • Project Managers • Production Managers
Organizing Development Waterfall vs. Agile
Waterfall Model • History – Winston W. Royce, 1970 • Definition: • Sequential design processwhere progress is seen as flowing steadily downwards one by one through the phases • Consists of phases, each phase has to be complete before the next one begins
Waterfall Model • Phases: • Conception • Initiation • Analysis • Design • Production • Testing • Implementation • Training • Maintenance
Waterfall Model • Pros – Big Design Upfront • Complete requirements • Cheaper to fix issues in the design stage • Documentation – no loss of knowledge • Allows easier employee turnover • Simple and linear • Good for stable projects
Waterfall Model • Cons: • Requirements may not be complete or clear • Expensive to fix design or requirements issues in the Production or later stages • Disconnected design and implementation • Unrealistic expectation that one phase can be fully complete before the other • Lack of transparency for client
Waterfall Model Example: ERP System development and implementation
Agile Methods • JIT and TaiichiOnho of Toyota
Agile Methods • JIT and TaiichiOnho of Toyota • Just-in Time lean principles – increase return on investment by decreasing in-process costs
Agile Methods • Some JIT benefits: • Employees with multiple skills are used more efficiently. • Increased emphasis on supplier relationships. • Supplies come in at regular intervals throughout the production day. • The flow of goods from warehouse to shelves improves.
Agile Methods • Agile Software Development: • Allows change in requirements • Promotes collaboration and cross-functional teams • Encourage rapid and flexible response to change • Development in increments • History – around since the 1950s, picked up speed in the mid 1990s • Methods – Kanban and Scrum
Agile Methods – Kanban • JIT and the Kanban cards • Kanban method definition: • A process management method following the agile incremental doctrine • Main feature – the Kanban signboard
Agile Methods – Kanban • Kanban Practices • Visualize • Limit WIP – pull system • Manage flow – measure & evaluate effects • Transparency – make policies clear • Feedback portals • Evolve through experimentation – continuous, incremental and evolutionary changes
Agile Methods – Kanban • Pros: • Simple and easy to understand • Flexible – sticky on, sticky off • Easy to follow – small tasks that are always visible • Less planning • Less friction among stakeholders
Agile Methods – Kanban • Cons: • Very fluid => risk for lack of discipline • Little emphasis on estimation • Hard to point delivery dates • Hard to measure pace
Agile Methods – Kanban Example: Working on multitude of tasks with equally high priority
Agile Methods – Scrum • Definition – an incremental software development framework for complex problems
Agile Methods – Scrum • Key concepts • Scrum Master & Product Owner • Self-organizing, cross-functional development team • Sprint increments produce a shippable product • Product backlog
Agile Methods – Scrum • Pros: • Transparency – Scrums and Reviews • Flexibility in adapting to changing or evolving requirements • Emphasis on value • Allows for easier estimations • Promotes measuring development pace - velocity
Agile Methods – Scrum • Cons: • Difficult to implement and maintain especially in teams that don’t know each other well or that work on a product from scratch • Blurred roles can cause friction in the team • A lot of overhead for planning, reviewing and retrospectives • Due to not finalized requirements, sprint work can be easily disrupted
Agile Methods – Scrum Example: Improving and updating an existing product
Role play in your teams Project: Website to sell shoes Players: Client, Developer, Designer, Project Manager Issue: Shoes are in stock Workshop 1: Process Management
Software Capacity & Overhead Challenges in applying our limited resources to a vast array of potential porducts
What Is Software Capacity? • Capacity – maximum possible output • Overhead - the ongoing operating costs of running a business • Capacity and overhead in the software business • Capacity includes the unclear tasks – bugs, code refactoring and maintenance, etc. • Cost relates greatly to time
Time vs. Value Do we code fast or do we code well?
Opportunity Cost • Definition • There is a choice to be made between mutually exclusive alternatives • Opportunity cost = value of the most profitable or lucrative alternative not chosen • Examples • You have 2 weeks and 2 developers: SEO vs. Processing purchases
Cost-Benefit Analysis • Definition - process for calculating and comparing benefits and costs • Justify investment • Provide basis for comparison • When is it applied? • Software industry examples: • Producing Product A vs. Product B. • Producing fast vs. well • Shipping cycle vs. Maintenance
Cost-Benefit Analysis Time + Effort + Maintainability vs. Profitability Maintainability = future time + effort Profitability = now and in the future
Cost-Benefit Results • Supporting Production • Service Packs & Updates • Support Department • Cost-Benefit Analysis of having it • Challenges
Organizational Challenges • Outsourcing • Geography • Language and culture
Software CompanyTypical Structure http://academy.telerik.com/student-courses/...
Workshop 2:Start Analyzing Consider the Pros and Cons of having Support for your products
Homework Assignment • Identify Software product or services ideas • Apply Cost-Benefit Analysis principles on each • Rank ideas based on the analysis results
Free Trainings @ Telerik Academy • Business Skills for Developers @ Telerik Academy • http://academy.telerik.com/student-courses/soft-skills-and-business-skills/business-skills-for-developers/about • Telerik Software Academy • academy.telerik.com • Telerik Academy @ Facebook • facebook.com/TelerikAcademy • Telerik Software Academy Forums • forums.academy.telerik.com