updating modes and structures

This commit is contained in:
2026-04-02 11:27:11 +01:00
parent 9d0c74547f
commit a5983242f9
258 changed files with 1424 additions and 95 deletions

0
Career Concepts/20250722221649-career_moc.org Normal file → Executable file
View File

0
Career Concepts/20250723200800-postgres.org Normal file → Executable file
View File

0
Career Concepts/20250727122406-database_moc.org Normal file → Executable file
View File

0
Career Concepts/20250804201706-big_o_complexity.org Normal file → Executable file
View File

View File

0
Career Concepts/20251229180039-airflow.org Normal file → Executable file
View File

0
Career Concepts/20251229180156-airflow_tasks.org Normal file → Executable file
View File

0
Career Concepts/20251229180249-airflow_dags.org Normal file → Executable file
View File

2
Career Concepts/20260101010049-concepts.org Normal file → Executable file
View File

@@ -25,6 +25,8 @@ Part of being a software engineer is having a good grasp of mathematical concept
- [[id:5b714c6c-7eaf-4f3f-b4f6-2166ff3a9963][CI/CD Summary]]
- [[id:67ad330b-cc11-4e8e-b054-12b9da45ea60][Software Development Methodologies]]
Some core programming concepts that are essential for software development. The things I need to add here are:
* APIs

0
Career Concepts/20260101011126-xor.org Normal file → Executable file
View File

0
Career Concepts/20260101012549-solid_principles.org Normal file → Executable file
View File

View File

@@ -1,5 +1,6 @@
:PROPERTIES:
:ID: F3875F0F-5C9E-4BB1-A79C-6000B9558115
:END:
#+title: solid_principles_examples
#+title: Solid Principles Examples
#+filetags: :notes:technical:career:

0
Career Concepts/20260115152626-apim.org Normal file → Executable file
View File

2
Career Concepts/20260121173318-api_architecture.org Normal file → Executable file
View File

@@ -2,7 +2,7 @@
:ID: 49b195c8-e116-40ca-86e8-62c65dbb5a4f
:END:
#+title: API Architecture
#+filetags: :notes:concepts:api:
#+filetags: :technical:notes:api:
#+category: Career Concepts
*Z notes on API architecture - companion to [[id:56fabaf6-e8aa-45d0-a1c1-89f247f0a93f][APIM notes]]*

1
Career Concepts/20260305102210-cicd_example.org Normal file → Executable file
View File

@@ -2,6 +2,7 @@
:ID: 2767b5ac-f2c9-4b1e-ab87-82c43cdec4c1
:END:
#+title: CI/CD Example
#+filetags: :notes:career:technical:
#+category: Career Concepts
During the first wave in 2026, we planned to get the netcore version of site visits out to customers. There were a bunch of tasks relating to this, so I asked AI to conceptually explain them.

1
Career Concepts/20260305111610-cicd_summary.org Normal file → Executable file
View File

@@ -2,6 +2,7 @@
:ID: 5b714c6c-7eaf-4f3f-b4f6-2166ff3a9963
:END:
#+title: CI/CD Summary
#+filetags: :notes:technical:career:
#+category: Career Concepts
* Summary

View File

@@ -2,6 +2,7 @@
:ID: b4858f6a-b05c-47f2-972e-905e0bb2c352
:END:
#+title: Database Permissions, Roles, and Accounts
#+filetags: :notes:career:technical:database:
#+category: Career Concepts
* Introduction

1
Career Concepts/20260305132058-restful_api.org Normal file → Executable file
View File

@@ -2,6 +2,7 @@
:ID: 6a5bf6dd-d0ec-43e4-8e07-9956f4715f10
:END:
#+title: RESTful APIs
#+filetags: :notes:api:career:technical:
#+category: Career Concepts
* What is a RESTful API?

View File

