It’s been nearly twenty years since the creation of the Java Pet Store, and you should still be writing great sample apps. Why? Developers love them. Come learn from my mistakes and successes, and walk away ready to convince your boss that a sample app should be at the top of your priority list.
20. Step 1: Identify project goals
@Lauren_Schaefer 20
1. Be an authoritative example of how to customize the
product the best way.
2. Be an example of how to follow DevOps best practices
while customizing our product.
3. Be an example that our engineers can use to test they
aren’t breaking common customizations.
22. Step 3: Identify the requirements for the MVP
@Lauren_Schaefer 22
23. Step 3: Identify the requirements for the MVP
@Lauren_Schaefer 23
24. Step 3: Identify the requirements for the MVP
● Basic customizations for the scenario
○ Custom modules, fields, and layouts
● Basic test automation using PHPUnit and Jasmine
● DevOps pipeline using Travis CI
● Tests integrated into the product’s build process
● Documentation in GitHub
@Lauren_Schaefer 24
33. Step 6: Engage your engineers and developer
community for help
@Lauren_Schaefer 33
34. Step 6: Engage your engineers and developer
community for help
@Lauren_Schaefer 34
35. Step 6: Engage your engineers and developer
community for help
@Lauren_Schaefer 35
36. Step 6: Engage your engineers and developer
community for help
@Lauren_Schaefer 36
37. Step 7: Measure success
● 4 features implemented
● Automated tests with PHPUnit, Jasmine, & Postman
● CI with Travis and Jenkins
@Lauren_Schaefer 37
38. Step 7: Measure success
1 bug found in the product
@Lauren_Schaefer 38
41. Step 1: Identify project goals
@Lauren_Schaefer 41
1. Be an authoritative example of how to…
2. Be an example of how to follow DevOps best practices
while…
3. Be an example that our engineers can use to test they
aren’t breaking common…
45. Step 5: Continue building incrementally
@Lauren_Schaefer 45
● Identify roles including product owner
● Build a full feature including test automation
● Build infrastructure as necessary
46. Step 6: Engage your engineers and developer
community for help
@Lauren_Schaefer 46
● Get manager buy-in
● Encourage external participation at all levels
47. Step 7: Measure success
● Identify what metrics matter to your stakeholders
● Build metrics infrastructure if necessary
● Gather informal feedback as well
@Lauren_Schaefer 47
51. Failing to engage your developer community
@Lauren_Schaefer 51
● Slow PR response times
● Unclear requirements
● Uninteresting problems
● No incentives
53. Why build a sample
app instead of
separate sample
code snippets?
@Lauren_Schaefer 53
● Solves bigger problems
● Shows how to build a
complete solution
● Demonstrates best
practices related to
development and tooling
● Provides a testing
resource for your
product
54. How do you
successfully build
an awesome sample
app that actually
provides value?
@Lauren_Schaefer 54
1. Identify project goals
2. Create the scenario
3. Identify the
requirements for the
MVP
4. Implement the MVP
5. Continue building
incrementally in a
transparent way
6. Engage your engineers
and developer community
for help
7. Measure success
For new features…
Build the full stack of the feature plus tests and documentation
Build publicly so people can see progress of the project and learn from the code reviews
Added support for Jenkins
Added support for Postman tests
Led to us discovering a bug when using our product on different databases
Be an authoritative example of how to customize the product the best way.
Be an authoritative example of how to utilize your APIs.
Be an authoritative example of how to utilize your software tools.
What is a common use case for your developer community? Can the scenario you selected incorporate most of the features you want to include in your sample?
Infrastructure - do you need to setup Continuous Integration to build your app? Do you need to add your app to your engineering team’s CI?
Identify tools your developer community should be using. You may want to cover duplicate tools.
Get code reviews from your engineering team.
Be transparent in your development.
Added support for Jenkins
This one is hard. First, you have to look at your goals. Do you measure pull requests, forks, stars on your repo? Do you run surveys? If you don’t measure your success, will you be able to continue work on your sample app?
Developers don’t care. They don’t care about the success of your sample app. They want to develop new features, not spend time working on your sample app. Unless they are given space to work on it by their managers and their performance reviews are tied to it, they probably aren’t going to help you. You’ll need developers to help review pull requests as well as develop new features.