Skip to content

[Tutorial/Workflow/Doc] Optional Additional Principle: Interrogate Constraints Before Accepting Them #14

@TinasheMTapera

Description

@TinasheMTapera

🧾 Summary

What you’re pointing at is very real—and it shows up all over mature engineering cultures—but it’s usually expressed a bit differently than “assume you’re the only one with the problem.” That framing can actually push people in the wrong direction (reinventing wheels, bypassing governance, or creating fragmentation).

A more grounded principle from computing and research software practice would be:

“Assume the problem has been encountered before; search, validate, and adapt before settling or reinventing.”

This aligns with a few well-established ideas:

1. Don’t accept constraints blindly (but verify them)

Inexperienced users often treat constraints (IT policies, software availability, errors) as fixed. Experienced engineers treat them as:
	•	potentially negotiable
	•	often misunderstood
	•	sometimes already solved elsewhere

But the key is verification, not rebellion.

⸻

2. “Prior art” / “Don’t reinvent the wheel”

A core engineering norm:
	•	Before building or accepting a workaround, look for existing solutions
	•	This includes:
	•	open-source alternatives
	•	lighter-weight tools
	•	different workflows (e.g., CLI vs GUI, remote vs local)

In your QGIS example, the “RSE instinct” is:
	•	Is there a smaller install?
	•	Is there a portable version?
	•	Can I use GDAL/OGR instead?
	•	Can I run it on a remote system (e.g., FASRC) instead of locally?

⸻

3. Satisficing vs. optimizing

From decision theory:
	•	Satisficing = accepting a “good enough” solution quickly
	•	Optimizing = searching for the best solution

Non-technical users often satisfice too early.

Your principle is essentially:

Delay satisficing until you’ve explored the solution space.

⸻

4. Unix philosophy / composability mindset

Instead of one “big approved tool,” experienced users think:
	•	Can I compose smaller tools to achieve the same outcome?
	•	Do I actually need the full application?

This is exactly the counterpoint to “QGIS is large so I’ll just wait.”

⸻

5. Research Software Engineering framing (what you probably want)

For your handbook, I’d suggest something pragmatic and teachable:

⸻

Proposed Principle (Handbook-Ready)

Interrogate constraints before accepting them

When you encounter a limitation (software access, performance, file size, permissions), do not assume it is final.

Before settling for a suboptimal workflow:
	•	Search for existing solutions (documentation, forums, colleagues)
	•	Check for alternative tools or lighter-weight approaches
	•	Consider whether the task can be done differently (e.g., remotely, programmatically, or with smaller components)

Only accept a constraint after you have confirmed:
	•	it is real (not a misunderstanding), and
	•	no better-supported alternative exists within your environment.

⸻

Optional Add-on (very RSE tone)

Prefer adaptation over waiting.
Waiting for access or approval is sometimes necessary, but it should not be the default response when alternatives exist.

⸻

Why this works better than your original idea

Your original idea:

“only settle when you are sure you are the only person facing this issue”

The problem:
	•	Encourages isolation (“maybe it’s just me”)
	•	Misses the key behavior: searching and validating existing knowledge
	•	Doesn’t guide how to act

The revised version:
	•	Encourages discovery + reuse
	•	Fits FAIR principles (reuse, interoperability)
	•	Matches real engineering workflows

⸻

If you want, I can help you turn this into:
	•	a short callout box (like your Quarto style),
	•	a checklist for students,
	•	or a “bad vs good workflow” example (QGIS case is perfect).

🎯 Learning Goals / Outcomes

What should a reader understand or be able to do after following this tutorial/workflow?

  • Goal 1
  • Goal 2
  • Goal 3

📦 Required Tools, Packages, or Data

List any software packages, datasets, or computing platforms used (e.g., R, Python, FASRC, GeoPandas, etc.).

  • Tools:
  • Libraries:
  • Data source(s):

📄 Outline / Structure

Provide a brief outline of the sections or steps in the document:

  1. Introduction
  2. Setup
  3. Key Steps
  4. Conclusion / Next Steps

🔗 Related Materials

Link to related GitHub repos, issues, lab protocols, or previous examples:

🚦Status & Next Steps

What is the current status?

  • Proposal
  • In Progress
  • Ready for Review
  • Completed

Any notes on who will write or review the content?

Metadata

Metadata

Labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions