Chapter 17. General Guidelines
This chapter introduces the most important software engineering skills you’ll need when writing Shiny apps: code organization, testing, dependency management, source code control, continuous integration, and code reviews. These skills are not specific to Shiny apps, but you’ll need to learn a bit about all of them if you want to write complex apps that get easier to maintain over time, not harder.
Improving your software engineering skills is a lifelong journey. Expect to have frustrations as you start learning them, but understand that everyone experiences the same issues, and if you persevere you’ll get past them. Most people go through the same evolution when learning a new technique: “I don’t understand it and have to look it up every time I use it” to “I vaguely understand it but still read the documentation a lot” to eventually “I understand it and can use it fluidly.” It takes time and practice to get to the final stage.
I recommend setting aside some time each week to practice your software development skills. During this time, try to avoid touching the behavior or appearance of your app and instead focus your efforts on making the app easier to understand and develop. This will make your app easier to change in the future, and as you improve your software development skills, your first attempt at an app will also become higher quality.
(Thanks to my colleague Jeff Allen for contributing the bulk of this chapter.)