¿Importa una buena cultura de ingeniería? ¿Existe alguna correlación entre la fortaleza de la cultura de ingeniería de software de una empresa y su rentabilidad? A menudo escucho, por ejemplo, que el 80% de los ingenieros de software en Amazon parecen odiarlo.

Una cultura de ingeniería “buena” beneficia directamente a una empresa de varias maneras:

  • La compañía tiene la capacidad de contratar mejores ingenieros. Muchos de los mejores ingenieros prefieren trabajar con otros grandes ingenieros en una buena cultura de ingeniería, y eso le da a la compañía una ventaja de reclutamiento y retención. Para ver un ejemplo, vea: ¿Cómo encontraron Larry y Sergey a Jeff Dean? “Pensé que Google sería mejor [que AltaVista] porque conocía a más personas allí, y parecía que tenían más conocimientos técnicos”.
  • Los ingenieros son más productivos, independientes de su habilidad. Esto es el resultado de una mejor infraestructura que se acumula con el tiempo, una mejor base de código, más reutilización del trabajo de otros, menos tiempo dedicado a lidiar con deudas técnicas, errores y extinción de incendios. Las diferencias aquí pueden ser enormes, como 2-5x sobre una empresa promedio y aún más en comparación con una cultura particularmente mala.
  • La organización puede adaptarse al cambio más rápidamente. Este es el resultado de la acumulación de muchos pequeños efectos culturales. Por ejemplo, en una buena cultura, es fácil comenzar un nuevo proyecto y hacer que todos estén inmediatamente en la misma página sobre cómo se escribirá el código, cómo se operarán los servicios y qué se reutilizará de otros proyectos. También es fácil para los ingenieros entrar en un proyecto que ya está terminado y extenderlo para admitir una nueva característica.

En términos de resultados comerciales, la suma de todo esto hace posible que la empresa desarrolle productos y características que otras compañías no pueden, o que hagan las cosas más rápido, mantener los costos de infraestructura más bajos, mantenerse en la cima de su mercado y entrar nuevos mercados. Aquí hay algunos ejemplos en los que puedo pensar:

  • La calidad de Gmail en 2004 con respecto a otros productos de correo web fue el resultado directo del fuerte equipo y cultura de ingeniería de Google.
  • MySpace simplemente no pudo seguir el ritmo de desarrollo de productos de Facebook, incluso cuando tenía un equipo de ingeniería mucho más grande. Recuerdo haber hablado con un ingeniero que trabajaba en MySpace que me contó cómo tenían esta enorme lista de expresiones regulares para tratar de evitar ataques de secuencias de comandos en sitios cruzados, y cada vez que había una nueva, creaban una nueva expresión regular para intentar solucionarlo. , en lugar de desinfectar html de la manera correcta. Cosas como esas se suman a una gran cantidad de tiempo perdido que de lo contrario podría contribuir a hacer un producto excelente.

Obviamente, hay mucho más que la capacidad de ingeniería que se necesita para que una empresa tenga éxito, y es más importante en algunos mercados que en otros. Si la fuerza de ingeniería de una empresa se dirige a construir cosas que no importan, la empresa será golpeada por un competidor con un equipo de ingeniería peor que es más eficiente para obtener resultados.

Para abordar Amazon: Mi impresión es que Amazon tiene procesos realmente buenos y hace muchas otras cosas además de la cultura de ingeniería que compensa su debilidad allí. Además, estoy seguro de que todavía termina mucho mejor en ingeniería que Barnes and Noble y la mayoría de las otras compañías con las que compite.

Tuve la suerte, al principio de mi carrera, de trabajar en Maxim Integrated Products. Maxim fue una de las compañías tecnológicas más exitosas de la década de 1990 que creció a $ 1B / año en ingresos para el final de la década.

La cultura de ingeniería de Maxim era excelente. El nivel de talento, pasión, rigor y colaboración estaban fuera de las listas.

He trabajado en compañías tecnológicas exitosas, compañías tecnológicas no exitosas, y he comenzado mi compañía desde que abandoné Maxim. Existe una correlación directa entre tener una cultura de ingeniería exitosa y el éxito de la empresa.

Esto es lo que he visto que las grandes compañías tecnológicas hacen consistentemente con respecto a su cultura de ingeniería:

R. Las grandes compañías tecnológicas solo contratan a los mejores. Las grandes compañías de tecnología tienen estándares extremadamente altos para la contratación.

Una gran empresa de tecnología puede cometer errores de contratación, pero se corrigen rápidamente.

