770 likes | 1.15k Views
Software Company Structure & Developer Role. Departments, Occupations and Stakeholders. Margarita Antonova. Volunteer Trainer @ Telerik Academy. academy.telerik.com. Project Manager. Telerik Corporation. IT. Developers. Business. Product. Table of Contents. Last week’s HW
E N D
Software CompanyStructure & Developer Role Departments, Occupations and Stakeholders Margarita Antonova Volunteer Trainer @ Telerik Academy academy.telerik.com Project Manager Telerik Corporation IT Developers Business Product
Table of Contents • Last week’s HW • Company Structure • CorporationsDepartments • Stakeholders • Organizing Software Production • Capacity & Overhead • No HW
Workshop Your Company, Your Dream Team • Wanna do this? – sign up until Friday, May 30th @ noon • In-class - http://telerikacademy.com/Courses/Teamwork/Decide/34 • Online - http://telerikacademy.com/Courses/Teamwork/Decide/35
Homework Assignment • Collect ideas for your product
Who do we code for? • What do we code for? Review
HW from last time • A few sentences answering: • What do they sell? • How do they make it? • Who do they sell to? • Where do they sell? • How do they sell? Answer the business questions for a startup of your liking. Deadline – next lecture: discuss in class • Are they profitable? • Are they sustainable?
Vertical vs. Horizontal Company Structure Advantages and Disadvantages
Horizontal Structure • Advantages: • flexibility for limited resources & cross-functional cooperation • responsibility and decision-making powers lead to employee satisfaction • allows for easy product/project orientation • Disadvantages • many leaders, little authority • risk to productivity and efficiency
Vertical Structure • Advantages: • close monitoring and control of the processes • concentrated authority and clearly defined functions increase efficiency • clearly defined career ladder to motivate employees • Disadvantages • can hinder communication and flexibility • weak leadership is felt – Peter Principle • someone has to be at the bottom
Corporate Departments Specification of labor within the corporation IT Developers Business Product
Why Know This? • Coding and selling • Know what people’s jobs entail • Know their professional pains and problems • Provide solutions • Take their money • Coding for internal department • Know what people’s jobs entail • Know their professional pains and problems • Provide solutions • Help our company make money
Management and Board • Private vs. Public company • Stockholders & Shareholders & IPOs • Board of Directors • Management • CEO/GM • CTO • COO • CFO • CMO
Other Departments • Facilities Management • Dining Services • Social Events • Security
Who Are the Stakeholders? • Entities that affect or can be affected by the actions of a company: • Employees • Suppliers & Retailers • Clients • Creditors • Unions • The Community • Stakeholders vs. Shareholders
Software CompanyTypical Structure http://academy.telerik.com/student-courses/...
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? • The Experts
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 • 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
Agile Methods – Kanban • Kanban method principles: • Visualize – the Kanban signboard • Limit Work In Process – 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 • No deadlines
Agile Methods – Kanban • Cons: • Very fluid => risk for lack of discipline • Little emphasis on estimation • Hard to point delivery dates • Hard to measure pace • No deadlines
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
Software Capacity & Overhead Challenges in applying our limited resources to a vast array of potential products
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