PedroGeoGISdev wiki
  • Home
  • Linux OS
    • Linux: concepts
    • Linux: basic concepts
    • Linux: Bash
    • Linux: su and sudo
    • Linux: pipes
    • Linux: File System
    • Linux: Virtual Machines

    • Linux: distros
    • Linux Distros: Ubuntu
    • Linux Distros: Mint
    • Linux Distros: Debian
    • Linux Distros: openSuse
    • Linux Distros: Manjaro
    • Linux Distros: Red Hat Enterprise

    • Linux: laboratories
    • Linux Lab#LI01-1: Choose Linux
    • Linux Lab#LI01-2: Install at least three distributions
    • Linux Lab#LI01-3: Adjust user permissions
    • Linux Lab#LI02-1: Export env user with grep and pipe
    • Linux Lab#LI03-1: Manage users and groups
    • Linux Lab#LI03-2: Manage files
    • Linux Lab#LI03-3: Manage software
    • Linux Lab#LI03-4: Manage hardware
    • Linux Lab#LI04-1: Bash scripting, qtool
    • Linux Lab#LI04-2: Bash scripts as terminal tool
    • Linux Lab#LI04-3: Distribute the terminal app

    • Linux readings
    • Linux Resources
  • DevOps
    • What is DevOps
    • DevOps: Introduction
    • DevOps: Agile and Microservices
    • Infrastructure as code (IaC)
    • Immutable Infrastructure
    • Software Lifecycle

    • Documentation
    • How to document: Quarto and Obsidian

    • Network protocols
    • Network: Basics
    • Network: Client-server
    • Network Protocols
    • Network: DNS
    • Network: API Rest
    • Network: gRPC
    • Network: Websocket
    • Network: SMTP
    • Network: Ping
    • Network: UDP
    • Network: webhook
    • Network: SOAP
    • Network: graphQL

    • Version Control
    • Git
    • GitHub
    • Idea and GitHub 2023
    • Git and GitHub 2023 CLI

    • IDEs
    • IDE: Visual Code
    • IDE: IntellJIdea

    • DevOps tools
    • Amazon Web Services AWS
    • Docker
    • Jenkins pipelines
    • Kubernetes k8s
    • Digital Ocean
    • Nagios
    • Ansible

    • DevOps Laboratories
    • Lab 1: chat App
    • Lab 2: Spring Boot AWS AEB manually
    • Lab 3: Spring Boot and AWS S3 publisher
    • Lab 4: Spring Boot Docker/Jenkins
    • Lab 5: k8s on Digital Ocean
    • Lab 6: Spring Boot AWS codecommit

    • DevOps readings
    • DevOps Resources
  • MarkUp
    • MarkUp Languages
    • Introduction Markup
    • HTML Markup
    • Markdown Markup
    • Markdown and HTML working together, good idea?

    • Quarto Markdown
    • Quarto Markdown: basics
    • Quarto Markdown: creating
    • Quarto Markdown: publishing
    • Quarto Markdown: code & data
    • Quarto Markdown: api rest call
    • Quarto Markdown: OJS Cells
    • Quarto Markdown: cheat-sheet

    • Styling: CSS
    • Cascade Style Sheet
    • Cascade Style Sheet: Box Model and Containers
    • CSS: W3.css

    • MarkUp Languages Laboratories
    • Lab#MD01-1: Create and publish by Quarto

    • MarkUp Languages readings
    • MarkUp Languages Resources
  • Java SE
    • What is Java SE
    • Java Standard Edition: Basics
    • Java Standard Edition: Principles
    • Java MOOC Helsinki
    • Java MOOC Helsinki Syllabus

    • Java Create Project
    • Java SE: Maven
    • Java SE: Create Maven Project
    • Java SE: Project push GitHub
    • Java SE: JUnit and TDD

    • Java Concepts
    • Java SE: Class and Objects
    • Java SE: Scope
    • Java SE: static modifier
    • Java SE: Coupling and DDD
    • Java SE: Packages
    • Java SE: Abstract/Interface
    • Java SE: Java 8

    • Java Principles
    • Java SE: Encapsulation
    • Java SE: Abstraction
    • Java SE: Inherence
    • Java SE: Polymorphism

    • Java Design Patterns
    • Java Patterns: UML
    • Java Patterns: Types
    • Singleton
    • Factory
    • Abstract Factory
    • Builder
    • Facade
    • Bridge
    • Decorator
    • Composite
    • Observer
    • Strategy
    • State
    • Commander

    • Java SE Laboratories
    • Lab#SE00-1: Maven Person
    • Lab#SE00-2: Maven Clinic
    • Lab#SE00-3: Library Model
    • Lab#SE00-4: Abstract/Interface Human
    • Lab#SE01-1: Maven/Gradle Person and Account
    • Lab#SE01-2: Maven/Gradle Person and Account stored in JSON
    • Lab#SE02-1: Movie/Review, Model
    • Lab#SE02-2: Movie/Review, CRUD Operations
    • Lab#SE02-3: Movie/Review, factory
    • Lab#SE02-4: Movie/Review, interactivity and coupling
    • Lab#SE02-5: Movie/Review, simulate interactivity by console
    • Lab#SE03-1: Library/Book, Core-Model
    • Lab#SE03-2: Library/Book, Sprint Zero
    • Lab#SE03-3: Library/Book, Expand Model
    • Lab#SE04-1: healthyFood Restaurant, Core Model

    • Java SE readings
    • Java SE Resources
  • Python
    • Python Basics
    • Python: Basic Concepts
    • Python: Tips
  • JavaScript
    • JavaScript Basics
    • JavaScript: Basic Concepts
    • JavaScript: Tips
  • Spring
    • Spring Legacy
    • Spring Framework
    • Spring MVC
    • Springs Servlets

    • Spring Boot Basics
    • Spring Boot: fundamentals
    • Spring Boot: create a Project
    • Spring Boot: H2 DB and Thymeleaf
    • Spring Boot: cycle

    • Spring Boot Concepts
    • Spring Boot: Dependency Injection
    • Spring Boot: Annotations
    • Spring Boot: Controller
    • Spring Boot: View
    • Spring Boot: Thymeleaf
    • Spring Boot: Vaadin Flow
    • Spring Boot: Vaadin Hilla
    • Spring Boot: Model
    • Spring Boot: Rest
    • Spring Boot: Data & DB
    • Spring Boot: JPA & DI
    • Spring Boot: JPA Mappings
    • Spring Boot: JPA Relationships
    • Spring Boot: JPA Queries
    • Spring Boot: JPA Inherence
    • Spring Boot: Scaling

    • Spring Boot Laboratories
    • Lab#SB00-1: Library UML
    • Lab#SB00-2: CRUD User
    • Lab#SB00-3: LibraryManagement
    • Lab#SB00-4: API Rest
    • Lab#SB00-5: Rest & JPA-H2
    • Lab#SB00-6: Rest & MongoDB
    • Lab#SB00-7: Styling
    • Lab#SB01-1: DataBase
    • Lab#SB02-1: JPA Relationships
    • Lab#SB03-1: APIs & cloud
    • Lab#SB04-1: JPA Inherence
    • Lab#SB05-1: API Rest
    • Lab#SB06-1: employeeCourse
    • Lab#SB07-1: monitor Book
    • Lab#SB08-1: Restaurant UML
    • Lab#SB08-2: Vaadin
    • Lab#SB08-3: H2 and API Rest
    • Lab#SB08-4: JPA
    • Lab#SB08-5: Test API Rest
    • Lab#SB09-1: SpringIO Conference

    • Spring Boot readings
    • Spring Boot Resources
  • ReactJS
    • ReactJS: Principles
    • React JS: Introduction
    • React JS: render virtual DOM
    • React JS: Create a React project
    • React JS: Components
    • React JS: JSX
    • React JS: props and state

    • JavaScript: web scripting
    • JavaScript: basics
    • JavaScript: functions
    • JavaScript: objects
    • JavaScript: variables
    • JavaScript: flux control

    • ES6: ECMAScript 6
    • React JS ES6: arrow functions
    • React JS ES6: import modules
    • React JS ES6: array, data and key
    • React JS ES6: destructuring
    • React JS ES6: spread operator

    • ReacJS 18: Hooks
    • React JS: Rules of Hooks
    • ReactJS: useState
    • React JS: useReducer
    • React JS: useRef
    • React JS: useEffect
    • React JS: useContext
    • ReactJS: useMemo
    • ReactJS: custom hooks

    • ReactJS: Designing an App
    • React JS App: async
    • React JS App: events
    • React JS App: router
    • React JS App: conditional render
    • React JS App: styling

    • React JS: Laboratories
    • Lab#RE01-1: API Rest Axios
    • Lab#RE02-1: Router & Hooks
    • Lab#RE03-1: to-do app
    • Lab#RE03-2: HighCharts
    • Lab#RE03-3: API Rest Mono
    • Lab#RE03-4: API Rest Domains
    • Lab#RE03-5: data management
    • Lab#RE04-1: todo & server
    • Lab#RE04-2: Spring Boot & ReactJS
    • Lab#RE05-1: chat & websockets
    • Lab#RE05-2: chat: backend
    • Lab#RE05-3: chat & AWS
    • Lab#RE05-4: chat: test ws AWS
    • Lab#RE05-5: chat & front
    • Lab#RE05-6: chat & ws: front
    • Lab#RE06-1: healthyFood Restaurant
    • Lab#RE06-1-PR: create a pull request
    • Lab#RE07-1: traffic lights simulation

    • React JS readings
    • ReactJS Resources
  • Learning
    • Vocabulary
    • General Vocabulary
    • SCRUM Vocabulary
    • DevOps Vocabulary
    • Java SE Vocabulay
    • Spring Boot Vocabulary
    • DataBase Vocabulary
    • ReactJS Vocabulary
    • Web Vocabulary

    • Learning
    • Useful Questions
    • Learning: tips
    • Writing
    • Taking Notes
    • Comments
    • Document
    • Auto-Evaluate

    • Books & Articles
    • Books
    • Articles

    • What is SCRUM
    • SCRUM Agile Methodology
    • Agile Manifesto & Values
    • SCRUM Guide

    • Scrum Steps
    • Meetings, Impediments and Iterations
    • User stories, Tasks and Habits
    • Delivering Value & Communication
    • ScrumMaster, how it works
    • Mindset, the key to everything
    • Product Owner, how it works
    • Managing Time & Mind
    • Team & the Specialist
    • Albertus’ Dilemma
    • Before SCRUM
    • Team Dynamics
    • Emotions and Thoughts
    • Decision Making and Intuition
    • Beyond SCRUM
    • Balances, atmosphere and tools

    • Resources
    • SCRUM Resources
  • QGIS
    • QGIS basics
    • QGIS: basic concepts

    • QGIS laboratories
    • QGIS Laboratory 1: Introduction to Open Source GIS
  • ArcGIS Pro
    • ArcGIS Pro basics
    • ArcGIS Pro: basic concepts

    • ArcGIS Pro laboratories
    • ArcGIS Pro Laboratory 1: Getting Started
  • Bookmarks
    • Online Resources
    • Online Resources
  • About
    • About me and this site
    • About me
    • About this site
    • About images credit
  • Email
  • GitHub
  • LinkedIn
  1. Scrum Steps
  2. Albertus’ Dilemma
  • Vocabulary
    • General Vocabulary
    • SCRUM Vocabulary
    • DevOps Vocabulary
    • Java SE Vocabulay
    • Spring Boot Vocabulary
    • DataBase Vocabulary
    • ReactJS Vocabulary
    • Web Vocabulary

  • Learning
    • Useful Questions
    • Learning: tips
    • Writing
    • Taking Notes
    • Comments
    • Document
    • Auto-Evaluate

  • Books & Articles
    • Books
    • Articles

  • What is SCRUM
    • SCRUM Agile Methodology
    • Agile Manifesto & Values
    • SCRUM Guide

  • Scrum Steps
    • Meetings, Impediments and Iterations
    • User stories, Tasks and Habits
    • Delivering Value & Communication
    • ScrumMaster, how it works
    • Mindset, the key to everything
    • Product Owner, how it works
    • Managing Time & Mind
    • Team & the Specialist
    • Albertus’ Dilemma
    • Before SCRUM
    • Team Dynamics
    • Emotions and Thoughts
    • Decision Making and Intuition
    • Beyond SCRUM
    • Balances, atmosphere and tools

  • Resources
    • SCRUM Resources

