- Code changes are stored in git
- Setup continuous integration
- Have a testing framework
- Use dependency management
- Define a code standard
- Prefer function/method typing over dynamic types
- On every push to git
- Code quality check
- Code style check
- Unit/functional/integration/system tests
- Code coverage should be recorded during tests and a report made available
- A project repository must have a README.md explaining how to run the project on your own computer
- A project repository must have a RELEASING.md explaining how to release the code
- Responsibilities are made explicit in terms of roles
- Critical roles, such as project lead, must have a backup/shadow individual
- Setup telemetry, alerts, profiling, logging
When joining a new project without tests, here is the value you need to provide through the addition of tests:
- the application works and doesn't crash
- the application works and supports a few input cases
- the application works and supports a variety of input cases
- the application works and is robust to most input cases
- Write a test that tests the common case usage of your function
- Write tests that cover edge cases of your function
- Write tests to cover all statements, branches, paths
It's highly common when working that priorities shift and that sometimes you have way more on your plate than you can handle.
No need to panic!
- Ignore your task list
- Use your brain and create a fresh list of what you think is the most important
- Prioritize using the importance/urgency matrix
- Have a question
- Ask LLMs
- Identify the field that would best answer this question
- Search online
- Search for articles and books on the topic
- Determine the likelihood that this field has already been researched
- Read the table of contents
- Rapidly skim through the various sections of the book
- Determine what you want to get out of the book
- Ask yourself questions about what you briefly read