Las empresas de tecnología que no tienen éxito en la contratación de estándares son menos estrictas. A sabiendas contratan talentos mediocres que son “suficientemente buenos”.

Y…

B. Las grandes compañías tecnológicas pagan por el talento. Y, curiosamente, las grandes empresas de tecnología en las que he trabajado suelen pagar la tasa del mercado. No tienen que pagar de más.

Las empresas tecnológicas fallidas están en todo el mapa. Los he visto pagar de más, pero, con mayor frecuencia, los he visto pagar de menos.

Y…

C. Las grandes compañías tecnológicas tienen rigor. El proceso de revisión de diseño en las grandes empresas en las que he trabajado siempre es difícil.

El equipo de diseño que revisa el diseño siempre está bien preparado. Y el diseñador generalmente apreciaba el rigor impuesto.

Las empresas de tecnología que no tienen éxito tienen un proceso de revisión de diseño débil. Y he visto casos en los que no hubo ningún proceso de revisión de diseño.

Y…

D. Las grandes compañías de tecnología tienen equipos que trabajan bien juntos. El trabajo en equipo y la colaboración entre ingenieros de las grandes compañías tecnológicas es, en mi experiencia, realmente bueno.

Los ingenieros aprenden unos de otros y se ayudan regularmente. En otras palabras, hay un ajuste cultural entre los ingenieros.

Más…

E. Las grandes empresas de tecnología nunca lanzan un diseño a menos que se completen todos los elementos de acción de revisión. Este es un gran problema en el mundo de los semiconductores donde puede gastar cientos de miles de dólares a millones de dólares en cada conjunto de máscaras.

Las compañías tecnológicas que no tienen éxito tienen una mentalidad de “placa de pan de silicio”. Los diseños se hacen girar una y otra vez causando demoras y resultados que no cumplen con las especificaciones.

Finalmente…

F. El equipo de ingeniería de una gran compañía tecnológica se preocupa apasionadamente por el éxito de la compañía. A veces los ingenieros solo se preocupan por el trabajo porque es genial.

Y no estoy diciendo que no haya ingenieros en empresas fracasadas a quienes no les importe. Existen.

Sin embargo, el porcentaje de ingenieros realmente apasionados y preocupados por la compañía es mucho mayor en las grandes compañías tecnológicas. Tiene sentido debido a lo altos que son los estándares para la contratación y la importancia que las grandes compañías de tecnología le dan a la cultura.

Para más información, lea: Por qué su cultura de inicio es la clave del éxito de su empresa – Brett J. Fox

Si está comparando Amazon con tiendas de desarrollo de contratos pequeños, es importante darse cuenta de que el crecimiento a menudo degrada las culturas de ingeniería. Por lo tanto, mirar “la empresa X tiene éxito con una mala cultura de ingeniería y la empresa Y no tiene éxito con una buena cultura de ingeniería” es parcial. Tal vez si la empresa Y creciera, su cultura de ingeniería no estaría intacta. Y tal vez la compañía X creció como resultado de su gran cultura de ingeniería. Algunas razones por las cuales el crecimiento puede dañar la cultura son:

  • La contratación rápida baja el listón para los nuevos empleados
  • Los equipos grandes tienen una carga de comunicación exponencialmente mayor
  • El software existente es compatible con un negocio rentable y operativo, por lo que los cambios en los productos conllevan más costos
  • Compuestos de deuda técnica
  • Escala -> extinción de incendios -> desarrolladores descontentos

La excelente ingeniería de software en una compañía aumenta el rendimiento por unidad de tiempo y aumenta el rendimiento por dólar gastado en software en comparación con los equipos de ingeniería que no son estrellas de rock. Dicho esto, esto es similar a la precisión frente a la precisión. El negocio necesita ser preciso. La excelente ingeniería que produce productos que no se venden o peor, que nunca entran en el producto no tiene ningún valor, aparte de rellenar un currículum o golpear los egos.

Los ingenieros son hombres de negocios pobres en general. Lo que es peor es una empresa que promueve ingenieros en todo tipo de puestos. Estas compañías pueden mostrar ganancias y seguir siendo viables, pero tener a las personas adecuadas en los lugares correctos es lo que hace que una buena compañía sea excelente y muy rentable.

Michael Gerber describe la necesidad de tener roles de técnico, gerente e innovador para que una empresa funcione bien. Con demasiada frecuencia, los técnicos dirigen empresas y, por lo tanto, la empresa se ahoga. Hace un muy buen trabajo describiendo esto usando una historia corta en http://www.amazon.com/The-E-Myth

