I’m documenting terms I’ve encountered or learned while communicating and working in the workplace, so I won’t forget them and can refer back to them occasionally. This collection covers terminology used not only in software engineering but across business in general.

Table of Contents

  1. MECE
  2. Dogfooding
  3. ISO 8601
  4. Ice Breaking
  5. Housekeeping Job
  6. On-the-fly
  7. SLA/SLO/SLI
  8. Dogpile Effect
  9. Thundering Herd
  10. Zero Trust
  11. Shift Left
  12. Technical Debt

MECE

MECE Characteristics Source: Logical Analysis MECE without Duplication and Omission

Mutually Exclusive Collectively Exhaustive is an acronym meaning dividing solutions to a problem so they don’t overlap while covering everything completely. In other words, without duplication and omission.

Definition

  • Mutually Exclusive: Items should not overlap with each other
  • Collectively Exhaustive: All possibilities should be included without exception

Application in Software Engineering

While this term is known as a business management concept, it’s equally applicable to software engineering. This is because eliminating duplicate code while keeping things simple but including all necessary functionality is a common principle in software design and development.

Practical Application Examples:

  1. Error Code Classification in API Design

    • 4xx: Client errors (400, 401, 403, 404…)
    • 5xx: Server errors (500, 502, 503…)
    • Each category doesn’t overlap while covering all error cases
  2. Writing Test Cases

    • Normal cases (Happy Path)
    • Boundary cases (Edge Cases)
    • Exception cases (Error Cases)
  3. Microservice Domain Separation

    • User Service
    • Order Service
    • Payment Service
    • Each service is independent while covering the entire business

When selecting action items to resolve issues or conceptualizing software features, intentionally using this concept often leads to good designs and solutions.

References


Dogfooding

In 1988, Paul Maritz, a manager at Microsoft, sent an internal email titled “Eating our own Dogfood” to test manager Brian Valentine, urging employees to use more of their own products, which made the term famous. (Wiki Article)

Definition

Translated literally as eating dog food, this is a slang term meaning the act of software creators using their own products.

Importance in Software Development

When using your own software according to user scenarios, improvement points become visible:

  • ‘This could be handled better this way!’
  • ‘I didn’t consider this part, need to improve it!’
  • ‘This error message would be hard for users to understand’

Real-World Examples

CompanyProductDogfooding Method
MicrosoftWindowsUsing internal builds first
GoogleGmail, DocsDeploying internally first
SlackSlackUsing as internal communication tool
AirbnbAirbnbEmployees booking accommodations themselves

No matter how much thought goes into software design and development, things are often missed. Based on this experience, the process of developers directly using and improving products with the mindset of providing a more complete product to users is important.


ISO 8601

ISO 8601 is an international standard for date and time representations.

Standard Format

DTDaiatmteee::aYhnYhdY:YmT-miM:mMse-s:DD(YeY(.YegY..-g,M.M,1-4D2:D03T20h4:h-0:00m1)m-:1s5s)Z(e.g.,2024-01-15T14:30:00Z)

Importance in Software Development

Handling data that follows standards has the following benefits:

  1. Reduced Parsing Complexity: No need for code to handle various date formats
  2. Internationalization Support: Clear timezone handling
  3. Easy Sorting: Chronological sorting possible with string sorting
  4. Debugging Convenience: Easy to identify times in logs

Practical Application Examples

1
2
3
4
5
6
7
8
9
# Python
from datetime import datetime

now = datetime.now()
iso_format = now.isoformat()  # 2024-01-15T14:30:00.123456

# JavaScript
const now = new Date();
const isoString = now.toISOString();  // 2024-01-15T14:30:00.123Z

When handling data, try to follow standards whenever possible.


Ice Breaking

The process of using comfortable topics to ease a stiff and tense atmosphere before moving on to serious discussions.

Purpose

  • Reducing psychological barriers between participants
  • Creating an environment for free communication
  • Encouraging creative idea generation
  • Team building and trust formation

Usage in Practice

Official discussions and work often create stiff and formal relationships, but using ice breaking techniques effectively can be beneficial.

Simple Ice Breaking Techniques:

  1. Two Truths and a Lie: Participants tell two truths and one lie, others guess
  2. Check-in Question: “If you described today’s mood as weather?”
  3. Quick Poll: “Morning person vs Night owl”
  4. Photo Share: “Share one recent photo”

Housekeeping Job

A term used to describe tasks performed periodically on servers for minor maintenance (log rotation, etc.).

Representative Housekeeping Tasks

TaskDescriptionFrequency
Log RotationCompress/delete old log filesDaily/Weekly
Temp File CleanupClean up temporary filesHourly
Session CleanupClean up expired sessionsPer minute
Database VacuumDB optimizationWeekly/Monthly
Cache InvalidationRemove old cacheHourly
Backup RotationDelete old backupsWeekly

Implementation Example (Cron)

1
2
3
4
5
6
7
8
# Log rotation daily at midnight
0 0 * * * /usr/sbin/logrotate /etc/logrotate.conf

