
Recientemente me preguntaron cómo el desarrollo en C # difiere del desarrollo en C ++. Como resultado, la idea nació para explicar el significado de varios términos de TI utilizando el ejemplo del proceso de cultivo de papa.
Imagina que necesitas plantar papas. Tienes muchas formas de resolver este problema.
Puede encontrar una persona con un tractor que vendrá y plantará papas por usted, así como una persona que se asegurará de que una persona con un tractor haya plantado papas correctamente. Vendrán con sus papas.
Esto es outsourcing.
Puede encontrar a la persona que plantará sus papas en su tractor.
Esto es poco personal.
Puede encontrar una persona que venga a tomar medidas del jardín, ofrecer varios modelos de tractores y el modo de funcionamiento óptimo del operador del tractor. En este caso, nadie plantará papas, pero sabrá exactamente cómo hacerlo.
Esto es I + D, o trabajo de investigación.
Puede llamar a su vecina Kolya para plantar papas para una botella de vodka y 2 paquetes de cigarrillos.
Esto es independiente.
Puede llamar a todos sus parientes, vecinos, amigos y plantar papas juntos.
Este es el crowdsourcing.
Puede caminar con amigos, vecinos, parientes y decirle que sabe cómo plantar papas, pero para esto necesita finanzas. Prometes que tan pronto como recolectes las papas, primero estarás seguro de alimentar a todos los que ayudaron.
Esto es crowdfunding.
Puede tomar un arado, varios cubos, papas, el libro "Plantar papas en 21 días" y plantar las papas usted mismo. Pero, si necesita plantar otra variedad de papas, deberá cavar nuevamente el jardín. Riesgo: un vecino puede visitar por la noche y desenterrar sus papas enterradas.
Este es un desarrollo en Wordpress.
Puede tomar una pala y plantar papas en un jardín donde ya hay fertilizantes, agujeros excavados y soportes de flechas, en qué orden plantar papas.
Este es un desarrollo en .NET / C #.
Primero haga una pala desde cero, luego cubetas, estudie la composición del suelo y luego cuente manualmente la cantidad de papas. Luego debes cavar tantos agujeros como papas. A continuación, debe llenar constantemente todos los hoyos con papas. No te saltes los hoyos, ya que te sorprenderás.
Este es el desarrollo de C ++.
Puede acudir al presidente de la granja colectiva y decirle que sabe cómo sembrar papas, pero este año no lo hará, pero el 100% lo hará el año que viene. Y será realmente genial, y la cosecha será 10 veces mayor que la cosecha de un vecino. Por lo tanto, ahora necesita dinero, palas, un tractor, un conductor de tractor (preferiblemente dos), cinco excavadoras y una secretaria.
Este es un lanzamiento inicial frente a un inversor.
Tu bisabuelo plantó papas, tu abuelo plantó papas, tu padre plantó papas. Y usted también continúa plantando papas.
Este es el soporte del producto.
Excavando papas, de vez en cuando desenterras la que plantaron tu padre y tu abuelo.
Este es el código heredado.
A las 8:00 de la mañana, usted y su amigo, padre y vecino van al jardín para discutir el progreso en la siembra de papas. Le dices a todos los presentes que ayer plantaste papas, hoy plantarás papas también y no tienes problemas que te impidan plantar papas, excepto los mosquitos que te pican constantemente. Pero esto no afectará la calidad y la velocidad de la siembra de papas y la cosecha futura. Después de eso, todos toman palas y continúan plantando papas.
Este es un rally scrum.
Plantaste papas. Después de un tiempo, comenzó a germinar. Y en tu patata comenzaron a aparecer escarabajos de Colorado. Comienzas a envenenarlos, recogerlos manualmente, aplastarlos y prenderles fuego. Te las arreglas para destruir la mayoría de ellos, pero después de un tiempo aparecen de nuevo en algunos lugares.
Estas son la depuración de código y la corrección de errores.
Plantaste papas. Tu padre vino al jardín y dijo que las papas estaban torcidas y que olvidaste dejar un lugar para la remolacha. Por lo tanto, debe trasplantar algunas de las papas. Dos días después, cuando terminas de trabajar, llega tu abuelo y dice que la profundidad a la que enterraste las papas no es suficiente, por lo que debes mover las papas enteras 5 cm más abajo. Y él va a tomar cerveza con su vecino Kolya y su padre.
Este es el líder del equipo (Team Lead), el gerente de proyecto (Project Manager) y la refactorización (refactorización).
Quieres ganar algo de dinero. Vas al vecino Kolya y le dices que quieres ayudarlo a plantar papas. Un vecino le pide que muestre la papa más grande que cultivó el año pasado, así como los nombres de otros vecinos a los que ha plantado papas en el pasado. Un vecino también te pregunta por qué viniste a plantar papas específicamente para él, a lo que debes responder que siempre has soñado plantar papas solo en su jardín. Luego, se le pedirá que explique la diferencia entre un rastrillo y una cizalla de jardín, que informe sobre el mejor rastrillo con el que tuvo que trabajar y que también explique en detalle el proceso de preparación del heno y la limpieza del pozo. Y solo después de que la madre de la vecina confirme que "conoce esta cosita", te darán la pala más tonta y comenzarás a plantar papas.
Esta es una entrevista con una empresa de servicios.
Vienes al vecino Kolya y recoges papas en su sótano para plantar en tu jardín. Prometes que cuando tu papa crezca, devolverás una parte o ayudarás a plantarla el próximo año. Por supuesto, no estás haciendo nada, y después de un año vuelves con tu vecino a buscarle papas.
Este es un software de código abierto.
Su pueblo tiene un gran campo donde la gente de la vecindad tira sus papas y, a veces, otras verduras. Alguien tira papas podridas, y alguien, bien. Por lo tanto, decide no plantar sus papas, sino que periódicamente visita el campo para recoger papas allí.
Este es StackOverflow.com.
Toda tu familia está plantando papas en el pueblo. En ese momento, camina por el mercado y le dice a todos que tiene parientes que pueden plantar papas de manera rápida y eficiente que pueden vender en el mismo mercado.
Este es un gerente de ventas que vende su equipo offshore.
Solo quieres plantar papas en privado. Pero cientos de extraños se reunieron en el jardín. No te ayudan a plantar papas, pero monitorean cuidadosamente el proceso. Después de cavar las papas en el hoyo, todos rápidamente comienzan a escribir la cantidad de agujeros, filas y cuántas papas quedan en el mundo en un cuaderno. Luego intercambian sus cuadernos y corren hacia su vecino, quien también está plantando papas. Ninguno de los observadores cree que acabas de plantar papas hasta que reescribes toda la información de otros cuadernos.
Esta es una cadena de bloques.
Está imprimiendo 1,000 fotos de papas en una impresora. Usted vende cada foto a su vecino por 1 dólar, diciendo que plantar papas reales es el siglo pasado y muy pronto nadie necesitará esta papa real, y todos tendrán fotos de la papa. Y dado que será imposible imprimir nuevas fotografías en el futuro, estas fotografías aumentarán de precio. Como todos tienen papas reales y nadie tiene fotos, los vecinos están felices de comprar fotos. Pero para la cena, todavía cocinan papas reales. En este momento, en un pueblo vecino, otras personas venden otras fotos de papas y dicen que solo estas fotos tendrán valor en 10 años.
Esto es bitcoin.
Tienes 10 ha con papas. Empiezas a desenterrarlo. Pero no le interesa la papa entera, sino que solo la papa tiene forma cuadrada, de color verde y similar a Mickey Mouse. Después de haber desenterrado todas las papas, recoja las diez papas encontradas que cumplan con sus criterios y vaya a casa.
Esta es la minería de datos o la búsqueda de conocimiento en grandes conjuntos de datos.
Vives en un pueblo donde nadie ha plantado papas durante 20 años. Pero estás seguro de que en algún lugar está. Por lo tanto, toma una pala y comienza a cavar todo: jardines, senderos, campos, plantaciones e incluso lagos. Después de un tiempo de duro trabajo, tienes suerte y realmente desenterras papas. Después de un tiempo, todo el pueblo comienza a buscar papas, cavando todo en una fila.
Esta es la minería de cryptocoin.
Una papa puede decir mucho sobre quién la crió. Por ejemplo, si un propietario concienzudo la cultivó, que fertilizó la tierra, qué herramientas usó, la cultivó él mismo o tal vez se la robó a un vecino y si su esposa también era hermosa.
Detrás del pueblo hay un lugar donde todos los residentes deben enviar muestras de sus papas para que todos puedan apreciar su trabajo.
Pero con el tiempo, este lugar se convirtió en un vertedero. Alguien se negó a llevar papas, alguien trajo papas podridas y alguien comenzó a decir que tenía papas, pero no lo mostró. Algunas personas instalaron un guardia y comenzaron a tomar dinero de cualquiera que quisiera mirar papas.
Con el tiempo, para encontrar la papa de una persona en particular, debe clasificar las montañas de basura.
Estos son datos abiertos.
Desenterraste muchas papas. El presidente de la granja colectiva se acercó a usted y le emitió un documento que dice cuántas papas ha cavado. Pero para leer este documento, debe volver al presidente de la granja colectiva, porque él es el único en el pueblo que puede leer. Otros vecinos pueden ver el documento, pero nadie entiende lo que está escrito allí.
Esto es hashing (hashing, función hash).
Tienes instrucciones sobre cómo plantar papas. Describe cómo cavar hoyos, qué tan profundos deberían ser, de qué lado necesitas poner las papas en el hoyo.
Empiezas a plantar papas. Después de cada papa enterrada, su padre verifica si todas las instrucciones se siguen correctamente. Y si se viola al menos una instrucción, debe desenterrar las papas, llenar el agujero y comenzar el proceso nuevamente.
Este es un desarrollo basado en pruebas o TDD.
Tus vecinos están cavando papas. Alguien ya ha traído las papas cavadas a la bodega, y alguien desenterró, pero aún no las ha recolectado, y todavía se encuentra en el jardín. Y alguien más ni siquiera comenzó el proceso, y sus papas todavía están en el suelo.
Su tarea es recolectar una copia exacta de todas las papas en su bodega, incluso una que aún no se haya cavado. Además, es importante que firme cada papa: quién la cultivó, en qué jardín particular se cosechó y qué tipo de papa.
Además, debe hacer esto de tal manera que ninguno de los vecinos descubra que hizo una copia exacta de sus papas y la almacenó en su bodega.
Esto es raspado (raspado de datos) o análisis de datos (análisis de datos).
Vienes al jardín y allí se plantan papas. El tamaño óptimo de la papa, la profundidad del hoyo y la velocidad de siembra se calculan en tiempo real en función de indicadores como la velocidad del viento, la humedad, la temperatura, el costo de las papas en el mercado mundial y las existencias de Kartoshka Inc. en la Bolsa de Nueva York.
Esta es la inteligencia artificial.
Necesita plantar papas, pero nadie en su familia sabe cómo hacerlo. Entonces vas a un vecino y lo ves plantar papas. Después de un tiempo, todos están plantando papas como tu vecino.
Esto es aprendizaje automático.
PS
Has desenterrado papas y las has puesto en la bodega, cada variedad por separado. Si por error su papa llega al estante equivocado, su abuelo vendrá corriendo y comenzará a golpearlo con un palo.
Esta es una base de datos relacional.
Una vez que le permitieron no clasificar las papas, simplemente tírelas a la bodega.
Esta es una base de datos NoSql.
No arrojas papas en el sótano, sino en el ático, donde lo colocan en los estantes, parte de él es llevado de regreso al sótano y parte al sótano de tus vecinos.
Este es un almacenamiento de datos en la nube.
¿Tienes papas? Pero en lugar de plantarlo, estás haciendo algo similar a tus papas por varios medios improvisados. No se puede comer, pero la similitud es obvia.
Esta es una impresora 3D.
En el proceso de plantar papas, usted registra las coordenadas GPS de la aldea, su campo y, finalmente, un hoyo específico, obteniendo así un identificador único por el cual puede calcular fácilmente dónde está enterrada una papa en particular.
Esta es la dirección IP.