Ok, ese es el lado comercial de las cosas … ¿Cómo se aplica esto a los ingenieros que les gusta su trabajo? Los ingenieros construyen cosas. La mayoría de los ingenieros se preocupan por lo que hacen todo el día. Si la compañía vende muchas de las cosas que construye un ingeniero, el ingeniero está contento. Cuando esto no ocurre, proporcionar la oportunidad de construir algo que tenga este potencial crea el siguiente mejor entorno.

Tuve la oportunidad de representar a nuestro equipo de ingeniería en una sesión de agradecimiento con el gerente general una vez. Para hacerlo, necesitaba entender lo que querían los ingenieros. Decidimos que los ingenieros quieren la satisfacción laboral por encima de todas las cosas. Un ingeniero trabajará por un salario inferior al mercado si le gusta su trabajo. Permanecerán en un trabajo si el mercado no respalda hacer un movimiento, pero cambiarán de trabajo inmediatamente si el mercado se rompe y no están satisfechos con su trabajo.

A algunas compañías no les importa si los ingenieros están contentos, los tratan como productos básicos. En realidad, es inusual que la gerencia comprenda el valor de una ingeniería excelente … a menos que la compañía esté dominada por ingenieros en administración. Muchos ingenieros tienen una piel gruesa sobre ese entorno, pero los desgasta. El resultado es una gran cantidad de quejas … que básicamente afirma al ingeniero que no tiene control sobre la situación y no es responsable de ello. Esto es raramente tóxico, es de esperar que el ingeniero encuentre una salida.

Hay muchos factores que contribuyen a un buen ambiente de trabajo. La conclusión es la equidad, el respeto y el equilibrio. Las mejores compañías tienen a las personas adecuadas haciendo las cosas correctas y esas personas asumen la responsabilidad y, por lo tanto, son responsables. También fomentan un equilibrio razonable entre el trabajo y la vida. A menudo darse cuenta de que trabajar en un día completo y permitir que los ingenieros vivan sus vidas en lugar de esperar que se le de todas las horas de vigilia a la empresa es la esencia del equilibrio. El rendimiento aumenta. Las personas son más amables, duran más en la empresa y viven vidas más largas.

Trabajo en un lugar con una cultura de ingeniería fantástica e influye en el éxito de la empresa, pero no es una fórmula simple para el éxito.

Para mí, ha influido en toda mi relación con la empresa en la que trabajo. Me siento valorado y quiero que la empresa tenga éxito. Me esfuerzo al máximo para que así sea. Ignoro los repetidos intentos continuos de reclutarme de muchas compañías interesantes. Trabajo para construir una comunidad en el trabajo, y quiero que mis compañeros de trabajo amen su trabajo. Me importa cualquier trabajo que haga, pero cuando los superiores han hecho un gran esfuerzo para convertirlo en un excelente lugar para estar, me hace preocuparme mucho más.

Hace que el reclutamiento sea más fácil, porque todos quieren trabajar en un gran ambiente, ¿verdad?

Imagine que cada empleado toma estas decisiones.

¿Cómo podrían esas cosas no hacer que una empresa tenga más éxito? Incluso si lo hicieran, hacen que la vida de todos sea mucho más significativa.

La cultura importa. Período.

Para una empresa de ingeniería de software, una cultura de ingeniería “buena” definitivamente importa, y vale la pena invertir en ella: necesita ser cultivada y cultivada cuidadosamente.

Pero, ¿qué es una “buena” cultura de ingeniería? Ese es el meollo del problema, OMI. Si la cultura de la ingeniería es tan dominante como para abrumar a todas las demás prioridades (p. Ej., Enfoque en el cliente y capacidad de respuesta, estabilidad financiera o bienestar de los empleados), entonces no lo calificaría como una “buena” cultura de ingeniería.

El equilibrio es la clave. Los recursos siempre son escasos, la competencia siempre es dura y el buen talento siempre es difícil de encontrar y mantener. Saber dónde están las compensaciones y permitir que ese conocimiento informe las decisiones comerciales es lo que distingue a una compañía exitosa de ingeniería de software de un aspirante o un potencial o que también ha funcionado.

En términos generales, las empresas pueden encontrar que el camino hacia la eminencia y la prosperidad está ampliamente determinado por tres criterios clave: (1) Enfoque en el cliente (2) Innovación en productos / servicios (3) Eficiencia operativa. La mayoría de las compañías buscan equilibrar los tres, pero algunas compañías excepcionales asignan pesos altamente diferenciales (es decir, priorizan uno de estos altamente sobre los otros dos) y también ganan.

