Improve development skill * Use modern practice * Build quality products
ESD is aimed at software developers who need to raise their technical game in order to build robust scalable products in today's modern enterprise environments. ESD focuses on agility in software engineering. Today's software developers are often building products with tools that are more complex than the products that they are building. The concepts of agility in practice are tool agnostic but, learning the concepts is not.
Visual Studio 2010 is a modern engineering tool that supports the agility in thinking a modern software developer needs to master. ESD helps the engineer master agility in engineering in a tool specific way so that they can build to a tool agnostic understanding.
The ESD is part of our Certified Scrum Developer (CSD) course program which requires a 3x2 delivery format. With 3 days of core technical agile training and 2 days of core Scrum process training. Combined these form a critical grounding for the CSD program. The following description is for the 3 day technical format.
Audience
This course is suited for people who have experience being on software development teams. Individuals from all levels of the corporate structure who deal with rapidly changing demands and complex efforts. For example, if you are a software developer, architect, technical system analyst, technical QA, tester, programmers, DBA, or writing large amounts of script or code in any language.
This course is focused strongly on good practices for modern software development. The lessons in this course are delivered in a tool specific manner using Visual Studio and Team System 2010. A tool specific format is necessary so that participants can connect theory with doing. So while the theory is tool agnostic the learning is not.
Course Delivery Pattern
The full CSD program is delivered in a 2x3 day format. The first 2 days focus on the Scrum Framework and using that Framework. This part of the course is suitable for anyone on or interacting with a Scrum Team. The second 3 days of the course is for the team members and is targeted around writing and supporting software developers. Both parts are necessary to achieve the designation of CSD. However in either case first part does open up the pathway to certified Scrum Professional (CSP). Successful, completion of ESD course + completion of our Certified Scrum Master course qualifies candidates to become a Certified Scrum Developer (CSD) designation as recognized by the Scrum Alliance.
Why?
Modern software development is radically different from traditional software development. The procedural systems we built in the past are being replaced with business applications that demand more. The new business application needs are more complex and thus require better engineering skill. Building these modern business applications requires a team with deep skills in agile process, design patterns and development practices. These applications are often managed using an Application Lifecycle Management (ALM) Framework that uses Scrum Framework for building the Product. Applied Scrum requires a well formed team with Developers who know what to do.
Working on a modern software team requires a change in both how we build & how we work together. Scrum is a process that was born from the study of effective software development practice. While Scrum has proven itself to be amazingly applicable to other kinds of product development work it is still in demand and growing as an applied practice in software.
Organizations recognize the importance of their software development professionals but, what is often unrecognized is the intense interaction between teams and technology in building today's products. This Certified Scrum Developer course is designed to do address both the human& technical challenges of a software developer. This course is delivered in the context of a Scrum team that is working to build a modern software centric product focused by business value.
Agenda
The course is an intensive interactive session designed to leverage your experiences so that you can learn the engineering practices of a Scrum Developer in the context of what you know. We will be leveraging the diverse backgrounds of the attendees through facilitated discussion and simulation using Visual Studio and Team System 2010.
- Agile Analysis for Developers
- Understand Requirements
- Analysis Using Stories & User Stories
- Sizing work for Scrum Teams
- Finding Tasks in a Story
- Automated Refactoring
- Setting Resharper
- Interface for VS 2010
- Explore Simple Refactorings
- Keeping Tests Current
- Quality Code
- Cohesion
- Good Coupling
- Non-Redundant
- Readable, Understandable and Testable
- Scrum Developer Role
- Agile Analysis
- JIT Analysis
- Planning, Learning and Adjusting the Plan
- Quality is the Primary Goal
- Testing as Analysis and Working Code
- Agile Architecture
- Good Architecture
- Identify Concepts in Problem Domain
- Identify Variations in Concept
- Relationships between Concepts
- Continuous Integration (CI)
- Frequency of Build / Test Cycles
- CI in VSTS 2010
- Preventing Broken Builds
- Gated Check-ins
- Integrating Often
- Write new Code vs. New Features
- Difficulties of Integration
- Techniques for Easier Integration
- Regular Builds
- Refactoring
- What it is
- Code smells
- Dealing with Methods
- Refactoring Patterns
- Scrum Development Practice
- Write Unit Tests
- Extend System with TDD
- Refactoring with Unit Tests
- Start new a New Project
- Setup Build
- Solution
- Test Project
- Code Project
- CI
- Scrum Teamwork
- Understand the problem
- Focus Effort
- Deliver better code
- Increase speed of delivery
- Design
- Design Patterns & Emergent Design
- Component Fit
- Adding New Functionality
- Good design and MVC
- Linking Patterns
- Test Driven Development
- Red
- Green
- Refactor
- Small steps
- Test First
- Product Challenges
- Developer Challenges
- Thinking before doing
- The Test is the output of the TDD step
- Writing Tests in C#
- What to test?
- The Test Fixture
- Assert Methods
- The Cleanup
Learning Objectives
- How a .Net Developer writes code that is correct and delivers the required business value using Visual Studio and Team System 2010
- Understand a Scrum Software Developer role on a Scrum Team
- Use Agile Analysis to find ways that quickly and accurately break down requirements
- Write high Quality Code and be able to evaluate the code quality
- Work collaboratively and efficiently in a Scrum like manner
- What is Agile Architecture and how it is used to create software components that are maintainable and efficient
- Use a Common Language for discussing application design with other developers
- Recognize Test First in the form of well written stories that are clear, easily understood and have sharp definitions of done
- How to Write effective Unit Tests using C#
- Apply Test Driven Development as small tests then write the code to pass the tests and clean up the code
- Refactor to clean up code so that the new code is flexible and easy to understand
- Automate Refactoring to lower the cost of change and increase the amount of conceptual change we can make throughout the system
- Integrate Often to verify quickly that the new code works with existing and the existing system still works
- Use Continuous Integration to automate every increasing amounts of code so that we can support automated feedback in the form of unit test
- Release Early & Often to get feedback on the overall systems purpose, inform design and correct direction