Best Practices When Starting a New Angular Project
Picture the ideal new app development project
⏰ On-Time
💰 On-Budget
🐛 No Bugs
🥳 Happy stakeholders
⏰ ⏰ ⏰ Three quarters late
💰💰 Costs twice as much as planned
🐛🐛🐛🐛 All sorts of bugs in production
😡 Unhappy stakeholders
artist: Manu Cornet
What can I do to position my team for success?
Adopt an "investment" mindset
Embrace the "Angular Way"
💪 TypeScript
💻 Reactive Programming
🛠 CLI
🧪 Modern Testing
- Superset of JavaScript with strong types
- Catches bugs before your app runs
- Requires time upfront, saves you time and money later
TypeScript
- Go-to for reactive programming in JavaScript
- Streams with values that arrive over time
- A big paradigm shift but with many benefits
RxJS
- Generate your app and code for it from the command line
- Use pre-built and custom schematics to enforce code structure
- Saves a lot of time for boilerplate-type work
Angular CLI
- Use testing tools that allow you to move faster and require less setup/boilerplate
- Jest and Cypress make writing tests enjoyable
- Test your application as your user would use it, not as a computer would use it
Modern Testing
This seems like a lot to learn...
Don't accumulate tech debt before you even start
Investing in training before you get started will pay dividends
You Should Use a Monorepo
👨👩👧👦 Share code between apps
♻️ Keep team in sync with all changes to every app
👮♀️ Set and enforce code ownership and team boundaries
Why use a monorepo?
Nx has become the defacto for Angular monorepos
- Fast code generation (workspace, app, lib)
- Tests are set up and ready to go (unit, e2e)
- Enforce code boundaries
- Use TypeScript aliases
- Smart migrations
Write More Tests and Have Fun Doing It
Writing tests has historically been painful
Forget the boilerplate
Test your app the way your user would interact with it
With Cypress, test-driven development helps you move faster
How do I approach a migraton?
Why Migrate?
- AngularJS LTS ending June 30, 2021
- Ecosystem has evolved away
- You can't move as fast in AngularJS
- Developers don't like working with AngularJS
Hybrid
Big Bang
Hybrid Migrations
Run your existing app while transitioning to a new one at the same time
Upsides to Hybrid Migrations
👍
- Your app will become progressively faster for users
- You can have confidence that you've covered everything by the time you're done
- Developers can "ease into" TS, RxJS, CLI etc
Downsides to Hybrid Migrations
👎
-
Difficult to set up
- Old build system with new
-
Testing is difficult
- Running Protractor with newer testing tools does not work well
-
Bundle size
- Running both frameworks together can lead to large bundle sizes
Big Bang Migrations
Upsides to Big Bang Migrations
👍
- Clean slate, clean perspective
- Keep bundle sizes small
-
Find and kill old bugs
- TypeScript, testing
Downsides to Big Bang Migrations
👎
- Can be overwhelming
- Constantly need to check that you've migrated every feature and its behavior
- Need to maintain two separate apps and codebases for a while
Enablement
What can you do at the early stages to set up your team for success?
Set up some pillars
Monorepo
Modern Testing
Angular CLI
Modern Patterns
Get a base down as a reference point
Resources
Thanks!
Ryan Chenkie
@ryanchenkie
Slides: bit.ly/ng-new
Managers Workshop
By Ryan Chenkie
Managers Workshop
- 905