# Clean temp files every hour
0 * * * * find /tmp -type f -mtime +1 -delete

# DB optimization every Sunday
0 3 * * 0 /usr/bin/vacuumdb -a -f -q

On-the-fly

Meaning “on the spot” or “as it happens,” used occasionally.

Meaning in Software

  1. Real-time Processing: Processing immediately when a request comes in
  2. Dynamic Generation: Creating things when needed rather than in advance
  3. Streaming: Processing in real-time without downloading everything

Actual Usage Examples

In Collaboration:

  • “If issues arise, I’ll support you on-the-fly”
  • Meaning providing support immediately when requests come in

Technical Usage:

  • On-the-fly transcoding: Real-time video format conversion on server
  • On-the-fly compression: Immediate compression during transmission
  • On-the-fly encryption: Immediate encryption during storage

Pros and Cons

AdvantagesDisadvantages
Saves storage spacePossible processing delay
Always latest dataIncreased CPU usage
Flexible responseUnpredictable performance

SLA/SLO/SLI

Metrics for measuring and managing service reliability.

Definitions

TermFull NameDescription
SLAService Level AgreementService level contract
SLOService Level ObjectiveService level objective
SLIService Level IndicatorService level indicator

Relationship

SLI(Measurement)SLO(GoalSetting)SLA(Contract)

Practical Examples

Availability:

  • SLI: Actual uptime / Total time × 100
  • SLO: 99.9% availability target
  • SLA: Service credit if below 99.9%

Latency:

  • SLI: P95 response time
  • SLO: P95 response time under 200ms
  • SLA: Compensation if exceeding 500ms

Dogpile Effect

A phenomenon where multiple requests simultaneously try to fetch original data when cache expires.

Problem Scenario

1234....C1ADa0lBc0lhler1oe0aeq0dxupersiseprtqiesukseeassrtrsiveFexaeiscliuumtrueeltDaBneqouuesrliyes

Solutions

1. Using Mutex/Lock:

1
2
3
4
5
6
7
8
9
def get_data(key):
    data = cache.get(key)
    if data is None:
        with distributed_lock(key):
            data = cache.get(key)  # Double check
            if data is None:
                data = db.query(key)
                cache.set(key, data, ttl=3600)
    return data

2. Cache Warming:

1
2
3
# Refresh before expiration
if cache.ttl(key) < 60:  # If 60 seconds left, refresh
    background_task(refresh_cache, key)

Thundering Herd

A phenomenon where a large number of requests occur simultaneously due to specific events (server restart, network recovery, etc.).

Occurrence Scenario

  1. DB server restarts
  2. Thousands of pending connection attempts
  3. All try to connect simultaneously → DB overload
  4. Connection failure → Retry → Vicious cycle

Solutions

1. Exponential Backoff:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
import time
import random

def connect_with_backoff(max_retries=5):
    for attempt in range(max_retries):
        try:
            return db.connect()
        except ConnectionError:
            wait = (2 ** attempt) + random.random()
            time.sleep(wait)

2. Adding Jitter:

1
2
# Prevent all clients from retrying at the same time
wait = base_wait + random.uniform(0, 1)

Zero Trust

A security principle of “never trust, always verify.”

Core Principles

  1. Never Trust, Always Verify: Verify all access
  2. Least Privilege: Grant minimum permissions
  3. Assume Breach: Design assuming compromise

Traditional Model vs Zero Trust

AspectTraditional ModelZero Trust
Trust BoundaryNetwork perimeterNone
AuthenticationOnce (at login)Continuous
PermissionsBroadMinimal
MonitoringSelectiveAll activity

Shift Left

An approach of performing quality control activities in the early stages of the development lifecycle.

Traditional vs Shift Left

TSrhaidfittiLoenfatl::[[DDeevveellooppmmeenntt]+Te[sTteisntgin+g]Secu[rDietpyl]oyme[nDte]ploy[mSeenctu]rity]

Application Areas

AreaShift Left Activities
TestingTDD, Unit tests
SecuritySAST, Code reviews
PerformanceEarly load testing
OperationsIaC, DevOps

Benefits

  • Early bug detection → Reduced fix costs
  • Faster deployment
  • Improved quality
  • Enhanced developer capabilities

Technical Debt

Choices that are efficient in the short term for fast development but incur additional costs in the long run.

Types

  1. Intentional Debt: Consciously sacrificing quality to meet deadlines
  2. Unintentional Debt: Occurring due to lack of experience or knowledge
  3. Bit Rot: Debt from software aging

Management Methods

1234....DSCMoeroctenuaimpttereonirtorre(dipCetaobiydtemese(ncI(tosImsmppuplleaae,cnxtiW(ti×Aykl,iUl)rocgcoeavntecerya)egaec)hsprint)

Debt vs Investment

SituationChoiceReason
MVP DevelopmentAccept debtQuick market validation
Core FeaturesMinimize debtLong-term maintenance
POCDebt irrelevantPlanned for disposal

To be continued…

I plan to continuously update this document whenever I discover new terminology. As a software engineer, understanding terms used in both business and technology is key to effective communication.