Scientific terms in context of software dev: Empirical, Hypothesis, Objective etc.

While my interest is in practical software development and not computer science per se, in technical discussions sometimes scientific terms come in. Note that I am a software technologist but did study Physics and am a Physics graduate.

This post captures an exchange with Google Search AI (GSAI) on these terms.

Me: Give me crisp and clear definitions of empirical, hypothesis and (scientific) theory in the context of software development.

GSAI: Here are the definitions of empirical, hypothesis, and theory tailored for the software development context. 
1. Empirical (Evidence-Based Software Engineering) 
Definition: Decisions, processes, or validation methods based on direct, measurable observation and real-world experience rather than theory, opinion, or intuition. 
  • Context: Using actual project data (e.g., git logs, JIRA metrics, user engagement, A/B test results) to validate if a tool, methodology, or code change actually improves productivity or quality.
  • Example: Running a controlled experiment comparing team velocity when using Pair Programming versus Individual Development. 
2. Hypothesis (Product/Technical Hypothesis) 
Definition: A testable, tentative prediction about the outcome of a change, usually formulated as "If we change
Xcap X
(Independent Variable), then
Ycap Y
will occur (Dependent Variable/Metric)". 
  • Context: Used in hypothesis-driven development or A/B testing to validate assumptions about a new feature or technical refactoring before full commitment.
  • Example: "If we implement lazy loading on the image gallery, then average page load time will decrease by 20%, resulting in a 5% higher conversion rate". 
3. (Scientific) Theory in Software Development 
Definition: A well-tested, widely accepted, and rigorously verified framework that explains why a particular software engineering practice or phenomenon works across different contexts. 
  • Context: Unlike a simple rule of thumb, a theory is built upon numerous empirical studies and provides predictive power about software behavior.
  • Example: "The theory of balancing human, social, and organizational capital" for software development, which explains how to manage team capabilities based on project demands. 

Summary Comparison Table 
Term Context in SoftwareFocusSource
EmpiricalEvidence-drivenWhat did we see?Observation & Metrics
HypothesisAssumption validationWhat do we expect?Prediction & Testing
TheoryModel explanationWhy does it happen?Tested Generalization


Me: Give me crisp and clear definitions of subjective and objective in the context of software development.

GSAI: 1. Objective (Data-Driven / Factual)
  • Definition: Requirements, metrics, or decisions that are based on hard facts, quantifiable data, or technical limitations. They can be verified independently of personal opinion.
  • Context: What the software must do, or measurable performance metrics (e.g., response time).
  • Examples:
    • "The system shall display the total price including a 5% tax."
    • "API response time must be under 200ms."
    • "The application must support PostgreSQL 14".
  • Key Traits: Verifiable, Measurable, Consistent, Non-biased. 
2. Subjective (Perspective-Driven / Opinionated)
  • Definition: Requirements or feedback based on personal feelings, aesthetic tastes, user experience interpretations, or preferences.
  • Context: How the user feels when using the software, or qualitative improvements (e.g., usability, design).
  • Examples:
    • "The interface feels slow." (Subjective) vs. "The page takes 5 seconds to load." (Objective).
    • "The button should be more appealing."
    • "The new dashboard is confusing."
  • Key Traits: Interpretable, Variable, Qualitative, Emotional. 
Key Differences Summary
Feature ObjectiveSubjective
FoundationFacts, Evidence, Technical SpecOpinions, Experience, Feeling
MeasurementQuantifiable (metrics)Qualitative (user sentiment)
VerificationPass/Fail (Binary)Subject to Interpretation
UsageRequirements, Testing, BackendUser Interface, UX, Design
Key Takeaway: Good software development often requires taking subjective user desires (e.g., "I want it to be fast") and converting them into objective engineering requirements (e.g., "Load time must be <1s").
In software development, distinguishing between objective and subjective elements is critical for scoping, user experience, and testing.

Comments