¿Cuáles son las diferencias fundamentales en los desafíos de los juegos de ingeniería de software frente al software empresarial y los sitios web?

Personalmente, aquí están mis observaciones que van desde un pasado que involucró el desarrollo del sistema de archivos / protocolo de red hasta mi trabajo actual de desarrollar juegos sociales casuales. Principalmente trabajé en el back-end del juego en el que trabajo más que en la interfaz, la respuesta habría sido algo diferente si trabajara en el cliente, por lo que quizás mis respuestas serían algo diferentes si trabajara en un cliente del juego.

También calificaré lo que es más divertido desde la perspectiva de los desarrolladores de software (al menos en mi opinión).

Si bien intentaré ser lo más objetivo posible, la respuesta ciertamente conlleva mis propios prejuicios basados ​​en mis propias experiencias, a saber, almacenamiento empresarial versus juegos casuales de Internet.

Ciclos de lanzamiento:
– El software empresarial tiene ciclos de lanzamiento mucho más largos. Si realmente quisiera que una característica realmente significativa se convirtiera en un sistema de archivos, podría tomar entre 6 y 18 meses (si no más) antes de que la característica pasara del concepto al código de envío. Por otro lado, con los juegos casuales, las características hacen que las manos de tus usuarios sean mucho más rápidas.

Ganador: empate. Para las características realmente lentas, el software empresarial puede ser frustrante; Por las características realmente pequeñas, los juegos casuales pueden hacerte sentir que no hiciste nada significativo. Las características empresariales de menor tamaño o las características de juegos de mayor tamaño que lo mantienen ocupado durante períodos más largos, pero no por tanto tiempo, no tiene idea de que alguien las usaría para tocar el acorde personal correcto conmigo entre la salida tangible que sus usuarios pueden usar (después de todo La mejor ventaja de ser ingeniero es que la gente use lo que escribes).

Hay problemas interesantes que resolver en ambas áreas.

Enfoque de confiabilidad

No puede ignorar muchos de los raros casos de esquina en el software empresarial, si las personas pierden datos. Incluso si un error es raro, es lo suficientemente alto para los clientes que compran mucho de usted que hay efectos de onda. Para los juegos casuales, hay un cierto nivel de evaluación de riesgos para aplicar el sentido común cuando se trata de lo que uno puede hacer para hacer felices a sus usuarios dentro de sus limitaciones de recursos.

¿Desarrolla una función que hará felices a un millón de usuarios o pasará la cantidad equivalente de tiempo evitando un error raro para un conjunto muy pequeño de usuarios que solo encontrarían una vez al año?

Para el raro error de caso común, podría ser más apropiado tener un proceso de atención al cliente en el mundo de los juegos para tratar un problema en lugar de preocuparse por la ingeniería excesiva para un caso de esquina.

Aunque para ser justos, algunos sistemas críticos en los juegos, como los pagos, deben ser más conservadores, y algunos sistemas no críticos en el software empresarial, como las GUI, reciben el mismo tratamiento de evaluación de riesgos.

Ganador: software de consumo. Puedes moverte mucho más rápido. La depuración de la corrupción del sistema de archivos fue tan divertida como un viaje a la oficina del dentista.

Relaciones drásticamente diferentes con los clientes.

– El modelo de implementación de software de los juegos sociales casuales es el del software como servicio, en comparación con el software empresarial que está cada vez más orientado a la solución. En el primer caso, sus usuarios no tienen conocimientos tecnológicos y tienen una relación de compra directa con usted (si le compran algo). En el último caso, es el otro extremo: sus usuarios pueden tener conocimientos tecnológicos en un grado variable, pueden no ser directamente responsables.

Ganador: software de consumo. Como dijo Steve Jobs, lo bueno del software de consumo es que su comprador es la persona que debe complacer, y si los hace felices, gana. En el mundo empresarial, a menudo las personas que toman decisiones de compra no son los usuarios finales. Es más probable que las decisiones se vean influenciadas por las relaciones con los proveedores y por quién tenía el mejor slideware / GUI para presentar al equipo de gestión en lugar de quién tenía el producto que más le gustaba al usuario final.

