¿El trabajo diario de un ingeniero de software es principalmente “copiar, pegar, modificar” en grandes empresas tecnológicas como Google?

Puedo responder esto ya que tengo experiencia trabajando con Microsoft y Amazon, comparable a Google.

Un ingeniero de desarrollo de software tiene que realizar muchas más cosas que simplemente copiar y pegar para completar la codificación. Claro, hay una cierta cantidad de copiar, pegar / reutilizar el código que es interno / externo. Pero eso ayuda solo al 20%. La mayor parte de los esfuerzos de un SDE se destina a conocer y superar las prácticas de desarrollo interno. Por ejemplo, una empresa podría tener un marco de desarrollo que se adapte a sus sistemas. Los estándares, patrones y directrices exigirían mucho más que simplemente escribir código sin formato. Además, un SDE tiene que tomar decisiones informadas sobre qué biblioteca llamar, qué enfoque tomar y cuál es el enfoque correcto a corto / largo plazo. Añádase a las complejidades del negocio y los sistemas dependientes, la arquitectura y la integración se vuelven mucho más complejas. Los gigantes del software tienen depósitos de código y sistemas que necesitan integrarse y trabajar juntos. La integración es clave y la comprensión de los aspectos internos, la finalización del mejor enfoque y la capacidad de justificar un enfoque es clave para ser un SDE exitoso.

La respuesta corta es no.

Antes de trabajar en una startup, puedo buscar algunos problemas en Stackoverflow, obtener respuestas y “copiar, pegar, modificar” como la solución. Después de unirme a grandes empresas, quizás solo fui a Stackoverflow una o dos veces el año pasado en busca de algo.

La comunidad de inicio puede tener muchas preguntas similares, pero se aplican a diferentes escenarios, por lo que es factible copiar la solución de otros y modificarla. En las grandes empresas, no es muy común que otras personas trabajen en lo mismo, ni siquiera internamente. Por lo tanto, debe profundizar en la documentación y encontrar su solución original.

Nunca he trabajado para ninguna tienda de software grande (y no tengo ninguna intención real de hacerlo), pero esto me recuerda a una vieja broma en la que un tipo lleva su automóvil al mecánico. El mecánico abre el capó, revisa algunas cosas en el motor y asiente. Entra en una habitación trasera, donde sale con un mazo, que trae de golpe al motor.

Todo funciona y el cliente está extasiado hasta que ve una factura por cinco mil dólares. Cuando se niega a pagar sin un desglose de cómo ese minuto o dos de trabajo llega a miles de dólares, el mecánico explica que golpear el motor solo cuesta un dólar. El resto de la factura es saber dónde golpear el motor.

El hecho de que sepa cómo copiar y pegar no significa que pueda copiar y pegar.

Lo que a menudo se pasa por alto es que copiar y pegar código no ayuda a menos que sepa dónde encontrar el código que hace el trabajo. Y si puede hacerlo más rápido de lo que puede escribirlo desde cero sin que su empleador tenga problemas legales por las licencias, la compañía está obteniendo un mejor retorno de su inversión en usted.

Pero de la misma manera, eso puede ser mucho más difícil que simplemente escribir el código, ya que necesita mucho más conocimiento general y juicio.

No estoy del todo de acuerdo con su declaración, por lo que lo separaré un poco.

Hay algunas cosas que están en juego hoy para un ingeniero de software moderno.

Corrección de errores por desbordamiento de pila (SO)
Este es el comportamiento de ver un problema en un archivo de registro, una API que no funciona de la manera esperada o simplemente algo funky. Lo buscas y encuentras que alguien tiene un problema similar resuelto haciendo algo en Stack Overflow. Hay un conjunto de desarrolladores que simplemente aplicarán sin entender.

Muchas respuestas SO realmente buenas están llenas de ejemplos, referencias y pueden servir como un buen tutorial. Mucha gente echa de menos la parte del tutorial. Como han sugerido otros comentaristas, hay un valor en la comprensión y no solo en la fijación. Necesitas arañar la superficie.

Si SO le da un gancho más rápido por el cual puede obtener esa comprensión, entonces agrega mucho valor. La ruta de clic que toma de la respuesta SO ayuda a mostrar la diferencia entre los ingenieros buenos y los promedio (o malos).