On this page

  • 1 What is a dilemma?
  • 2 Albertus’ Dilemma: The Comic
  • 3 Overview
  • 4 Introduction
  • 5 Albertus’ Dilemma… What are we talking about?
  • Edit this page
  • Report an issue
  1. Scrum Steps
  2. Albertus’ Dilemma

Albertus’ Dilemma

SCRUM Step 9

scrum
albertusDilemma
Albertus’ Dilemma explores the mental challenges faced by programmers throughout the workweek
Author

Albert R.

Published

Tuesday, June 1, 2021

Modified

Sunday, August 10, 2025

📘 Summary: SCRUM Step 9 - Albertus’ Dilemma

Albertus’ Dilemma explores the mental challenges faced by programmers throughout the workweek, symbolized by a diminishing canteen of creative energy.

The dilemma arises from the misconception that working harder will replenish this energy, leading to exhaustion and a productivity trap: the well.

To break free, programmers must strategically pause, reflect, and make informed decisions.

Embracing intermittent coding preserves mental energy, ensuring a successful journey from code to relaxation.

Albertus’ Dilemma serves as a guiding philosophy for maintaining balance, resulting in a clear-minded, stress-free programmer celebrating a job well done by week’s end.


Keywords: Step 9 - Albertus’ Dilemma