La conclusión es que una buena cultura de ingeniería es “necesaria pero no suficiente”. Una estrategia comercial sólida (respaldada por una capacidad de ejecución) debe apuntar a incorporar todos los demás factores necesarios para tener éxito, sean cuales sean (un tema demasiado vasto para profundizar aquí; ya he resaltado algunos de estos factores críticos factores anteriores).

Espero que esto ayude.

Creo que los detalles del negocio determinan qué pericias se necesitan. Muchas de estas startups “sociales” no necesitan experiencia en aprendizaje automático en sus primeros 12 meses. Solo necesitan a alguien que pueda encontrar y usar un algoritmo de recomendación enlatado. Pueden mejorarlo más tarde, después de haber tenido algunos éxitos. Mientras sus cosas funcionen básicamente, el marketing es más crítico para ellos que la excelencia en ingeniería.

Creo que, en los próximos 36-72 meses, veremos una reversión en la que los problemas de ingeniería más importantes están en la empresa, y no en las nuevas empresas web / móviles. Digo “36-72 meses” porque la empresa va a tardar mucho en darse cuenta de que debe hacerlo para establecer una cultura de ingeniería de primer nivel. (La respuesta es crear una “universidad de honor” o un “centro de excelencia” dentro de la empresa que sea altamente autónoma y aislada de las tonterías cotidianas, pero eso es políticamente muy difícil y las empresas tardarán en implementarlo).

Ahora, todo lo dicho: muchas empresas logran ganar dinero a pesar de la mediocridad en la ingeniería. Me vienen a la mente algunos nombres importantes de las finanzas, aunque gran parte de las finanzas se está volviendo cada vez más técnica con el tiempo. Sin embargo, diría que una empresa que no tiene el uso de ingenieros de élite no necesita desarrollar una cultura de ingeniería sólida.

Sin embargo, una empresa que quiera convertirse en el próximo Google necesitará ingenieros de primer nivel y, por lo tanto, deberá realizar los esfuerzos culturales asociados. Para Google en 2000, no fue suficiente obtener la cobertura y la atención de TechCrunch de los “chicos geniales” que se desperdician en South by Southwest (SXSW). La gente realmente necesitaba cambiar a Google para buscar en la web y hacerlo inconscientemente, y la única forma de lograrlo era resolver un problema altamente técnico. Entonces necesitaban brillantez técnica de una manera que muchas nuevas empresas no necesitan.

Solo para hacer eco de lo que mucha gente ha dicho, una cultura de ingeniería es una buena manera de atraer a grandes ingenieros y ayudar a los ingenieros a construir buenos productos. Esto no necesariamente se traduce en un modelo de negocio exitoso. El mundo está plagado de productos que fueron diseñados y construidos maravillosamente, pero que sufrieron un mal marketing, acuerdos de licencia injustos, etc. Cuanto más se vincula el éxito de su empresa a una buena ingeniería, más importa.
Si su empresa es TicketMaster, entonces probablemente no necesite una buena cultura de ingeniería: su dinero está en exclusividad. Si su negocio es Netflix / Hulu, entonces la cultura de la ingeniería es importante, pero puede verse sofocado por acuerdos de licencia escandalosos. A Amazon le va muy bien porque recuerdan que su negocio proviene de hacer felices a sus clientes. Y a veces eso puede suceder incluso si la ingeniería del software no es sorprendente. Como ex ingeniero allí, me entristeció, pero respeté su dedicación a “si no está roto, entonces solo estás haciendo que los productos sean más caros tratando de arreglarlo”.

Una buena cultura de ingeniería ayuda a influir en prácticas de ingeniería sostenibles y con gestión de riesgos … Pero tiene razón, no existe una correlación absoluta y directa entre la ingeniería y el éxito empresarial.

Esta es una gran pregunta y me estoy preguntando en este momento mientras hago algunas elecciones entre diferentes compañías y opciones. Contexto: un fuerte ingeniero de software de nivel intermedio a superior (potencialmente) que se muda de nuevas empresas en etapa temprana (garajes … o tal vez un mal episodio de Silicon Valley ) a compañías más establecidas (Google, Expedia, X-Team, etc.).

Supongo que podrías llamarme un poco salvaje ya que dejé trabajos cómodos trabajando para compañías que rutinariamente duplicaban año tras año, con perros en el trabajo, beneficios increíbles, salarios decentes, etc. y me fui a trabajar por una tonelada de etapa muy temprana. las startups se quedan sin sótanos, moteles cutres, locales desolados, oficinas itinerantes, etc.

