Obsah článku / Contents
Malý tím, veľké zázraky: Riešenie (Časť 2)

Kapitola 4: The Great Downsizing (alebo: Menej je niekedy viac)

Team composition v peak:

👨‍💼 Manager (micromanager)
👨‍💻 Senior Developer (copy-paste expert)
👨‍💻 Mid Developer #1
👨‍💻 Mid Developer #2
👨‍💻 Mid Developer #3
👨‍💻 Junior Developer #1
👨‍💻 Junior Developer #2
🏗️ Ja (Architect/Team Lead)

Total: 8 people
Output: Chaos

Problem: "Inventory" developer

typescript
interface Developer {
  yearsOfExperience: number;
  actualSkillLevel: SkillLevel;
  willingnessToLearn: boolean;
  bugProduction: number;
  codeQuality: Quality;
}

const inventoryDev: Developer = {
  yearsOfExperience: 15,
  actualSkillLevel: SkillLevel.JUNIOR,  // Harsh truth
  willingnessToLearn: false,
  bugProduction: 10,  // bugs per week
  codeQuality: Quality.LEGACY
};

const juniorDev: Developer = {
  yearsOfExperience: 1,
  actualSkillLevel: SkillLevel.MID,  // Fast learner!
  willingnessToLearn: true,
  bugProduction: 2,
  codeQuality: Quality.MODERN
};

// Math
if (inventoryDev.bugProduction > inventoryDev.value) {
  team.remove(inventoryDev);  // Painful but necessary
}

Ťažké rozhodnutie: Musím sa zbaviť developera, ktorý nás brzdí.

Dôvody:

  • Produkcia bugov > hodnota
  • Odmietanie učiť sa nové veci
  • Negatívny vplyv na tím ("Prečo sa musíme učiť nové frameworky?")
  • Sabotovanie refactoringu ("Staré riešenie fungovalo!")

Reality check:

15 rokov skúseností ≠ 15 rokov vývoja
15 rokov skúseností = 1 rok skúseností × 15

Rozdiel:
15× learning & improving vs 15× repeat year 1

Finding diamonds: Junior → Senior transformation

Zobral som do tímu junior developera s týmito charakteristikami:

typescript
const newJunior: Developer = {
  yearsOfExperience: 0.5,
  actualSkillLevel: SkillLevel.JUNIOR,
  willingnessToLearn: true,  // 🔥 Key factor
  motivation: 100,
  questionAsking: "constantly",  // Good sign!
  codeQuality: Quality.IMPROVING_DAILY
};

6 mesiacov neskôr:

typescript
const formerJunior: Developer = {
  yearsOfExperience: 1,
  actualSkillLevel: SkillLevel.MID_TO_SENIOR,  // 🚀
  willingnessToLearn: true,
  motivation: 100,
  codeQuality: Quality.SOLID_PRINCIPLES,
  canMentorOthers: true  // Bonus!
};

// Growth rate
const growthRate = (formerJunior.skillLevel - newJunior.skillLevel)
                   / timeInMonths;
// Result: 1.5 levels per 6 months = FAST

What made the difference?

  1. Attitude > Experience

    "Neviem to, ale naučím sa" > "Viem to, nepotrebujem sa učiť"
  2. Modern stack adoption

    typescript
    // Old stack (inventory comfort zone)
    jQuery + Angular.js 1.5 + callback hell
    
    // New stack (junior excitement)
    Angular 17 + RxJs + TypeScript + gRPC
  3. Ownership

    Junior: "Môžem si vziať tento task?"
    Inventory: "To nie je moja zodpovednosť"

Kapitola 5: Stabilný tím = Produktivita

Final team composition:

🏗️ Ondrej (Solution Architect / Team Lead)
   → Architecture decisions
   → Code review
   → Mentoring
   → Crisis management

👨‍💻 Senior Developer (bývalý junior, rýchlo sa vypracoval)
   → Feature development
   → Complex implementations
   → Technical research
   → Peer programming

👨‍💼 Product Owner + Tester (2-in-1 superhero)
   → Requirements
   → Testing
   → Customer communication
   → Priorities

Total: 3 people
Output: 🚀 Higher than 7-person team

Produktivita: 3 vs 7

typescript
// Team of 7 (old)
const oldTeam = {
  developers: 6,
  communication_overhead: 0.5,  // 50% času na meetings
  code_conflicts: 0.3,          // 30% času na merge conflicts
  bug_fixing_old_code: 0.4,     // 40% času na fixing bugs
  actual_development: 0.2       // Len 20% času na vývoj!
};

// Team of 3 (new)
const newTeam = {
  developers: 2,
  communication_overhead: 0.1,   // 10% času
  code_conflicts: 0.05,          // 5% času
  bug_fixing_old_code: 0.05,     // 5% času (dobrý kód)
  actual_development: 0.8        // 80% času na vývoj! 🎉
};

// Productivity
oldTeam.productivity = 7 × 0.2 = 1.4 effective developers
newTeam.productivity = 2 × 0.8 = 1.6 effective developers

