Os Impactos do Hábito da Corrida na Vida de um Engenheiro de Software

by Rafael Pessoni, CTO / Tech Lead

A Conexão Entre Corrida e Desenvolvimento

Como engenheiro de software há mais de uma década, sempre busquei formas de otimizar não apenas meu código, mas também minha performance pessoal. A corrida, que começou como um hobby casual, se tornou uma ferramenta fundamental para meu crescimento profissional.

A disciplina necessária para manter uma rotina de treinos se reflete diretamente na organização do meu trabalho. Assim como planejo meus treinos semanais, organizo minhas sprints e prazos com a mesma metodologia.

Exemplo Prático: Monitoramento de Performance

Assim como monitoro meu pace durante a corrida, implemento métricas de performance no código. Aqui está um exemplo de como criamos um sistema de monitoramento para nossos projetos:

interface PerformanceMetrics {
  responseTime: number
  memoryUsage: number
  errorRate: number
  throughput: number
}

class PerformanceMonitor {
  private metrics: PerformanceMetrics[] = []

  async trackRequest<T>(
    operation: () => Promise<T>,
    operationName: string,
  ): Promise<T> {
    const startTime = performance.now()
    const startMemory = process.memoryUsage()

    try {
      const result = await operation()
      const endTime = performance.now()
      const endMemory = process.memoryUsage()

      this.recordMetrics({
        responseTime: endTime - startTime,
        memoryUsage: endMemory.heapUsed - startMemory.heapUsed,
        errorRate: 0,
        throughput: 1,
      })

      return result
    } catch (error) {
      this.recordMetrics({
        responseTime: performance.now() - startTime,
        memoryUsage: 0,
        errorRate: 1,
        throughput: 0,
      })
      throw error
    }
  }

  private recordMetrics(metrics: PerformanceMetrics): void {
    this.metrics.push(metrics)

    // Alert se performance degradar
    if (metrics.responseTime > 1000) {
      console.warn(`Performance alert: ${metrics.responseTime}ms response time`)
    }
  }
}

E aqui está como usamos Docker para garantir consistência entre ambientes, assim como um corredor mantém consistência entre treinos:

# Dockerfile para aplicação Node.js
FROM node:18-alpine AS base

# Instalar dependências apenas quando necessário
FROM base AS deps
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production

# Build da aplicação
FROM base AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build

# Imagem de produção
FROM base AS runner
WORKDIR /app
ENV NODE_ENV=production

RUN addgroup --system --gid 1001 nodejs
RUN adduser --system --uid 1001 nextjs

COPY --from=builder /app/public ./public
COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./
COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static

USER nextjs
EXPOSE 3000
ENV PORT=3000

CMD ["node", "server.js"]

E para orquestrar tudo, usamos Kubernetes com configurações que garantem alta disponibilidade:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: smn-app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: smn-app
  template:
    metadata:
      labels:
        app: smn-app
    spec:
      containers:
        - name: app
          image: smn/app:latest
          ports:
            - containerPort: 3000
          env:
            - name: NODE_ENV
              value: 'production'
          resources:
            requests:
              memory: '256Mi'
              cpu: '250m'
            limits:
              memory: '512Mi'
              cpu: '500m'
          livenessProbe:
            httpGet:
              path: /health
              port: 3000
            initialDelaySeconds: 30
            periodSeconds: 10
          readinessProbe:
            httpGet:
              path: /ready
              port: 3000
            initialDelaySeconds: 5
            periodSeconds: 5
---
apiVersion: v1
kind: Service
metadata:
  name: smn-app-service
spec:
  selector:
    app: smn-app
  ports:
    - port: 80
      targetPort: 3000
  type: LoadBalancer

Por que a Corrida Funciona para Desenvolvedores

  • Ritmo constante: Assim como manter um pace na corrida, o desenvolvimento exige ritmo sustentável
  • Foco no processo: Não é sobre velocidade, mas sobre consistência
  • Superação de limites: Ambos exigem sair da zona de conforto

Benefícios Mentais que Impactam o Código

A corrida oferece algo raro na nossa profissão: tempo para pensar sem distrações digitais. Durante os treinos, muitas vezes encontro soluções para problemas complexos que estavam me atormentando há dias.

O Efeito da Endorfina no Desenvolvimento

A endorfina liberada durante o exercício melhora significativamente minha capacidade de:

  1. Concentração: Foco mais aguçado para resolver problemas complexos
  2. Criatividade: Ideias mais claras para arquitetar sistemas
  3. Paciência: Mais tolerância para debugging e refatoração

Chego ao escritório mais focado e com ideias mais claras para arquitetar sistemas.

Disciplina e Persistência

Desenvolver software e correr têm algo em comum: ambos exigem consistência. Um código não fica melhor de uma hora para outra, assim como a resistência não se constrói em um dia.

A Mentalidade "Uma Milha por Vez"

A mentalidade que aprendi na corrida se aplica perfeitamente ao desenvolvimento:

"Quando enfrento um projeto complexo, divido em pequenas entregas, assim como divido uma maratona em quilômetros."

Esta abordagem incremental é fundamental tanto para:

  • Projetos de software: Dividir em sprints e milestones
  • Aprendizado contínuo: Dominar uma tecnologia por vez
  • Carreira: Crescer gradualmente em responsabilidades

Equilíbrio e Sustentabilidade

A corrida me ensinou sobre limites e recuperação. No desenvolvimento, isso se traduz em:

  • Saber quando fazer uma pausa
  • Quando refatorar código
  • Quando buscar ajuda da equipe

A Importância da Sustentabilidade

A sustentabilidade é crucial tanto na corrida quanto no desenvolvimento:

CorridaDesenvolvimento
Treino excessivo → LesãoCódigo apressado → Bugs
Recuperação adequadaRefatoração regular
Progressão gradualMelhoria contínua

Código que funciona hoje mas quebra amanhã não é diferente de um treino que te deixa lesionado.

Conclusão

A corrida não é apenas um exercício físico para mim - é uma ferramenta de desenvolvimento pessoal que impacta diretamente minha carreira como engenheiro de software.

Principais Benefícios Transferíveis

  • Disciplina: Manter rotinas e compromissos
  • Foco: Concentração em tarefas complexas
  • Mentalidade de crescimento: Superação contínua de desafios
  • Equilíbrio: Sustentabilidade a longo prazo

Se você é desenvolvedor e ainda não encontrou uma atividade física regular, recomendo experimentar a corrida. Os benefícios vão muito além da saúde física - eles transformam sua abordagem ao trabalho e à vida.

Mais artigos

10 Métodos Infalíveis de Procrastinação que Seu Chefe Nunca Vai Perceber

Um guia definitivo (e totalmente irônico) sobre como parecer extremamente produtivo enquanto adia todas as suas tarefas importantes. Use com moderação!

Ler mais

A Evolução do Desenvolvimento de Software Sob Medida: Do COBOL aos Microserviços

Uma jornada através das décadas mostrando como o desenvolvimento de software personalizado evoluiu, desde os mainframes até a era da nuvem e inteligência artificial.

Ler mais

Pronto para escalar?

Nossos escritórios

  • João Pessoa (PB)
    Rua Dep. Geraldo Mariz, 291A
    Tambauzinho, João Pessoa – PB
  • Ingá (PB)
    Sítio Hotel Cruzeiro, s/n
    Zona Rural, BR-230 – Ingá – PB
  • Franca (SP)
    R. dos Pracinhas, 1720
    Núcleo Agrícola Alpha, Franca – SP
  • Passos (MG)
    Av. Arouca, 660, Sala 911
    Centro, Passos – MG