Piensa en tus Bezos en su garaje, Zuckerberg en su dormitorio o los fundadores de Snapchat en la sala de estar de su madre. En mi caso, muchos de ellos fallaron o lucharon por ganar tracción.

Es una perspectiva única que conoce y parece que está preguntando sobre más sobre la cultura en los gigantes establecidos. Aún así, creo que hay algunas lecciones para llevar aquí.

Debo decir que Marc Andreessen de Andreessen-Horowtiz lo expresó mejor: una compañía que tiene éxito y 10x es realmente la intersección de Market + Team y su Execution (Team): Marc Andreessen (Marc Andreessen): eso se traduce en Realmente basado en el contexto. ¿Qué está tratando de lograr su negocio? ¿Cuánta habilidad técnica se requiere para hacer eso?

En general, demostrar rigor, probar, apreciar las dificultades técnicas, escalar (muchas de las personas de negocios / emprendedores en etapa temprana que he conocido no entienden o aprecian completamente qué es el software y por qué es importante a pesar del hecho de que quieren para lanzar una compañía de software … lo identifican con el tipo de salida que verías en una plataforma de diseño basada en la nube … lo que sería increíble si eso fuera todo lo que hay que hacer, * escalar * en particular es ese desagradable caballo oscuro donde la deuda técnica primero se levanta y requiere la iteración 2.0 después de que su Producto mínimo viable se vuelva kaput). Entonces, sí, creo que importa bastante independientemente de qué plataforma o herramienta de software específica estén tratando de construir o usar.

Blog fantasma? Cheque. No necesitas una instalación de Google llena de comida gratis e infinitas hordas de geeks con computadoras portátiles y anteojos para lograrlo. En otras palabras, es mucho más fácil tener una fuerte cultura de ingeniería para http: // SpecificGhostBlogCompany …. – Sin embargo, uno debería tener eso en su lugar si son una empresa de tecnología. La disciplina, la dedicación a las mejores prácticas, las pruebas unitarias, las pruebas de integración, las revisiones de códigos, el aprendizaje continuo, etc. son los componentes de una cultura de ingeniería sólida.

Al igual que cualquier filosofía empresarial: implementar una cultura efectiva de ingeniería en la empresa puede hacerse mejor o peor. Al igual que Agile / SCRUM … sí, ya sabes de lo que estoy hablando. Pero, en general, adoptar ese enfoque y aplicarlo a sí mismo (mejorar gradualmente piezas específicas de ese enfoque, como mejorar repositorios, revisiones de código, etc.) es una excelente manera de lograr esos dos objetivos descritos anteriormente.

los productos bien diseñados sin que alguien los consuma resultan en un fracaso comercial; Los productos mal diseñados que satisfacen una gran necesidad aún resultarán en un gran negocio (a pesar de la mala ingeniería). Wave de Google estaba bien diseñado, pero no se ajustaba a ninguna gran necesidad del consumidor, por lo que finalmente fue eliminado, mientras que el Windows original alrededor de 1986 fue terriblemente diseñado y no era de ninguna manera mejor que DOS, pero aún tuvo éxito debido a la necesidad de algo mejor que un OS basado en texto.

Una vez, alguien escribió: para ser el mejor tienes que ser tu peor jefe. Creo que de acuerdo con cada sistema (interno y externo) el equipo debe definir la mejor cultura. Luego vienen las ganancias y la desviación de la responsabilidad social de cada propietario de un negocio. Sin embargo, para mantener el conocimiento actualizado, la disciplina y la fe ayudarán en cualquier lugar.

Si. En el pasado, trabajé para una empresa que se enfrentaba a nivel corporativo y de planta. Corporate nos estaba empujando hacia un lado y mi supervisor estaba tomando su propia dirección. Teníamos que seguir todas las reglas corporativas y las reglas de nuestro supervisor, pero no cumpliríamos con las reglas del jefe si estuvieran en conflicto.

Esto condujo a un entorno de microgestión, muchas horas extraordinarias no remuneradas para compensar los errores debidos a una capacitación deficiente / escasa / nula sobre cómo hacer nuestro trabajo de manera efectiva, baja moral y una alta tasa de rotación. Recién salía de la universidad con un título de ingeniero que trabajaba para esta compañía y lidiaba con estas frustraciones mientras apenas ganaba lo suficiente para sobrevivir con mi esposa y mi bebé. Disfruté trabajando con todos mis compañeros de trabajo, incluso con mi supervisor, pero la cultura tóxica de la compañía, junto con salarios muy por debajo del promedio, me obligó a irme.