¿HealthCare.gov es realmente 500 millones de líneas de código?

Si es así, tiene que ser uno de los trozos de código de mierda más completos, más asquerosos y más completos que jamás se haya escrito.

Quiero decir que el maldito Linux es solo como 10-20 mill. Y están haciendo una aplicación web …

Hasta el punto de que cuestionaría cómo alguien podría escribir código obscenamente inútil y pobre y aún realizar funciones básicas, como cepillarse los dientes, y mucho menos solicitar un trabajo.

¿Medio millón de líneas de código? Dios mío, ¿qué estaban haciendo?

La única forma en que podría imaginar que esto sea cierto es si contrataron literalmente a miles de niños pequeños, los subieron a las montañas de cocaína y un verdadero océano de ponche de frutas para romper sus teclados las 24 horas, los 7 días de la semana, creando cuerdas asombrosamente largas que serán usado en lugar de un generador de números aleatorios.

TL; DR: No, no, jodidamente no.


EDITAR: Después de escribir esto, lo busqué y el número real es de magnitud menor.

No, HealthCare.gov no requiere 500 millones de líneas de código.

No lo compro, a menos que la mayor parte sea código generado por computadora, que no cuenta. También podría ser posible que este “especialista” contara las líneas de código de las bibliotecas de terceros que usaban. Entonces, si Google hizo una gran biblioteca con 1 millón de líneas, y solo necesitaba la función de raíz cuadrada, técnicamente, eso agrega un millón de líneas de código a mi proyecto. Incluso pueden tener que, por algún requisito del gobierno, realizar una auditoría de esos millones de líneas de código …

Pero teniendo en cuenta lo que se supone que debe hacer este sitio, no hay forma de que 500 millones de líneas de código se hayan escrito realmente para esto.

He visto esta historia flotando. Lamentablemente, muchas personas no conocen mejor, por lo que simplemente se burlan de la posibilidad. Como programador de más de 15 años, puedo decirte que esto es literal y técnicamente imposible. Sería un sitio web con más código que Facebook, Windows 8 y Mac OS X combinados. Ningún clúster de servidores en la tierra podría manejar la ejecución de una base de código de ese tamaño y los desafíos técnicos en la administración de esa cantidad de código en cualquier IDE serían insuperables. Parece que alguien ha tomado un montón de líneas de totales de código de muchos lugares diferentes y las ha sumado y afirmó que todo pertenece a un solo sitio. Esa es una posibilidad optimista y obviamente significa que el número no representa un solo sitio en absoluto.

Esta afirmación es increíblemente falsa en el mejor de los casos y una mentira rotunda en el peor.

Si esto es posible. Dependiendo de su definición de “sitio web”.

He trabajado con grandes conjuntos de datos de empresas de Fortune 500, que son lo suficientemente grandes y viejos , que tienden a tener sistemas que se establecieron hace décadas y son demasiado grandes para migrar a sistemas más nuevos. Por lo tanto, tienden a tener un valor de décadas en sus sistemas a medida que las cosas se arreglan, agrega nuevas tablas para nuevos datos y nuevos códigos, etc. Las personas que trabajan con estos datos también tienden a tener muchas cosas en la cabeza, y algunos bonita documentación de la vieja escuela (que puede o no ser inteligible). Por lo tanto, apuesto a que el número de 500 millones incluye el código que debe revisar con cada asegurador para asegurarse de que su sistema está interactuando con el sitio web como se supone que debe hacerlo.

Lo que debe recordar es que Healthcare.gov no es un sitio web que venda un producto o servicio; ni siquiera es un sitio web que vende muchos productos (como Amazon); es un front-end para docenas (quizás cientos) de sitios web que venden docenas de productos complicados y no comercializados con intereses legales muy altos, cada uno de los cuales se almacena y cotiza en función de una variedad de sistemas para cada empresa y, en algunos casos, cada uno estado, cada sistema es viejo y crotchety y utiliza lenguajes que a menudo requieren más líneas de código para interactuar.

Debo tener en cuenta que no he usado Healthcare.gov, pero he usado el equivalente de California, Covered California, que generalmente recibe buenas críticas (lo que haría eco). Cuando ingresa su información (edad, ingresos, etc.), el sitio tiene que interactuar con los sistemas de cada asegurador individual. Esa aseguradora tiene una fórmula complicada ( que puede depender dinámicamente de los datos actuales ), y tiene que escupir una lista de todos los planes que quiere ofrecer, con precios que tengan en cuenta los riesgos actuariales, la cantidad de subsidio (si cualquiera), y el nivel de beneficios de los planes. Hay varios niveles para cada plan, y luego, dependiendo de los ingresos, puede obtener varios niveles de subsidio.

Como la mayoría de estas aseguradoras son bastante antiguas, me imagino que sus sistemas están escritos en lenguajes que no son muy expresivos y, por lo tanto, tienen más líneas de código que las que tendría un sistema moderno.