@@ -0,0 +1,176 @@
:PROPERTIES:
:ID: e7f082e4-1b9f-4ebe-96d6-94d92e80a07e
:END:
#+title: API Intro Notes
#+filetags: :notes:api:career:technical:
**Notes from [[https://app.pluralsight.com/ilx/video-courses/apis-explained/course-overview][PluralSight]]**
* APIs Are Everywhere
- APIs power everyday digital experiences behind the scenes.
- They connect apps, data, and services seamlessly.
- Examples:
- Checking weather
- Banking apps
- Booking travel
- Sharing music
- APIs act as *connectors* between systems.
** Key Idea
APIs = invisible infrastructure enabling modern apps.
* Real-World API Examples
- Google Maps -> location, routing
- Stripe -> payments
- OpenWeather -> weather data
- Spotify -> music data & activity
** Insight
- APIs are often *products themselves*.
- They act as *building blocks* for faster development.
* What Is an API?
** Definition
API (Application Programming Interface):
- A way for systems to communicate
- Sends requests and receives responses
- Hides internal complexity
** Restaurant Analogy
- You -> Client
- Menu -> API documentation
- Waiter -> API
- Kitchen -> System/service
- Meal -> Response
** Core Components
- Request -> what is asked
- Response -> returned result
- Endpoint -> where request is sent
- Payload -> data sent with request
- Format -> structure (e.g., JSON, XML)
* Why APIs Matter
- Speed -> build faster using existing services
- Reuse -> avoid rebuilding functionality
- Focus -> teams specialize and connect via APIs
* Example: Travel App
- Flight API -> routes/prices
- Hotel API -> availability
- Weather API -> forecasts
- Payment API -> transactions
** Insight
Multiple APIs -> one seamless user experience.
* APIs in Modern Architecture
- Composability -> systems built from smaller parts
- Ecosystems -> partnerships & integrations
- AI -> APIs provide data + deliver outputs
* What APIs Are NOT
- Not just for engineers
- Not a database (they access data, don't store it)
- Not a UI (they work behind the scenes)
- Not always public (many are internal)
** Analogy
- App = stage
- API = backstage operations
* How APIs Work
** Process
1. Request sent to endpoint
2. System processes request
3. Response returned
** Data Handling
- Data is structured and standardized
- Travels in small packets
- Uses agreed formats
** Impact
- Automation of tasks
- Cross-device consistency
- Scalability
* APIs Inside a Business
- Internal APIs connect teams and systems
- Enable modular architecture
** Benefits
- Faster development
- Single source of truth
- Scalability
- Team independence
** Example
Travel app:
- Flights, Hotels, Cars, Payments -> separate services
- APIs unify them into one experience
* API as a Product
** Concept
- Companies expose APIs for external use
- Creates ecosystems and new revenue streams
** Example: Google Maps
- Released API (2005)
- Enabled:
- Ride-sharing (Uber)
- Travel platforms
- Real estate apps
- Games (Pok<6F>mon Go)
** Key Lessons
- Solve internal problem first
- Package as a product
- Enable external innovation
- Build ecosystems
** Other Examples
- Stripe -> payments
- Twilio -> communication APIs
- AWS -> cloud infrastructure
- Dropbox -> file storage APIs
* API Pitfalls
** Challenges
- Complexity increases with scale
- Dependency on external services
- Internal dependencies between teams
** Risks
- Downtime from third-party APIs
- Breaking changes
- Cost spikes (pay-as-you-go)
** Mitigation
- Rate limiting
- Bot protection
- Usage monitoring & alerts
* Why APIs Matter for the Future
** Flexibility
- Easy integration of new tools
- Easier vendor switching
- Adaptable systems
** AI Dependence
- APIs provide:
- Input data
- Output delivery
- Enable real-time, useful AI systems
** Strategic Importance
- APIs influence:
- Business growth
- Product design
- Partnerships
* Key Takeaways
- APIs connect systems through requests and responses
- They enable speed, scalability, and innovation
- They are critical for modern software and business strategy
- Thinking in APIs -> better decisions and flexibility

View File

@@ -0,0 +1,7 @@
:PROPERTIES:
:ID: b2fd7038-42a8-4cbe-882b-92fbe2c12a11
:END:
#+title: ASP.NET Core Web API Fundamental Notes
#+filetags: :notes:api:career:technical:
**Notes from [[https://app.pluralsight.com/ilx/video-courses/asp-dot-net-core-6-web-api-fundamentals/resources][Pluralsight]]**

View File

@@ -0,0 +1,313 @@
:PROPERTIES:
:ID: 67ad330b-cc11-4e8e-b054-12b9da45ea60
:END:
#+title: Software Development Methodologies
#+filetags: :notes:career:technical:
* Software Development Methodologies
A software development methodology defines the /process, structure, and principles/
used to plan, manage, and execute software projects.
** Why It Matters
- Ensures predictability and consistency across teams
- Reduces risk of project failure
- Aligns stakeholders and developers on expectations
- Provides tools for handling change and uncertainty
-----
* 1. Waterfall
** Overview
A *linear, sequential* model where each phase must be completed before the next begins.
** Phases
1. Requirements
2. System Design
3. Implementation
4. Testing
5. Deployment
6. Maintenance
** Example
#+BEGIN_EXAMPLE
A government agency contracts a firm to build a tax portal.
Requirements are frozen at sign-off; code is written six months
later; testing follows; the portal launches two years in.
#+END_EXAMPLE
** Pros & Cons
| Pros | Cons |
|-----------------------------+-----------------------------------|
| Clear structure and phases | Very rigid; change is costly |
| Easy to manage milestones | Late discovery of defects |
| Good for fixed requirements | Customer sees nothing until the end|
** Best For
- Projects with well-defined, stable requirements
- Regulatory/compliance-heavy environments (aerospace, medical devices)
-----
* 2. Agile
** Overview
An *iterative, incremental* philosophy that values:
#+BEGIN_QUOTE
Individuals and interactions over processes and tools.
Working software over comprehensive documentation.
Customer collaboration over contract negotiation.
Responding to change over following a plan.
— The Agile Manifesto (2001)
#+END_QUOTE
** Core Concepts
- *Iterations (sprints)*: Short delivery cycles (14 weeks)
- *Incremental delivery*: Working software shipped frequently
- *Feedback loops*: Customers review and redirect regularly
- *Cross-functional teams*: Dev, QA, design collaborate continuously
** Example
#+BEGIN_EXAMPLE
A startup builds a mobile app in 2-week sprints.
Sprint 1 → user login
Sprint 2 → profile page
Sprint 3 → search feature
After each sprint, real users test and give feedback,
shaping what gets built next.
#+END_EXAMPLE
** Agile Values vs Waterfall
| Dimension | Waterfall | Agile |
|-----------------+---------------+-------------------|
| Planning | Upfront, fixed| Continuous, adaptive|
| Delivery | End of project| Every sprint |
| Change | Discouraged | Embraced |
| Customer role | Sign-off only | Active partner |
| Risk exposure | High (late) | Low (early) |
** Best For
- Products with evolving requirements
- Startups, SaaS, consumer apps
-----
* 3. Scrum
** Overview
Scrum is the most popular *Agile framework*. It imposes a specific
structure of roles, events, and artefacts on top of Agile principles.
** Roles
| Role | Responsibility |
|------------------+-----------------------------------------------------|
| *Product Owner* | Owns the backlog; prioritises what to build |
| *Scrum Master* | Removes blockers; facilitates ceremonies |
| *Dev Team* | Self-organising; delivers the increment |
** Artefacts
- *Product Backlog* — ordered list of all desired features/fixes
- *Sprint Backlog* — subset of items pulled into the current sprint
- *Increment* — shippable product at end of each sprint
** Ceremonies (Events)
#+BEGIN_EXAMPLE
[Sprint Planning] → [Daily Standup × N] → [Sprint Review] → [Retrospective]
↑_____________________________ repeat (14 weeks) ___________________|
#+END_EXAMPLE
| Event | Duration | Purpose |
|--------------------+--------------+---------------------------------------|
| Sprint Planning | ≤ 8 hrs | Decide what goes into the sprint |
| Daily Standup | 15 min | Sync on progress, surface blockers |
| Sprint Review | ≤ 4 hrs | Demo increment to stakeholders |
| Retrospective | ≤ 3 hrs | Reflect and improve the process |
** Example: Daily Standup Format
#+BEGIN_EXAMPLE
Each team member answers three questions:
1. What did I complete yesterday?
2. What will I work on today?
3. Is anything blocking me?
#+END_EXAMPLE
** Best For
- Teams of 39 people
- Products with frequent reprioritisation
-----
* 4. Kanban
** Overview
A *flow-based* method focused on visualising work and limiting
work-in-progress (WIP) to maximise throughput. No fixed sprints.
** Core Principles
1. Visualise the workflow (the Kanban board)
2. Limit WIP per column
3. Manage and improve flow
4. Make policies explicit
** Example Board
#+BEGIN_EXAMPLE
| Backlog | In Progress (WIP:2) | Review (WIP:1) | Done |
|---------|---------------------|----------------|------|
| Task D | Task B | Task A | Task X|
| Task E | Task C | | Task Y|
#+END_EXAMPLE
WIP limits prevent bottlenecks — new work cannot start until a slot opens.
** Scrum vs Kanban
| Dimension | Scrum | Kanban |
|---------------+---------------------+---------------------|
| Cadence | Fixed sprints | Continuous flow |
| Roles | PO, SM, Dev Team | No prescribed roles |
| Change | After sprint | Anytime |
| Metrics | Velocity | Cycle time, throughput|
| Best for | Feature development | Operations, support |
-----
* 5. Extreme Programming (XP)
** Overview
An Agile methodology with an extreme focus on *engineering practices*
and code quality.
** Key Practices
- *Test-Driven Development (TDD)*: Write the test before the code
- *Pair Programming*: Two developers work at one machine
- *Continuous Integration (CI)*: Merge and test code multiple times a day
- *Refactoring*: Continuously improve code structure
- *Small Releases*: Deploy frequently, in small increments
- *Collective Code Ownership*: Anyone can change any code at any time
** Example: TDD Cycle
#+BEGIN_EXAMPLE
Red → Write a failing test
Green → Write the minimum code to pass it
Refactor → Clean up without breaking the test
Repeat.
#+END_EXAMPLE
** Best For
- Teams prioritising code quality and technical excellence
- Projects with rapidly changing requirements
-----
* 6. SAFe (Scaled Agile Framework)
** Overview
SAFe scales Agile practices across *large enterprises* with multiple
teams working on the same product.
** Key Concepts
- *Agile Release Train (ART)*: A long-lived team of 50125 people
- *Program Increment (PI)*: A 812 week planning cycle (like a "super sprint")
- *PI Planning*: All teams plan together face-to-face every PI
** Levels
#+BEGIN_EXAMPLE
Essential SAFe: Team + Program levels
Large Solution: + Solution Train (multiple ARTs)
Portfolio SAFe: + Portfolio strategy & funding
#+END_EXAMPLE
** Best For
- Enterprises with 100+ engineers
- Organisations migrating from Waterfall to Agile at scale
-----
* 7. DevOps (Methodology + Culture)
** Overview
DevOps bridges *development and operations* to enable faster, more
reliable software delivery through automation and collaboration.
** Core Pillars
| Pillar | Description |
|------------------------+---------------------------------------------------|
| *CI/CD* | Automate build, test, and deploy pipelines |
| *Infrastructure as Code* | Manage servers via code (Terraform, Ansible) |
| *Monitoring* | Observe systems in production continuously |
| *Blameless Culture* | Learn from failures without finger-pointing |
** Example: CI/CD Pipeline
#+BEGIN_EXAMPLE
Code Push → Build → Unit Tests → Integration Tests → Deploy to Staging
→ Manual Approval → Deploy to Production → Monitor
#+END_EXAMPLE
** Best For
- Any team wanting faster, safer releases
- Organisations running cloud-native infrastructure
-----
* Comparison Summary
| Methodology | Structure | Delivery Cadence | Flexibility | Team Size | Best Fit |
|-------------+------------+------------------+-------------+------------+------------------------|
| Waterfall | Sequential | End of project | Low | Any | Fixed scope, compliance|
| Agile | Iterative | Every sprint | High | SmallMed | Evolving requirements |
| Scrum | Iterative | Every 14 weeks | High | 39 | Feature development |
| Kanban | Flow-based | Continuous | Very High | Any | Ops, support, flow work|
| XP | Iterative | Weekly | High | Small | Quality-critical code |
| SAFe | Iterative | Every 812 weeks | Medium | 50125+ | Enterprise Agile |
| DevOps | Continuous | On every commit | High | Any | Fast, reliable delivery|
-----
* Choosing the Right Methodology
Ask these questions:
1. *How stable are the requirements?*
- Stable → Waterfall / SAFe
- Changing → Agile / Scrum / Kanban
2. *How large is the team?*
- 39 → Scrum
- 50+ → SAFe
- Any size ops team → Kanban
3. *How important is engineering quality?*
- Very high → XP (TDD, pair programming)
4. *How often do you need to ship?*
- Daily → DevOps + CI/CD
- Weekly → Scrum / XP
- Continuously → Kanban
5. *What is the regulatory environment?*
- High compliance → Waterfall or hybrid
#+BEGIN_EXAMPLE
Most modern teams use a HYBRID approach:
Scrum (planning cadence)
+ Kanban board (visual workflow)
+ XP practices (TDD, CI)
+ DevOps (automated pipelines)
#+END_EXAMPLE
-----
* Key Terminology Glossary
| Term | Definition |
|-------------------+--------------------------------------------------------------|
| Sprint | A fixed time-box (14 wks) in Scrum for delivering work |
| Backlog | Prioritised list of work items |
| Velocity | Amount of work a team completes per sprint |
| WIP Limit | Maximum items allowed in a workflow stage simultaneously |
| CI/CD | Continuous Integration / Continuous Delivery (or Deployment) |
| TDD | Test-Driven Development |
| Retrospective | Meeting to inspect and improve team process |
| Definition of Done| Agreed criteria for when a task is truly "complete" |
| Epic | Large body of work broken into smaller user stories |
| User Story | Feature described from end-user perspective |