// Winner: 3-person team je produktívnejší!

Prečo to funguje?

1. Minimálny communication overhead

Team of 7:
Communication channels = n × (n-1) / 2 = 7 × 6 / 2 = 21 channels
Daily sync: 21 possible conversations

Team of 3:
Communication channels = 3 × 2 / 2 = 3 channels
Daily sync: "Hey guys, quick update?" Done.

2. Kvalita > Kvantita

python
def team_output(developers):
    if all(dev.skill_level == "high" and dev.motivated):
        return len(developers) * 2.5  # Synergy effect
    else:
        return len(developers) * 0.5  # Drag effect

# Old team (mixed skill)
output_old = team_output([high, high, low, low, low, low, low])
# = 7 × 0.5 = 3.5 units

# New team (all high)
output_new = team_output([high, high])
# = 2 × 2.5 = 5 units

# New team wins!

Kapitola 6: Lessons learned

1. Roky skúseností ≠ Skill level

typescript
type Experience = {
  years: number;
  learningCurve: 'growing' | 'flat';
};

// Developer A
const devA: Experience = {
  years: 15,
  learningCurve: 'flat'  // Learned once, repeated 15×
};

// Developer B
const devB: Experience = {
  years: 2,
  learningCurve: 'growing'  // Learning daily
};

// After 2 years
devB.actualSkill > devA.actualSkill  // Often true!

2. Attitude > Experience

python
def hire_decision(candidate):
    if candidate.attitude == "willing_to_learn":
        return "HIRE"  # Can teach skills
    elif candidate.experience > 10 and candidate.attitude == "know_it_all":
        return "PASS"  # Can't teach attitude
    else:
        return "MAYBE"

# Priority
attitude > experience > certificates

3. Refactoring nie je premrhaný čas

typescript
// Without refactoring
const timeToImplementFeature = (complexity: number) => {
  return complexity × technicalDebt × 10;  // 10× slower
};

// After refactoring
const timeToImplementFeature = (complexity: number) => {
  return complexity × 1;  // Clean codebase
};

// ROI calculation
const refactoringTime = 2; // weeks
const featuresPerYear = 50;
const timeSavedPerFeature = 0.5; // weeks

const totalTimeSaved = featuresPerYear × timeSavedPerFeature;
// = 50 × 0.5 = 25 weeks saved

const roi = (totalTimeSaved - refactoringTime) / refactoringTime;
// = (25 - 2) / 2 = 11.5× return!

4. Small focused team > Large chaotic team

The mythical man-month is real!

9 žien nemôže porodiť dieťa za 1 mesiac.
9 developerov nemôže spraviť 1-týždeň projekt za 1 deň.

Sweet spot: 2-4 developers
- Can communicate effortlessly
- Can share knowledge easily
- Can maintain consistent code style
- Can actually get stuff done

5. Toxic person removal > Team growth

typescript
interface TeamHealth {
  morale: number;      // 0-100
  productivity: number;
  turnover: number;
}

// With toxic person
const before: TeamHealth = {
  morale: 30,
  productivity: 40,
  turnover: 60  // People leaving
};

// After removal
const after: TeamHealth = {
  morale: 85,
  productivity: 90,
  turnover: 5
};

// Math
const improvement = (after.productivity - before.productivity)
                    / before.productivity;
// = (90 - 40) / 40 = 125% improvement!

Záver: Size doesn't matter (in teams)

Malý tím môže robiť veľké zázraky ak:

✅ Máte správnych ľudí (attitude > experience) ✅ Odstránite toxic influences (people > politics) ✅ Investujete do kvality (refactoring = investment) ✅ Používate moderne nástroje (technology matters) ✅ Dôverujete tímu (empowerment > micromanagement)

Nezáleží na:

❌ Počte rokov v praxi (15 years ≠ expert) ❌ Veľkosti tímu (7 people ≠ 7× productivity) ❌ Copy-paste productivity (lines of code ≠ value)

Lesson learned:

"Radšej mať 3 správnych ľudí než 10 nesprávnych."

"Roky v práci nemerajú skill level, ale len persistence."

"Malý tím s vysokou kvalitou > Veľký tím s nízkou kvalitou"

A najdôležitejšie:

"Niekedy musíte urobiť ťažké rozhodnutia pre dobro projektu. Vrátane toho, že niekoho necháte odísť."


Článok napísal Solution Architect, ktorý prežil micromanagement hell, refaktoroval 144 tabuliek na 1 konfigurovateľnú komponent, a dokázal, že 3-person team môže byť produktívnejší než 7-person team.

Lessons learned the hard way, ale bez regrets. Každý projekt je learning experience.

Sometimes less is more. Sometimes you need to let people go. Sometimes refactoring je najlepšia investícia. Always - attitude matters more than years.

P.S.: Ak máte na projekte 144 copy-paste tabuliek, zavolajte pomoc. Je to choré. Trust me, I've been there. 😅

Všetky články