Albertus’ Dilemma, Mental Challenges, Creative-Mind-Brain Energy, Productivity Trap, Strategic Pause, Informed Decisions, Intermittent Coding, Balance, Clear-minded, Stress-free, Coding Desert, Journey, Programmer’s Oasis, Reflection, Decision-making, Desert Wisdom, Coding Legacy



Programming means choosing a path where there is no path and few resources and each decision conditions the next and drains resources

Programming means choosing a path where there is no path and few resources and each decision conditions the next and drains resources

1 What is a dilemma?

Dictionary dilemma

Dictionary dilemma

2 Albertus’ Dilemma: The Comic

TipAlbertus’ Dilemma - Navigating the Programmer’s Oasis


In the vast landscape of the workweek

In the vast landscape of the workweek

In the vast landscape of the workweek, each programmer embarks with a canteen full of precious water, symbolizing their mental energy. Monday marks the beginning of the journey, the oasis brimming with potential. But as the relentless sun of tasks beats down, the water supply diminishes.

By Tuesday, the once-full canteen is distressingly dry—a programmer stranded in the midweek desert, parched for creativity and focus. The Albertus Dilemma unfolds as a dilemma rooted in the illusion that working harder and longer will miraculously refill the canteen.

The paradox arises: the more they toil in the arid landscape, the deeper they dig themselves into a well of exhaustion. The coding well, ever-expanding with each line of code, becomes a trap. Blind to their own depletion, programmers find themselves ensnared, the oasis of productivity slipping further away.