La solución es la integración
Vivimos en una era dorada de software, hemos pasado de tener muy pocas bibliotecas de software públicas a estar casi ahogadas en bibliotecas de software.

Esto realmente causa mucha discordia para muchos ingenieros. Un estribillo común que escucho es

No quiero ser fontanero, quiero ser artista “.

La traducción es

“No quiero tomar software escrito por otra persona, conectarlo a otro software escrito por otra persona. Quiero escribir el código desde cero”.

Una vez más, ver el problema como ingeniero, no tener que escribir otra biblioteca de visualización significa que puede omitir la banalidad de escribir los componentes y centrarse en la expresión de la escritura, pegar y dar forma a la solución.

Por ejemplo, tenemos muchos componentes que conforman un cliente de correo basado en la web. Hay bibliotecas SSL, bibliotecas SMTP, bibliotecas javascript UI, etc. Para armar un cliente de correo “simple”, puede hacerlo con bastante facilidad. Hacer un gran cliente de correo realmente significa juntar estas bibliotecas de formas nuevas e innovadoras.

Claro que puede estar pegando cosas juntas (o “cortar y pegar” como plantea la pregunta), pero en realidad estás mucho más cerca del cliente y tienes un impacto directo en las interacciones B2B o B2C al no escribir todos los detalles y pernos

PERO … Esto lleva a algunos comportamientos interesantes …

Llegas a las limitaciones del software más rápido.

Como no lo estás escribiendo a medida, llegas a los límites más rápido. Esto ha provocado un gran aumento del número de paquetes “también” a medida que las empresas personalizan la solución.

Las cosas no encajan perfectamente

En realidad, esto hace que sea más difícil elegir la colección correcta de herramientas que resuelvan el problema de manera consistente w

Entonces terminamos con grupos de tecnologías

LAMP, MEAN, ELK, etc. son colecciones de tecnologías que ayudan a superar la falta de un ajuste limpio. Estos grupos evolucionarán con el tiempo y pueden superponerse.

Hay una mayor tendencia a reinventar
En las empresas que requieren absolutamente esta biblioteca no muy adecuada, terminas teniendo un valor comercial al inventar una nueva. Esto está claro por compañías como Google, Facebook y Twitter que crean y empujan nuevos marcos para ayudar a resolver sus problemas. Afortunadamente, a medida que crecen, acumulan usuarios de marcos fragmentados y se convierten en marcos comunes.

En última instancia, gran parte del espacio web es realmente una industria naciente que vuelve a crecer gracias a HTML5. No es solo cortar y pegar, sino que puede serlo si así lo desea, sino que se ocupará del costo de mantenimiento y limpieza del producto de no tener un buen ajuste para el código y soluciones mal entendidas para los errores.

Bueno, nunca trabajé para ninguna de las grandes compañías tecnológicas como se mencionó, pero trabajé como desarrollador de software y tengo la intención de estar en el mismo dominio después de mi maestría también. Para responder a su pregunta, puede completar su tarea / módulo en cuestión buscando el código que realizará esa tarea (copiar, pegar y modificar) y unirlo con otro código. Pero hay muchos otros componentes que debe tener en cuenta antes de copiar y pegar cualquier código.

  1. Para completar la tarea, necesita saber cómo hacer eso. ¿Qué tipo de muestra de código necesitas? Necesita saber dentro y fuera de las entradas, salidas esperadas y caliente que se debe lograr. Entonces, el primer paso es tener una comprensión clara de lo que se necesita.
  2. Luego viene, necesita saber dónde encontrar este tipo de código. Necesitas tener tu base de recursos. Y en caso de que no pueda encontrar ningún código existente, solicite ayuda a otros.
  3. Entonces, si encuentra lo que está buscando, debe comprenderlo por completo. Para que pueda modificar el código según el requisito.
  4. Une este código junto con otros componentes o código que copias pegado de otras fuentes y haz que funcione de alguna manera.
  5. Se puede optimizar el código si es necesario.

Entonces, sí, la ingeniería / desarrollo de software implica una gran cantidad de copiar y pegar, pero luego debe comprender todas las cosas mencionadas anteriormente para hacer solo copiar y pegar .

Como hay un dicho, debes ser lo suficientemente inteligente como para engañar.

