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:

  1. Learn the language (Refer to 8-step plan)
  2. Understand application architecture implied by the framework
  3. Understand mapping betweeen languages features & frameworks abstractions

8-step plan (in learning a programming language):

Look and learn for these in a programming language:

  1. Types & typing
  2. Primitive types/ops, control flow and strings
  3. Methods (func, proc or whatever the PL use)
  4. Abstraction & encapsulation
  5. Idioms (pattern)
  6. Libraries & dependency management
  7. Debugging
  8. Testing facilities

How to learn from the internet:

  1. Google nouns and verbs to see example of what idiomatic
  2. Vet answer
  3. Read documentation
  4. Do not copy paste code you dont understand (especially AI code).
  5. Use byebug/debugger

1st Development Process

  1. Requirement analysis & specification
  2. Architectural design
  3. Implementation & Integration
  4. Verification
  5. Operation & maintenance

Make sure to complete one phase before the next

After 1DP,

2 Choices here:

  1. Plan-and-document
    1. Before coding, project manager makes plan
    2. Write detailed documentation for all phases or plan
    3. Progress should be measured against the plan
    4. Changes to project must be reflected in documentation and possibly to plan
    5. Downside is, PROJECT MANAGER MUST KNOW WHAT THEY ARE DOING
  2. Agile manifesto
    1. Individuals and interactions over processes
    2. Working software is more important than documentation
    3. Customer collaboration is more important than contract nego
    4. Responding to change is more important than following a plan
    5. Basically adapting to change
    6. Idk what is the dowside in the meantime.
      1. Test-driven Development (TDD)
      2. Write down user stories
      3. Velocity metrics to measure progress
      4. Agile metrics