Agregue a eso el hecho de que la atención médica ha sido durante mucho tiempo un problema estatal Y federal, de modo que, por ejemplo, algunas aseguradoras son contratistas para administrar medicare / medicaid (o, en California, MediCal), además de una aseguradora multiestatal a menudo tiene que tener diferentes sistemas (o al menos un código que garantice que cumplan de diferentes maneras) para cada estado. Ahora hay un nuevo nivel de requisitos a nivel federal, además de todas las viejas regulaciones federales y estatales. Además, los estados siguen entrando y saliendo del sitio federal, por lo que hay muchas cosas en el aire.

¡Y! En algunos casos, si el cálculo es incorrecto de alguna manera y no ofrece un plan, es muy posible que pueda ser demandado por eso y penalizado. Facebook tiene una pequeña fracción de las apuestas legales de las aseguradoras de salud, y tampoco ha tenido décadas para que ese entorno afecte los POE en el lado de los datos.

Por lo tanto, creo que los 500 millones podrían ser una descripción precisa de la escala del sitio, incluso si el número de líneas que deben escribirse es significativamente menor que eso (¡aunque probablemente sea muy alto!). Además, recuerde que debido a que es un contrato gubernamental, y hay todo tipo de regulaciones al respecto, a menudo pueden necesitar escribir un nuevo código para cosas que la mayoría de los sitios pueden reutilizar de terceros, y porque hay tantos contratistas, hay Es probable que haya mucha superposición y un diseño ineficiente ya que cada contratista no funciona bien con los demás.

En Silicon Valley tendemos a olvidar que el gobierno tiene limitaciones muy diferentes a las de la tecnología. Deben moverse con el debido proceso, por lo que deben tener un proceso de contratación que se considere justo (aunque, por supuesto, no siempre es así), de lo contrario se considerará que interfiere en el mercado para apoyar a los aliados. Facebook puede elegir fácilmente a quien quieran en función del ambiente que obtengan o la sensación del equipo, además del precio. El gobierno también tiene que ser responsable. Cuando Twitter estaba cayendo porque no podían escalar, no había audiencias en el Congreso, y los federales no estaban hablando de demandar a los contratistas. Tampoco puedes elegir tus batallas. El gobierno no puede decidir no ingresar al mercado de Georgia porque la regulación es particularmente engorrosa. Y no puede decidir que ignorará a ciertos clientes porque requieren mucho trabajo y no proporcionan muchos ingresos. Y el gobierno generalmente no puede escalar. Necesitan un sistema que funcione para todos al mismo tiempo. Obviamente fallaron en esto, pero es solo un problema porque esperábamos que se implementara a nivel nacional en un calendario bastante ajustado. Facebook comenzó en algunas universidades, se expandió lentamente y tardó un tiempo en nacionalizarse. Podrían hacer las pruebas fácilmente con solo esperar hasta que ocurrieran los problemas y luego solucionarlos antes de pasar a una escala mayor.

Todas las restricciones anteriores tienden a generar una mayor gestión, un desarrollo más fragmentado y una mayor complejidad, todo lo cual, la OMI, conducirá a un código menos conciso.

Soy algo escéptico.

Desafortunadamente, ni BuiltWith ni Netcraft realmente arrojaron demasiada luz sobre las bases del sitio.

Sin embargo, * podría * llegar a la marca de los 500 millones si incluye todo el código variado que se incluye cuando agrega widgets, CDN, análisis / seguimiento / publicidad, bibliotecas javascript, pila de servidores y el código Ellos escribieron para el sitio. Esa es una forma barata y muy estúpida de hacerlo.

También es posible que si lo escribieran con mucho espacio en blanco, llegaran a la marca de 500 millones de líneas. Pero esa también es una forma barata de hacerlo.

Pero seamos honestos aquí: contar líneas de código no es una marca de complejidad, ni es una estimación precisa de qué tan bien diseñado está algo. Esto es:

  función read_cookie (clave)
 {
     resultado var;
     ¿return (result = new RegExp ('(?: ^ |;)' + encodeURIComponent (key) + '= ([^;] *)'). exec (document.cookie))?  (resultado [1]): nulo; 
 } 

Dos líneas de JavaScript. Más complejo de lo que muchas personas normalmente encontrarían, gracias al uso de expresiones regulares. ¿Está bien diseñado? Bueno, afecta prácticamente a todos los escenarios de casos de uso, así que sí. Pero también es, en realidad, solo dos líneas. La mayoría de las implementaciones de una función de JavaScript para leer cookies tienden a ir entre 5 y 20.

Cualquiera que intente impresionarlo con la cantidad de líneas de código escritas es un maldito idiota que no tiene por qué tratar de explicar la informática a nadie.

===

EDITAR: para comparar, para mostrarle lo poco probable que es esto:
Millones de líneas de código: la información es hermosa

No.

La estimación proviene de este artículo del New York Times de 2013:

Según un especialista, el sitio web contiene alrededor de 500 millones de líneas de código de software. En comparación, el sistema informático de un banco grande suele ser aproximadamente un quinto de ese tamaño.

