¿Cuáles son algunas cosas que aprendiste trabajando en software a gran escala que los cursos de pregrado no pudieron enseñarte?

“Divide y vencerás” puede funcionar increíblemente bien. También puede funcionar muy mal. Los problemas más insolubles son a menudo los que atraviesan las divisiones: abstracciones con fugas, malas interfaces, expectativas no coincidentes sobre cosas como el bloqueo o el uso de memoria, estructuras de datos ineficientes (que no se mostrarán en un generador de perfiles), bloat de código (ídem) , y así sucesivamente hasta el infinito . El verdadero arte de la “programación en general” consiste principalmente en aprender dónde hacer las divisiones, cómo reconocer cuándo se hicieron las equivocadas y cómo solucionar ese tipo de problemas con una interrupción mínima del código que ya funciona. Esta “sabiduría” es lo que hace la diferencia entre el código que funciona sin problemas y el código que constantemente parece afectado por la “mala suerte”, incluso cuando ambos fueron escritos por personas muy inteligentes.

  • ¡Los comentarios son tan importantes como el código real!
    Cuando trabajas en un equipo, no tienes tiempo para explicar cada fragmento de código a los demás miembros. Si los comentarios se realizan correctamente, entenderán mejor su código.
    En el código de producción, la legibilidad es mucho más importante que cualquier otra cosa, especialmente si el código está en un ciclo constante de modificaciones y adiciones de funciones.
  • ¡Hay una verdadera convención de codificación! El programador principal que escribe y depura el máximo inicialmente, elige las convenciones de código. Otros obedecen eso al máximo nivel posible. Con el tiempo, el estilo se convierte en el estándar de facto para todo el código de la empresa.
  • La mayoría del código del mundo real (excepto juegos y algunas aplicaciones especializadas) es 80% de llamadas API, 10% de pegamento y 8% de algoritmos triviales, el 2% restante será un algoritmo un poco más complicado (acabo de inventar esos números, pero es cierto más o menos)
  • En la mayoría de los casos, la productividad del programador supera la superioridad técnica del lenguaje y los marcos desde una perspectiva empresarial. Duele mucho, pero a veces Java y PHP pueden traer más pan y mantequilla a la mesa que C ++ y Python

More Interesting

Microsoft Virtual Academy ha sido desarrollada por Microsoft para estudiantes y desarrolladores. ¿Existe alguna plataforma similar desarrollada por Google para estudiantes o devolopers?

Con suficiente práctica, ¿alguien puede ser lo suficientemente bueno en los algoritmos de codificación para ser contratado como desarrollador de software?

¿Se considera que un desarrollador de software de automatización de pruebas es un desarrollador de software "normal"?

¿Qué todas las certificaciones importantes debe tener una empresa de desarrollo de software?

¿Cuáles son los objetivos típicos que cada desarrollador de software se establecería?

¿Qué habilidades y software necesito para hacer una aplicación de Android?

¿Cómo se podría diferenciar entre desarrollar un prototipo y crear una versión beta en el desarrollo de software?

¿Debo elegir un contrato de desarrollador de software o un puesto de liderazgo a tiempo completo?

¿Cómo es ventajoso el outsourcing de desarrollo de software?

¿Cuánto tendré que gastar si estoy después de desarrollar el siguiente mejor software para ser utilizado globalmente?

¿Cuáles son los mejores métodos para iniciar negocios independientes en el desarrollo de software? ¿Cuáles son otras categorías de informática donde uno puede ganar experiencia?

Quiero convertirme en desarrollador de sitios web. ¿Que necesito hacer?

¿Cuál es el día típico para un desarrollador de software senior?

Cómo medir periódicamente el crecimiento del desarrollador

¿Cuál es un nivel aceptable de costos indirectos (indirectos) en el desarrollo de software?