To break free from Albertus Dilemma

To break free from Albertus Dilemma

To break free from Albertus Dilemma, programmers must recognize the futility of digging deeper. Instead, they must pause, survey the desert, and conserve the remaining droplets of mental energy. The oasis can only be replenished through strategic reflection and intelligent decision-making.

Coding without a clear path forward is akin to stumbling into the well

Coding without a clear path forward is akin to stumbling into the well

Coding without a clear path forward is akin to stumbling into the well—a descent into a labyrinth of confusion. The remedy lies in restraint, in knowing when to pause and when to resume. The oasis is not lost, merely obscured by the mirage of perpetual productivity.

The trap well of ignorance and bad decision-making

The trap well of ignorance and bad decision-making

Thus, the sage programmer embraces the art of intermittent coding, preserving mental water in the vast desert. They understand that productivity is not a bottomless well, but a delicate oasis to be nurtured. Albertus’ Dilemma teaches the profound lesson that the journey from coding to completion requires a balance of diligence, strategic thinking, and the wisdom to discern when to rest and when to forge ahead.

The code produced throughout the week reflects the clarity of their mind

The code produced throughout the week reflects the clarity of their mind

As the week unfolds, the sage programmer, having embraced the lessons of Albertus Dilemma, emerges unscathed by the pitfalls of the coding desert. By judiciously preserving mental energy, they reach Friday with a canteen still brimming with vitality. Instead of succumbing to exhaustion, they find themselves relaxed and content, basking in the success of their strategic approach.

