Managing the Chaos

An agile approach to being a startup

Chuck Liddell, KapuHonu/Valence

Topics

  • Agile Methodology
  • Collaboration / Communication
  • Change Management
  • Testing
  • CRM
  • Decisions / Prioritization

Fist of Five

Agile Methodology

The Agile Manifesto

  • Individuals and interactions over processes and tools
  • Working software over comprehensive documentation
  • Customer collaboration over contract negotiation
  • Responding to change over following a plan

While there is value in the items on the right, we value the items on the left more.

Waterfall Model

Agile Model

What is a User Story?

A user story is an informal, general explanation of a software feature written from the perspective of the end user. Its purpose is to articulate how a software feature will provide value to the customer.

Source: Atlassian

Example User Story

As a manager, I want to be able to understand my colleagues progress, so I can better report our sucess and failures.

Kanban Board

Scrum Board

Scrum Team

Source: http://scrumtrainingseries.com/Intro_to_Scrum/Intro_to_Scrum.htm

Scrum Meetings

Collaboration & Communication

Comms - Easy wins

Goal: Give everyone a voice, without creating a cacophonous mess

  • Get discussions where they belong
  • Stop sending  
  • Get customers and stakeholders into the conversation

Google Calendar (GCal Link)

Slack (Slack Link)

Atlassian JIRA (Jira Link)

Atlassian Confluence (Wiki Link)

Change Management

  • What has changed?
  • Why did it change?
  • What is going to change?
  • Why is it going to change?
  • Who needs to know about it?

An Example

Git (Git Link)

Github (Github Link)

Testing

See: http://martinfowler.com/bliki/TechnicalDebt.html

Tests, tests, tests...

Approaches Types
  • GUI testing
  • API testing
  • Privileged testing
  • Regression testing
  • Unit testing
  • Integration testing
  • End-to-end testing
Test-driven development
Continuous testing / integration / deployment

Testing will set you free...


/*
 * Test pagination stuff.
 */
System.assertEquals(1, laController.getCurrentPageNumber()); // expect to start at first page
System.assertEquals(4, laController.getLastPageNumber()); // expect four pages
System.assertEquals(false, laController.getHasPrev()); // no pages before this page
System.assertEquals(true, laController.getHasNext()); // yes pages after this one
laController.gotoLast();
System.assertEquals(4, laController.getCurrentPageNumber()); // expect to be at 4th page
System.assertEquals(false, laController.getHasNext()); // no pages after this page
System.assertEquals(true, laController.getHasPrev()); // yes pages before this page
laController.gotoPrev();
System.assertEquals(3, laController.getCurrentPageNumber()); // expect to be at 3rd page
System.assertEquals(true, laController.getHasNext()); // yes pages after this page
System.assertEquals(true, laController.getHasPrev()); // yes pages before this page
						

CRM

CRM: What is it?

Customer relationship management (CRM) is an approach to managing a company's interaction with current and future customers. It often involves using technology to organize, automate, and synchronize sales, marketing, customer service, and technical support.

Decisions/Prioritization

Prioritization

The Last Responsible Moment

Concurrent software development means starting development when only partial requirements are known and developing in short iterations that provide the feedback that causes the system to emerge. Concurrent development makes it possible to delay commitment until the last responsible moment, that is, the moment at which failing to make a decision eliminates an important alternative.

Two Roles

  1. Create Value
  2. Sell Value

Tips/Advice

Find partners, but be picky.

Trust your gut. Believe in your team.

Keep it simple.

Be hungry for knowledge.

Focus! Protect your time.

Wrap Up / Discussion

Useful Links