Los juegos en línea proporcionan una ruta de actualización de software mucho más fácil, conveniente y a menudo obligatoria
– La instalación y las actualizaciones de software son mundos aparte. A veces era frustrante desarrollar una nueva característica interesante en el mundo del sistema de archivos, solo para tener este incómodo período de espera de personas que lo intentaban y decidían cuándo lo querían o no. A veces tenía que hacer una copia de seguridad de una característica; de lo contrario, los clientes conservadores no la recogerían, y era molesto hacerlo. Por otro lado, los juegos te obligarán a actualizar el software.

He visto casos de personas que se quejan de errores dentro de los 30 segundos de que una función se active en el terreno de Internet del consumidor, y las características / correcciones de errores que los usuarios no han detectado durante meses en el terreno empresarial.

Ganador: Software como servicio = actualizaciones obligatorias instantáneas automáticas. Los usuarios ganan, los desarrolladores ganan.

El juego necesita UI visuales ingeniosas, el software empresarial necesita GUI básicas, pero además, las CLI son obligatorias

El software empresarial exige interfaces de línea de comandos sólidas, pero puede funcionar con una GUI básica, ya que el objetivo del software es la funcionalidad y muy probablemente la automatización e integración con otros sistemas en lugar del factor pura diversión de un juego.

Ganador: Estoy dividido en este caso, pero si tuviera que elegir uno, diría CLI.

Las CLI son mucho más susceptibles a la automatización y, por otro lado, a las GUI. (Tenga en cuenta que las GUI de los juegos son en realidad mucho más agradables para los usuarios, solo digo desde una perspectiva de ingeniería de software, tiene que pasar más tiempo en la GUI, que es una capa superficial aunque amplia, frente a algo más carnoso). También con las GUI, a menudo hay mucha más iteración, lo que puede requerir más trabajo de desecho, lo que si bien es absolutamente esencial desde el punto de vista de la experiencia del usuario, puede parecer tedioso desde el punto de vista del desarrollador.

Lenguajes de desarrollo: puede variar mucho, aunque por un lado estaba haciendo desarrollo de kernel en C en tierra empresarial, por otro lado, estoy haciendo desarrollo para un motor de juegos en PHP. Esto puede variar drásticamente, y no es justo generalizar aquí por completo, aunque he observado que muchas compañías web de consumidores tienen servidores (al menos el nivel de servidores más orientado al usuario) desarrollados en lenguajes interpretados interpretados de forma dinámica.

Ganador : No hay ganador, ya que no puedo generalizar mi experiencia, pero desde el punto de vista del lenguaje de programación, C es mucho más atractivo personalmente que PHP en términos de mi propio estilo de pensamiento.

Personalmente, desde un punto de vista del lenguaje de programación puro, me gustaba mucho más C, o tal vez expresado de una manera diferente, de alguna manera me desagrada activamente PHP debido a los estilos de programación a menudo desordenados que a veces puede alentar.

Sin embargo, al final del día disfruto mi trabajo ya que el problema que se resuelve es en lo que uno se enfoca en lugar de enredarse en los debates del lenguaje de programación.

Como dice la broma, los programadores reales pueden escribir ensamblados en cualquier lenguaje de programación. 🙂

Crecimiento y progresión profesional:

En el mundo empresarial, a veces uno puede ser un ingeniero exitoso siendo un buen conversador y una vez en la luna azul produciendo una buena idea, pero no realmente siendo productivo como ingeniero a un nivel competitivo en el día a día.
Por otro lado, en el espacio de Internet del consumidor, puede haber casos en los que una cultura de quién puede hackear más puede progresar a pesar de no ser lo que yo clasificaría como un ingeniero disciplinado, bien redondeado y de pleno derecho que trabaja con precisión quirúrgica. (Idealmente, las buenas ideas de IMO no deberían compensar el trabajo duro o viceversa).