The unwise code of Friday’s night working hard

The unwise code of Friday’s night working hard

Friday becomes a celebration, not just the end of the workweek, but a culmination of intelligent choices. The sage programmer, stress-free and clear-minded, revels in the satisfaction of a job well done. With a fully replenished canteen, they embark on the weekend with boundless energy to share with friends, enjoying leisure without the burden of unwise coding decisions.

Friday becomes a celebration

Friday becomes a celebration

The code produced throughout the week reflects the clarity of their mind—a clean and elegant manifestation of thoughtful problem-solving. The sage programmer, having navigated the desert wisely, not only secures their own well-being but crafts a legacy of efficient and mindful coding. Albertus Dilemma becomes not just a dilemma to overcome but a guiding philosophy, ensuring that the oasis of productivity is always within reach, and the journey from code to relaxation is a harmonious and successful one.

3 Overview

flowchart LR

A[Problem] --> B(Let's code & See what happens...)
C[The Pitt]
D(Optimal Solution)
C --> B
B --> C
C --> A


4 Introduction

As a future developer I want to relate the struggles and reflect the mentality that you, my fellow reader and potential developer, should avoid.

My purpose is to stablish some patterns of productive thinking to help you to get out from the Valley of Despair a.k.a. (and from now on) The Pitt that most likely you would fall into. Trust me, I’ve been there…Actually I AM constantly there, that’s why I want to reflect that in this kind of journal.

CautionAnyway

That’s the tricky part, I don’t know how as of today (01/19/2023). But hopefully I will. First of all you need to understand the concept of iteration, my friend. With that in mind, we just need to start.

5 Albertus’ Dilemma… What are we talking about?

You surely noticed the flowchart above. It’s such a common pattern for us who just started programming. Have you ever feel identified with it?

As you keep progressing in your coding lessons, problems are going to be slightly more difficult and complex every time. Until you reach to a point when you can’t completely see the solution in your mind.
You’ll probably see straight how to get from A to B, but from B to C you see it blurry… Well, then you just have to get to B so you can see more clear how to get to C better, right?
Yes, I always trick to myself like that…

NoteWhen we talk about Albertus’ Dilemma:

It is that moment when you either need to stop, take two steps back and think what led you into this or keep hitting the wall (and the keyboard with your pointless code).

I’m going to try to develop that idea on some exercises based on this lab:

📘 Linux Lab#SE02-1: Movie Review and Rating

Create a Maven/Gradle Java SE Project.

Add the needed dependencies:
    Lombok
    Junit
    Java Faker

Create three Java classes to define the Model. Java SE Classes:

    Movie: The Movie class represents a movie that is being reviewed. It has the following attributes:
        title: a String representing the title of the movie
        reviews: a Set of Review objects representing the reviews that have been written for this movie
        Critic: The Critic class represents a critic who writes reviews.

    The Critic class has the following attributes:
        name: a String representing the name of the critic
        Review: The Review class represents a review of a movie written by a critic.

    The Review class has the following attributes:
        movie: a Movie object representing the movie being reviewed
        critic: a Critic object representing the critic who wrote the review
        rating: an int representing the rating given by the critic (on a scale of 1 to 5)
        comment: a String representing the comment written by the critic about the movie

So I have this requirement:

  • Make a program that can manage information about movies such as:
    • Movie name.
    • Its director (e.g. so I can plan a themed marathon with my friends.)
      • Director’s prestige: I want to know how many Oscars has the director won through his career.
    • It also needs to include its critics made by the best professionals and to know how well or poorly rated it is.

User Story #1 - The easiest and certain way to hit the wall.

Let’s just start coding:


public Class MovieManager  {
    public static void main(String[])
}

flowchart LR
A[Problema] --> B[Decision]
B --> C(Code & See)
B --> D(Piensa)
D --> E[Sabes lo que haces?]
C --> G[El Pozo]
D --> F[Te enamoraste de tu primera idea?]
G --> A


Back to top
Team & the Specialist
Before SCRUM

This website is built with Quarto.

Difficulties are just things to overcome, after all. Ernest Shackleton

  • Edit this page
  • Report an issue