If you want to be a successul SWE:
Do remember that this might be outdated because I watched old lectures from MIT(if im not mistaken).
You need to have:
- Always improving characteristics
- Passionate about tech
- Technically open-minded
- Data-driven
- WORK AS A PART OF A TEAM
Guide to learning a new framework/programming language:
3-stage plan:
- Learn the language (Refer to 8-step plan)
- Understand application architecture implied by the framework
- Understand mapping betweeen languages features & frameworks abstractions
8-step plan (in learning a programming language):
Look and learn for these in a programming language:
- Types & typing
- Primitive types/ops, control flow and strings
- Methods (func, proc or whatever the PL use)
- Abstraction & encapsulation
- Idioms (pattern)
- Libraries & dependency management
- Debugging
- Testing facilities
How to learn from the internet:
- Google nouns and verbs to see example of what idiomatic
- Vet answer
- Read documentation
- Do not copy paste code you dont understand (especially AI code).
- Use byebug/debugger
1st Development Process
- Requirement analysis & specification
- Architectural design
- Implementation & Integration
- Verification
- Operation & maintenance
Make sure to complete one phase before the next
After 1DP,
2 Choices here:
- Plan-and-document
- Before coding, project manager makes plan
- Write detailed documentation for all phases or plan
- Progress should be measured against the plan
- Changes to project must be reflected in documentation and possibly to plan
- Downside is, PROJECT MANAGER MUST KNOW WHAT THEY ARE DOING
- Agile manifesto
- Individuals and interactions over processes
- Working software is more important than documentation
- Customer collaboration is more important than contract nego
- Responding to change is more important than following a plan
- Basically adapting to change
- Idk what is the dowside in the meantime.
- Test-driven Development (TDD)
- Write down user stories
- Velocity metrics to measure progress
- Agile metrics