De manera bastante tranquilizadora, ambas esferas son buenas para reconocer a los buenos y los malos actores de manera justa tanto en términos de contratación / despido / promociones, y los dos casos que menciono anteriormente en mi propia carrera han sido, con diferencia, la excepción y se han tratado adecuadamente.

Con todo, los juegos casuales de Internet para consumidores y el software empresarial son mundos diferentes, y si tuviera que normalizar mi respuesta para aplicar a todo tipo de empresas, concluiría con esto:

  • Concéntrese en buscar personas inteligentes para trabajar.
  • Concéntrese en trabajar en problemas que le resulten personalmente interesantes.
  • Averigua qué estilo de desarrollo te resulta más atractivo.

Las cosas siempre cambian en términos de tecnología, pero si mantiene esos invariantes, es probable que sea más feliz y tenga más éxito en su conjunto.

Aquí está mi opinión, después de haber trabajado como ingeniero en software empresarial, web y de juegos sociales (hablando en términos generales, por supuesto):

  • El software empresarial deriva la mayor parte de su valor de su estabilidad. La misma razón por la que la gente todavía usa Blackberrys es la razón por la cual las compañías pagan por los servidores de Exchange: más que nada, el servicio debe estar en funcionamiento, no necesariamente bonito y llamativo. Claro, puede haber varios errores e inconvenientes, pero la mayoría de los recursos gastados en la construcción del software se gastan en confiabilidad, no necesariamente haciendo que la función X funcione perfectamente.
  • Las páginas web como categoría generalmente son poco llamativas. Dados los errores que ya existen en el navegador y los problemas de la red (todo el mundo ha visto sitios que no cargan su CSS), se necesita una gran cantidad de esfuerzo para proporcionar cualquier tipo de experiencia estable y sin errores (vea hasta qué punto Google ha tenido que ir a tratar de mantener su búsqueda). En cambio, los sitios web intentan proporcionar innovación en conexiones e interfaz de usuario, pero la iteración rápida, especialmente. en el front-end – significa que no será tan pulido.
  • Los juegos tradicionales de consola / PC, los que tienen ciclos de desarrollo de varios años, tienen el lujo de, bueno, esos muchos años de desarrollo. Además de ser meticulosamente probados (con muchos más niveles de control de calidad que otras industrias de software), los estudios de juegos dedican una buena parte de su tiempo a desarrollar o utilizar su conjunto básico de herramientas, lo que significa que la complejidad del juego es algo abstracta. Otro beneficio de desarrollar las herramientas es que el contenido adicional, que puede parecer una complejidad técnica, puede ser manejado por artistas y creadores en lugar de los desarrolladores directamente.
  • En contraste, los juegos sociales / casuales siguen mucho más el modelo de página web en desarrollo rápido + iteración rápida, lo que significa que son propensos a las mismas caídas (falta de herramientas, muchos errores menores), aunque la complejidad de su juego aún sigue siendo simple Esta categoría muestra que cuando los usuarios sienten pasión por su software (es decir, aman sus juegos), los errores y problemas menores se convierten en grandes dolores de cabeza para los desarrolladores, y los creadores tradicionales de juegos de “consola” han aprendido la lección para establecer estándares rigurosos de control de calidad. .

En resumen, mi experiencia dice que es realmente la cantidad de control de calidad y el tiempo dedicado al desarrollo lo que determina qué tan bien aparece la pieza de software, y que lo que importa en los juegos tradicionales (gráficos, motor de juego) se alinea más estrechamente con lo que un usuario final define como “calidad”. No es que estos otros tipos de ingeniería sean menos desafiantes, sino que sus partes desafiantes pueden no ser inmediatamente evidentes (p. Ej., Escalabilidad), y no tienen a tantas personas arrojando errores en sus caras.