Aunque nunca he trabajado para grandes empresas tecnológicas como Google, he trabajado como ingeniero de software. El trabajo de un ingeniero de software no es solo escribir un código sino tomar decisiones después de evaluar varias compensaciones (tanto comerciales como técnicas). La mayoría de las veces puede encontrar fácilmente los fragmentos de los códigos en línea (stackoverflow) o en el repositorio de su empresa. Pero como ingeniero de software, debe decidir qué código / tecnología usar y cuál no usar.

Creo que se está pagando a un ingeniero de software para que tome decisiones informadas y de calidad, no solo para escribir código.

Creo que es el trabajo de algunos desarrolladores, a los que Christian Heilmann llama “El desarrollador de stackoverflow completo”. Sucede, pero, ¿debería suceder? Bueno, dejando de lado los problemas morales y legales relacionados con el plagio, es obvio que es una decisión de compensación. Si elige la velocidad (copiar y pegar), lo más probable es que descarte el conocimiento y la calidad, porque a esas personas no les importa si es la mejor respuesta, les importa si apenas la responde. Stackoverflow es un gran recurso para resolver preguntas y encontrar ideas sobre problemas, pero seremos ingenuos al suponer que la solución a un problema en particular que encontramos allí tiene los mismos motivos y explicaciones que requerimos (excluyendo las necesidades del negocio).

Entonces, la respuesta es, es muy probable que sea el trabajo de algunos desarrolladores.

Google ha lanzado muchos proyectos de código abierto, por lo que puede ver si en su mayoría están copiados de otro lugar: Proyectos de código abierto publicados por Google. (Sugerencia: no.)

LA MEJOR APLICACIÓN PARA UNA SOLUCIÓN RÁPIDA A SU PREGUNTA: APILAR EL DESBORDAMIENTO

Esta aplicación es ideal para:

✪ Aplicación única que proporciona respuestas relacionadas con su pregunta desde un sitio web diferente a una sola aplicación.

✪ Cualquiera que quiera buscar una pregunta relacionada con la programación o cualquier otra pregunta puede buscar aquí.

✪ Muestra la respuesta de STACK OVERFLOW.

✪ Puede aplicar filtro a la pregunta de búsqueda.
Tipos de filtro
1. Respuesta aceptada
2. Respuesta más votada

Echa un vistazo a “Respuestas de desbordamiento de pila”
Stack Overflow Answers – Aplicaciones de Android en Google Play

No, los ingenieros de software tienen que crear soluciones a los problemas, desglosarlos en tareas más simples y crear código para que funcione. La única parte que puede copiar / pegar es el código necesario para que esa última parte funcione.

Además, si no sabe lo que está buscando, también podría copiar / pegar Internet.

More Interesting

¿Cómo puede un estudiante que no es de informática obtener un trabajo como ingeniero de software?

¿Es cierto que solo los ingenieros de software con algoritmos y estructuras de datos ganan mucho más que otros dominios?

¿Es mejor conocer muy bien un lenguaje de programación o ser decente en varios idiomas como ingeniero de software?

¿Ha perdido la industria de TI el encanto con el que estaba asociada anteriormente?

Si la característica más importante de Twitter es el tiempo real, ¿por qué optó por Java en lugar de C ++?

Cómo lograr la transición de QA a ingeniero de software

¿Qué quiere decir Quora con 'talento extraordinario de ingeniería de software' en un pasante de ingeniero de software?

¿Es cierto que las personas promedio de MBA, finanzas, administración y consultoría ganan mucho más en Silicon Valley que los ingenieros de software?

¿Cómo es trabajar como ingeniero de software en Morgan Stanley - División de tecnología en Mumbai?

Cómo ganar dinero mientras aprende ingeniería de software

En un equipo, ¿cuál es la mejor manera de evaluar el desempeño de un ingeniero de software específico?

Cómo determinar en qué tipo de ingeniero quieres convertirte

Cómo hacer un software completo en Java o en cualquier otro lenguaje de programación

Ingenieros de software que desarrollan / desarrollaron software que podría costarle la vida a alguien (si se codifica mal) - ¿Cómo se enfrenta a esto?

¿Qué tan importante es el conocimiento del dominio como ingeniero de software?