- Team Roles ● Project management ● Coding ● Testing ● Coordinating
- API
- An API is stateful if the output of a request can depend on knowledge established between the client and server in previous interactions
- blob = Binary Large OBject (aka usually not text)
- Terminal
tree prints the tree structure of the current directory
- Use
less filename to get a scrollable view of filename
command1 || command2 runs command2 only if command1 failed
- When redirecting output, Replacing
> with >> results in the output being appended to the file instead of overwriting
- To kill all processes created by a specific program, run
killall program_name
- Subshells
$(commands) runs commands in a “subshellˮ and the resulting value contains the contents of both stdout and stderr generated by commands
- A subshell has access to all the variables of the parent, but any new changes it makes wonʼt affect the parent
- Testing
- Test Driven Development. Write tests before code.
- layered testing strategies
- testing for large projects
- Core functionality is safeguarded with ● unit tests ● integration tests
- Stability is ensured with ● regression tests ● performance tests ● compatibility tests
- Real-world scenarios are validated through ● acceptance tests ● usability tests ● exploratory testing
- testing for small projects
- Unit
- Create a table of “behaviors - input - output”
- Integration
- Ensures that different parts of the system work together correctly.
- Functional
- Focus on core user flows such as login, registration.
- Regression
- Ensure that new changes don't break existing functionality.
- Exploratory
- Uncover issues by manually simulating real-world use cases.
- Workload estimate
- PERT (Program Evaluation Review Technique): Te =(O+4M+P )/6 Where: ● O is the Optimistic time (the best-case scenario). ● M is the Most likely time (the most probable duration). ● P is the Pessimistic time (the worst-case scenario)
- Agile: iteration, flexibility, and delivering value
- Four Core Values (-2001)
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
- Scrum
- Extreme Programming (XP)
- Pair programming
- Test-Driven Development (TDD)
- Kanban