El especialista nunca se nombra, ni se presentan las credenciales del especialista. La estimación es infundada e indefendible; El informe es imprudente. De todos modos, el número se repitió ampliamente y sin pensar: “El New York Times informa que …”.

Un análisis más desapasionado en No, HealthCare.gov no requiere 500 millones de líneas de código cita a un presunto miembro del equipo de healthcare.gov que declaró en un hilo de reddit que el tamaño del código tiene 3,7 millones de líneas, con un desglose proporcionado por idioma. Si hace clic en la discusión original de reddit, verá que un millón de esos 3.7 millones son comentarios. Desde entonces, la publicación original de reddit se ha eliminado, pero los números proporcionados son más cercanos a la verdad que la estimación astronómica de 500 millones.

Otro experto no identificado citado en The Sheer Size Of Healthcare.gov, Ctd dijo:

Casi todos los desarrolladores […] se golpean la cabeza contra el teclado en este momento. Ese número de “500 millones” es pura mierda de alguien que no [sic] entiende nuestro oficio.

Que es sobre mi reacción a la reclamación de 500 millones de líneas de código.

Eso es más que ridículo. El sistema operativo Windows tiene 30-50 millones de líneas de código y es mucho más complejo.

Si tomó todas las páginas HTML, archivos CSS y todas las bibliotecas de back-end generadas automáticamente, incluidas las repeticiones, los códigos API y los archivos autogenerados, etc., tal vez TAMBIÉN se esté acercando a eso, pero supongo que son al menos 1, si no 2 pedidos de magnitud fuera.

Este consultor para el NYT no tiene idea de lo que están hablando y debe ignorarse por completo como un tema ignorante.

Tal vez, dependiendo de lo que cuentes.

Si solo estás hablando del sitio web, casi seguro que no.

Si comienza a incluir:

  • todas las cosas de back-end, incluidas las bases de datos y los sistemas operativos (incluidas las cosas de terceros como Oracle)
  • todos los sistemas que están vinculados al sitio web (ya sabes, todos esos sistemas de compañías de seguros), y todo el código de interfaz en ambos extremos requerido para unir todo
  • toda la red y sistemas / código de gestión de red
  • tal vez todas las herramientas involucradas en la construcción / mantenimiento de los sistemas

Entonces, bien podría estar en ese rango.

Ahora, si está hablando del código OBJETO para todo lo anterior, entonces seguro.

Por otro lado, si solo estamos hablando de un nuevo código, específicamente escrito para admitir ACA, entonces el número debe ser mucho, mucho más bajo. Algún “experto” simplemente le estaba hablando a un periodista, y el periodista lo estaba asimilando.

Dejando de lado el hecho de que las líneas de código son una medida horrible para el software, 500 millones de líneas son un poco exageradas.

A modo de comparación, vea el último recuento que pude encontrar en Quora sobre cuántas líneas de código hay en Facebook (respuesta del usuario de Quora a ¿Cuántas líneas de código es Facebook?), Y eso incluye archivos generados y archivos de terceros, incluso archivos binarios. – Todo el repositorio de Git.

Sin embargo, si se trata de un recuento exacto, me da lástima la gente que trabaja en él, tiene que ser un desastre trabajar con él.

Creo que alguien agregó un par de ceros. La información anecdótica indica que hay alrededor de 5 millones de líneas de código. Sin desglose de dónde se concentra ese código.

Ese es un número bastante ridículo. Windows 8 solo tiene alrededor de 50 millones de líneas de código. Si este sitio tiene 5 millones de líneas de código, sería bastante impactante.

Me recuerda al centro de datos de la NSA que iba a almacenar un yottabyte de datos …

La semana pasada, un ex desarrollador de HealthCare.gov dijo que, en el mejor de los casos, está entre 5 y 15 m LOC:
http://www.reddit.com/r/dataisbe

Bueno, no estoy seguro de lo que solían contar las líneas de código, pero aquí es por qué creo que obtuvimos los 500 millones de:

1- Si ve la fuente en la página de inicio de HealthCare.org, verá que son aproximadamente 2000 “líneas de código”, incluidos todos los espacios en blanco, que pasan rápidamente por otras páginas, se da cuenta de que cada página es como un promedio de alrededor de 2k Líneas (incluido el espacio en blanco).

2- Si busca en las páginas que están indexadas en Google, encontrará que hay 1420 resultados, por lo que 2000 líneas por página X 1420 páginas = 2,84 millones de líneas solo de las páginas estáticas indexadas (lo cual es ridículo por decir lo menos) .

Esto me lleva a creer que todas sus bibliotecas y páginas internas sufren de “líneas de código” sobredimensionadas, con espacios en blanco.

Y por el sistema que utilizaron para contar las líneas de código, no parecía identificar que se trata simplemente de líneas en blanco, por lo tanto, 500 millones de líneas de código.

Sin embargo, esta es una suposición, pero creo que parece ser justa.

Cualquier aplicación que use una sola base de datos Oracle puede afirmar que tiene 500 millones de líneas de código y solo puede ser una ligera exageración.