Artículo no técnico sobre artículos técnicos.

A menudo me dicen: ¿dónde están los artículos técnicos? ¿Por qué está escribiendo todo tipo de basura sobre gerentes, directores, relaciones con el personal, disputas corporativas, quejándose de la falta de sentido de nuestro trabajo y en general? ¡Queremos artículos técnicos!

Sinceramente, no entiendo qué son los "artículos técnicos". Entiendo qué es una "tarea" y qué es una "solución". También entiendo que la solución al mismo problema se puede encontrar en diferentes niveles, desde el "hierro" hasta el filosófico. Qué nivel es más correcto, no lo sé.

Para entender, necesitas tu ayuda. Tengo un excelente ejemplo de principio a fin de resolver un problema en un nivel diferente. Te advierto de inmediato: un ejemplo de la esfera de 1C, pero tus hermosos cerebros tendrán un lugar para aplicar. Intentemos encontrar un lugar para un "artículo técnico" en esta cadena.

Un ejemplo es un colectivo de varias historias reales. Quiero decir, se repitió varias veces, con diferentes actores, encendiendo / apagando diferentes escenarios, pero la esencia es la misma. Perseguido.

situación inicial


La situación inicial es simple: el cálculo del costo de 1C no se completa.

Para aquellos que están lejos del mundo amarillo, lo explicaré. El cálculo de costos es aproximadamente la operación más intensiva en recursos que ocurre en 1C. Se lleva a cabo a fines de mes, a veces, a la antigua usanza, se llama "cierre del mes".

Dentro de un mes, el llamado "Documentos primarios": la recepción de materiales, transferencias entre almacenes, lanzamientos de productos, cancelaciones del almacén a producción, ajustes, recepción de costos, distribución, montaje, etc.

La esencia de todos los documentos es la misma: algo está fluyendo en alguna parte. De almacén a almacén, de almacén a producción, de producción a almacén, de un taller a otro, de una nomenclatura a otra. En términos generales, hay un cambio en el estado de los inventarios y los costos. No había nada, se convirtió en material. Había material, se convirtió en un costo. Fue un costo, se convirtió en un producto. Era producción, se convirtió en material otra vez. Fueron productos, se convirtieron en ingresos. Era electricidad, se convirtió en un costo. Era un costo, incluido en el costo de producción. Solo un cambio en el estado de la esencia, si razona de manera abstracta.

Todo se registra dentro de un mes en una tabla grande, que luego se procesa mediante el cálculo del costo. Tiene dos tareas clave: asignar costos y ajustar costos. Distribuya los costos: es como incluir en el costo de producción todo lo que se gastó en este tema, como materiales, electricidad, salarios, etc. (antes de calcular el costo, estas eran diferentes entradas de la tabla, se liberan por separado, los costos por separado). Bueno, ajustar el costo es decidir que SLAE lleve el costo a la estrategia de cancelación deseada (promedio o FIFO).

Entonces, supongamos que toda esta basura no funciona. Comenzamos, esperamos un día, luego cae. Se sabe que el cálculo se realiza en un servidor que ejecuta Windows Server 2012, en un proceso rphost.exe, DBMS - MS SQL.

Nivel ambiental


El primer nivel es puramente patsansky. No queremos saber nada sobre ningún 1C, solo miramos el medio ambiente. ¿Qué nos importa, en general, lo que este desafortunado 1C hace allí? Ya sabemos que ella hace todo mal, pero de alguna manera podemos hacerlo sin el mocoso.

El campo para la experimentación es enorme. Así como material de verdad, sin citas, artículos técnicos.

Comencemos con la elección del hardware del servidor. Después de todo, probablemente fue capturado por 1Sniks, quienes no petrifican en esto. Escribiremos sobre el efecto de la cantidad de RAM en el rendimiento de operaciones pesadas de 1C, examinaremos los discos duros de diferentes diseños físicos, veremos qué es más importante: la cantidad de procesadores o núcleos. En la práctica real, también pediremos un nuevo servidor. Especialmente dados los retrocesos que pagan los proveedores de servidores.

A continuación, echemos un vistazo al sistema operativo. ¿No es bueno mantener servidores decentes en Windows? Además, 1C ha sido capaz de trabajar durante mucho tiempo bajo Linux. Y, finalmente, la agrupación es compatible con 1C, y nosotros, formalmente, podemos suministrar dos o más servidores, incluso bajo diferentes sistemas operativos. Aquí habrá una madre para el artículo.

Bueno y, por supuesto, no pasaremos por alto un DBMS. ¿Por qué demonios todos se encontraron con este MS SQL? Al menos, echemos un vistazo a Postgre, que 1C ha sido compatible durante aproximadamente 100 años, incluso en Windows. No solo probaremos otro DBMS, sino que también lo ajustaremos para que el ruido permanezca. Es cierto que ya se han escrito muchos artículos sobre este tema, incluidos La compañía 1C en sí, pero sin duda encontraremos qué decir en nuestro artículo técnico. Después de todo, es interesante leer las experiencias de las personas, no los manuales.

¿Resolveremos el problema? No excluidos. La práctica muestra que se resuelven muchos problemas a este nivel, especialmente cuando los problemas con el cálculo del costo, la primera aparición, es decir en ese momento, cuando todos los ajustes del sistema operativo y el DBMS estaban predeterminados.

Pero nuestra historia es un poco diferente. Todas las posibilidades ya se han agotado, las mejores mentes de la ciudad hurgaron en el servidor; además, compraron hace tres meses. Luego, inmediatamente después del lanzamiento, el servidor rompió el cálculo del costo en solo 16 horas. Y ahora, por desgracia, por alguna razón, y por un día no puede hacer frente.

Tienes que subir un nivel.

Nivel 1C


Bien, suelta el hierro, sube al programa. Una medición de rendimiento simple muestra que 1C se congela y se bloquea al realizar una operación de asignación de costos.

Allí, de hecho, todo es simple. Hay una tabla en la que a la hora de calcular 8 millones de registros. En términos generales, la mitad de ellos son costos, la segunda mitad es la base de distribución. Aquellos. necesitas tomar la primera mitad y apresurarte a la segunda.

Nos sentamos y pensamos: ¿dónde hay que caer, cariño? Búsqueda banal, aunque acompañada de consultas constantes a la base de datos con el almacenamiento de resultados intermedios en tablas temporales. Bueno, tal vez el problema es que el resultado no se puede registrar, es decir agregue hasta 8 millones de registros.

Nada complicado, pero cayendo. Al proceso rphost.exe le falta algo. Entonces, pare ... ¿Y por qué es una operación tan simple y, en general, no particularmente sensible al contexto, un solo proceso? ¿Quién impide dividir la tabla por la mitad, o incluso en tres partes, y ejecutar en paralelo? Después de todo, 1C es bastante capaz de iniciar al menos 20 procesos, pero por alguna razón no lo hace. ¿Entonces por qué no? O lo hace?

Sí, descubrimos que nuestra versión de 1C está un poco desactualizada, y en una paralelización más moderna se realiza directamente a la configuración: una persona puede saber de antemano cuántos hilos paralelos de estos mismos "cálculos" se pueden realizar. ¡Lío!

Agregamos un código simple que corta la tabla en el número requerido de partes y las ejecuta en paralelo. Permítame recordarle que la distribución de algunos costos no depende de la distribución de otros, en el marco de una iteración.

¡Yo! Ganado! Cálculo fallido del costo! A veces, sin embargo, hay bloqueos para escribir; no importa, adjuntamos un parche en forma de caché de registros con un bloqueo controlado para su posterior ubicación en la tabla principal. ¡La belleza! ¡Trabajos!

U, ¡cuántos artículos se pueden escribir aquí! ¡Técnico! Es cierto, con un poco de color amarillo. Aunque, por otro lado, ¿dónde no desapareció el nuestro? ¿Qué, en su entorno de desarrollo y en sus proyectos, no tuvo que dividir el registro de millones de líneas en pedazos para que el DBMS no muriera?

Todo, una victoria, parece. Pero algo está royendo ... El costo fue calculado, pero aún así, demasiado largo. El mismo día, simplemente dejó de caer: el volumen de registros no ha desaparecido, simplemente los escribimos en pedazos, pseudo-en paralelo.

Arrastrarse más alto.

Nivel de ajuste técnico 1C


Analizando el algoritmo, entendemos que el problema no está solo en el número de registros, sino también en su procesamiento múltiple. Teóricamente, entendemos que para distribuir 4 millones de registros a otros 4 millones, es suficiente completar una consulta en la que coincidan las filas de acuerdo con los analistas necesarios y luego registrar el resultado.

Y aquí miramos: demonios, y hay un ciclo ... Un ciclo que se ejecuta de acuerdo con una tabla de 4 millones de filas. Y hay otro ciclo en él, con una interrupción incondicional de acuerdo con alguna condición extraña. Y el cuerpo del bucle anidado se ejecuta mucho más de 4 millones de veces. Tortita…

Hurgando, encontramos la tercera tabla, que almacena la configuración de distribución. En términos generales, se encuentra la comparación de los primeros 4 millones de registros con el segundo. Pero todo está organizado allí sin ambigüedades, sino con un estrechamiento gradual del filtro. Al principio se escribió como "todos los costos con una visión de producción general figurativamente estúpida para el lanzamiento", luego "Pero este artículo también es para el lanzamiento", luego "pero este artículo es sudor para este departamento también es para el lanzamiento", luego se especifica al grupo de artículos contabilidad, etc.

Lo peor es que el algoritmo no determina la configuración de distribución en una pasada, sino que lo hace cíclicamente, acercándose gradualmente a la meta. A pesar de que el resultado es, al final, el mismo. Y, no, esto no es lo peor: hay 10 mil registros en esta tabla. Conducido explícitamente por las manos.

Recordamos cómo trabajan los contadores con esta configuración. Los programadores han conducido 4 filas en la tabla, con el filtro más ancho. Y los contadores tenían algo "no cerrado": se detuvieron y especificaron un filtro para un artículo específico y un departamento específico. Y así lo hicieron 10 mil veces, a lo largo de los años.

Como resultado, nuestros 4 millones de registros pasan por los otros 4 millones de registros varias veces. Bueno, nos animamos y vamos al departamento de contabilidad. No para la contadora jefe; probablemente no esté al tanto de esta situación. Comencemos con el subjefe.

Venimos, explicamos el significado de esta tabla de ajuste y le decimos (nuevamente) cómo usarla. Estamos convencidos de que todo estará bien. Establecimos una base de prueba, realizamos un experimento, después de haber batido 10 mil registros, y listo, ¡el cálculo del costo tomó solo 8 horas!

Uh, gay! ¡Qué artículo tan genial puedes escribir ahora! ¿Será solo técnico? Bueno, no sé ... Para ciertas comunidades amarillas, probablemente sí. Bien, que sea técnico y metodológico. Al mismo tiempo, agregue un par de párrafos sobre qué contadores estúpidos.

Y aquí viene la idea: ya que logré entrar en contabilidad, ¿quizás algo más para elegir? Por ejemplo, para comprender por qué hay 8 millones de entradas en la tabla y, lo que es más importante, por qué hay más y más cada mes.

Estamos tratando de subir un nivel más alto.

Nivel contable


Para nosotros, los programadores, está claro que el número de filas en una tabla está determinado por el ancho de la analítica utilizada y no por el volumen de salida. Además, sabemos que la producción de una empresa nativa, como su línea de productos, está creciendo mucho más lentamente que el tamaño de nuestra tabla.

Por ejemplo, si nuestra división fuera la única analítica del problema, entonces el número de filas en la tabla no sería más de 2 * el número de divisiones diferentes (la mitad para liberar, la mitad para costos). Estas divisiones están con nosotros, Dios no lo quiera, cien.

Si agregamos, por ejemplo, el "ítem de costo" analítico, entonces el número de registros será (Número de unidades) * (Número de artículos) + (Número de unidades), porque la segunda mitad de la tabla (publicación) no contiene análisis de artículos (como regla, si no hay transferencia producto semiacabado de unidad a unidad sin el uso de un almacén). Lo peor de esta ecuación es *, es decir multiplicación. 100 divisiones y 100 artículos, ya 10 mil registros.

Luego multiplicamos por el número de nomenclaturas, características, pedidos de producción, grupos de nomenclatura, maldita sea ... Entonces, está ganando 8 millones. ¿

O no está ganando? Contamos con la calculadora, no, no una fig. Más precisamente, incluso sin una calculadora, está claro que el número de registros no debería crecer tan rápido, de mes a mes.

Ampliamos el informe sobre saldos en el contexto de todos los analistas utilizados, y ¡bah! - Bueno, perro, estúpidamente no cierra! Permítanme explicar lo que significa "cerrar": esto es cuando llegó el saldo de reclutamiento del analista, y al final del mes se fue. Pero no se cierra, cuando no se ha ido. Por lo tanto, el trabajo en progreso se forma, en otras palabras, el trabajo en progreso.

Y no se cierra exactamente de acuerdo con un análisis: un pedido de producción. Para cada lote de productos, se configura un documento determinado que separa este lote de tipo del resto. Se le envían los costos (primera mitad de la tabla), la salida se refleja en ella (segunda mitad de la tabla) y todo debe cerrarse. Pero no se cierra.

Diputado El contador principal, que está sentado cerca, también está en estado de shock. No sabía que no se estaba cerrando, ¡eso es ahtung! Escudriñando, descubriendo: ellos, contadores, solo miran los informes sin tener en cuenta las órdenes. Todo está cerrado sin este análisis, pero no con él.

Y estas colas de caballo, cantidades no cerradas para pedidos de producción, también se incluyen en 8 millones de líneas, estos son los saldos entrantes del comienzo del mes que deben cerrarse en el mes actual (en principio, esto sucede si la producción dura varios meses, pero no es así) nuestro caso). El problema es que no se pueden cerrar con nosotros, porque ya no habrá ninguna liberación en los pedidos del último mes, y los costos se ven obligados a tener una existencia miserable durante otro millón de años, aumentando constantemente el número de entradas en la tabla de distribución.

Corremos a nuestra base de prueba, quitamos todas las colas y - ¡comemos tu pierna! - ¡los registros en el cálculo se convierten en 1 millón! ¡El cálculo ya cabe en 2 horas!

Y ya tenemos el entusiasmo de un investigador, después de todo, ¡tal material para un artículo técnico está picoteando! Eliminamos las colas, y este mes el análisis de pedidos todavía está presente. Bien, Che, la base de pruebas: cortamos los pedidos en general, y la tabla se derrumba a 400 mil registros.

El cálculo es de 1 hora. 1 hora, Karl! ¡Hemos reducido el tiempo de cálculo en 24 veces! Bueno, ahora escribiremos un artículo tachen, casi técnico, que descargarás.

Es cierto que queda por explicarle al jefe de contabilidad que el análisis de pedidos es superfluo. Rodamos también gateamos hasta el segundo piso.

Nivel de estrategia contable


Nos consolamos con la esperanza de que todo salga bien. Al final, hemos resuelto el problema de calcular el costo de producción, ¡y cómo! Suponemos que el contador principal no está al tanto de la configuración de los detalles de cálculo, y alguien simplemente incluyó el análisis de pedidos una vez, que sea así.

Pero no. Tan pronto como el contador principal escuchó "apagar el análisis de pedidos", se enfureció por completo. Comencé a conducir sobre la increíble necesidad de que la compañía tenga una imagen completa del precio de costo y, lo que es más importante, compare los números precisamente en el contexto de los pedidos, en el marco de una contraparte, y mensualmente.

Recopilamos un cofre lleno de aire y hacemos la pregunta principal: ¿es esto, Marivanna, alguna vez has hecho ese análisis? ¿Por libre voluntad o por orden de otras unidades?

Bueno, durante unos minutos escuchamos una variedad de adjetivos y sustantivos, principalmente derivados de solo cuatro palabras de los grandes y poderosos. Recordar mentalmente las direcciones de los sitios con vacantes. Pero decidimos ir al final.

No estamos dejando que el contador principal termine, estamos diciendo que todo está bien, pero quiero encontrar la fuente de esta demanda. El contador principal se asusta y lo envía al director financiero, quien es su jefe, y a los economistas.

Esos tipos son más simples, y el alcohol en la sangre ya es suficiente para conversar con ellos. Mientras vamos, estamos pensando: ¿qué puedes escribir sobre esta aventura? Nada técnico, obviamente. Aunque el problema es visible a simple vista. Bueno, es decir Está claro que en todos los niveles por debajo estábamos resolviendo un problema inexistente.

Nivel de juego corporativo


Y buscador es nuestro amigo. Ayudamos mucho con esta divertida tía con automatización. Por lo tanto, preguntamos en la frente: ¿qué hay para la contabilidad que mantiene registros con un análisis tan amplio? Sí, que mierda.

Mi tía se aferra inmediatamente a la palabra "mierda": ¿qué es una mierda, dónde está la mierda, es realmente una mierda? Bueno, sí, decimos mierda, realmente mierda. Por eso, el departamento de TI no duerme muchas noches, garabatea un montón de artículos técnicos y generalmente se quema.

La tía toma el toro por los cuernos y pide que lo diga todo por escrito: qué está mal, por qué y cómo llegué a esto. De acuerdo, prometemos decirlo. Pero, de nuevo, vamos al final. Lo que, decimos, el contador principal se dedica a esa basura, además, bajo la apariencia de un buscador, es decir, eres tia

Recibimos una respuesta en la frente y dejamos que te atormente, reptil. Nefig era inteligente en las reuniones. Diciendo que no hay nada más importante que la contabilidad. Afirmar que está mal subordinar al contador principal al buscador. No tiene sentido el hecho de que el contador principal es la segunda persona en la empresa, después del director.

¿Y por qué, por ejemplo, simplemente no la despidas? Pero no puedes, dice tía. Bueno, parecerá la eliminación de lo desagradable, como, mi tía cometió un error e inmediatamente se fue sin trabajo. Una campana desagradable será para el director. Comenzará a profundizar en cómo alguien lleva registros.

Y ahora, una pintura al óleo. El contador principal no hace frente a la contabilidad. Pon la base de lado. Entonces, si no fuera útil para los negocios, no organizaría una contabilidad de costos normal para los pedidos.

En el medio, preguntamos, y usted, tía, ¿qué pasa con esta contabilidad de pedidos, e incluso en contabilidad? Responde en la frente: no me cavó en ninguna parte. Ni los economistas ni los financieros utilizan cifras contables. Solo documentos primarios.

Uh, dilo? ¿Y de dónde sacas el precio de costo? Bueno, no puedes contar el beneficio sin él.

Sami, dice, consideramos el costo. Usando el método de efectivo, recolectamos los costos de material a precios de compra y los distribuimos en exel, usando el método de caldera, usando las tasas de consumo de material, ajustadas al hecho solo por cantidades.

Porque, querida, nuestra tarea en términos de costos es entregarle al director una hoja A4 llamada “Declaración de pérdidas y ganancias”, donde todos los costos se dividen en diez grupos que están pobremente relacionados con los ítems de contabilidad de costos.

En términos generales, todo lo que hace la contabilidad no es necesario para nadie, excepto la contabilidad. Y la contabilidad, la contabilidad de costos es necesaria en un análisis muy corto, incluso el que está presente en las cuentas de contabilidad. Y allí, Dios no lo quiera, si se escriben tres analistas.

Salimos de la oficina del buscador con sentimientos encontrados. Por un lado, parece que descubrieron todo: no hay necesidad de resolver el problema en absoluto, y el problema de calcular el precio de costo desaparecerá para siempre. Por otro lado, fueron atraídos a los juegos corporativos.

Ahora como. Escribirás una hoja de papel sobre el contador principal; te convertirás en un enemigo para siempre. Si no escribe, perderá la amistad con el buscador y no se llevará bien con los sordos. Ella no lo creería, si contaras una historia como "Me pidieron que goteara sobre ti, pero me negué".

Y no hay nada sobre lo que escribir un artículo técnico. Generalmente. Sin embargo, ya comprende que resolver todos los problemas en los niveles inferiores no es inútil, es dañino. Después de todo, todo el esfuerzo y el dinero (¿recuerda el nuevo servidor recientemente comprado?) No fue en beneficio de la empresa, sino en beneficio de una tía que es amiga de otra.

El ambiente es sucio, y luego el director me llama la atención. Más precisamente, llamamos su atención. El tipo está muy desgastado, ve mal humor e inmediatamente llama a su oficina.

Nos elevamos a un nivel superior.

Nivel de aves


Decidimos contarlo todo. De arriba a abajo, sin adornos. Sobre todos No hay nada que perder.

Y sobre el servidor por 1 millón de rublos, que ahora no es necesario. Y sobre el personal inflado de contadores, que es necesario para mantener una contabilidad tan compleja, que, como resultó, nadie necesita. Y sobre el personal inflado de programadores, que solo se necesita para acompañar a la contabilidad imbécil. Y sobre tía-buscador, que juega sus juegos a expensas de la empresa.

El director escucha atentamente, a veces haciendo preguntas de naturaleza técnica y metodológica. Él impregna directamente así, sobre la marcha se da cuenta de que una vez trabajó como programador.

Y escribe todos los números en una hoja de papel.

Derramamos toda el alma del programador. Sobre el hecho de que nacimos para resolver problemas técnicos y no para participar en juegos corporativos. Sobre el hecho de que el nivel técnico de la solución debería ser el último, cuando todos los demás métodos se hayan agotado: organizacional, metodológico, estratégico y qué más hay. Sobre la naturaleza creativa, el pensamiento abstracto, los introvertidos y otros cuentos de programación.

Y en el camino, pensamos que sería un artículo genial. Simplemente no técnico. ¿Y dónde colocarlo? También un problema ¿Pretender en un artículo que todo se decidió a nivel técnico y limitado a ello? Pero no es verdad. Pero si dices que has contactado con el director, no lo creerán. El lugar del programador en la fábrica está cerca del cubo, disculpe.

El director escucha cortésmente hasta el final, luego dibuja una línea debajo de sus números y dice: amigo, usted ha revelado un problema que me cuesta 1 millón de rublos al mes. Muchas gracias. Justo así, sin un signo de exclamación.

Ahora, dice, será así. Comenzamos el proyecto de ordenar la contabilidad. Serás el líder. Estoy despidiendo a los CIO, estás tomando su lugar. Le indicaré al servicio de seguridad que verifique si recibió sobornos por la compra de equipos.

Espero un plan claro de contabilidad, contabilidad y gestión. Para que todo sea hermoso e interconectado, pero solo en el análisis correcto. Implementará este plan. Cualquier cambio en la contabilidad ahora se implementará solo después de su aprobación.

En términos de contabilidad debe ser el cálculo del número requerido de especialistas. Extra: dispararemos sin manchar los mocos. Piense de inmediato en cómo puede automatizar las actividades de las restantes; tal vez haya demasiadas, si se acerca sabiamente.

No seas arrogante, hombre. Estás trabajando para mí ahora. Serán mis ojos y mi cerebro técnico. No hay juegos, ni conmigo ni con nadie más.

Nos vamos, con piernas tambaleantes, y nos arrastramos a nuestro sótano. La cabeza está girando, ya sea por la felicidad o por el miedo. Quiero escapar, como de un sueño extraño, solo para volver a mi realidad habitual. ¿Es realmente así?

No, no lo hace. No lo creerán. Y no escribirás un artículo al respecto. Picotearán, picotearán y enviarán artículos a Cosmopolitan para escribir sobre la Cenicienta de TI. Y no lo habría creído. Más precisamente, diría que no creo, solo para no admitir que tengo miedo de salir de mi agujero y preguntar, "¿debería joder esta mierda?" Aunque a un nivel técnico brillante.

En realidad, la pregunta


¿Dónde está el nivel técnico aquí? ¿Qué es interesante y útil sobre escribir y leer artículos técnicos? Aquí hay un ejemplo directo.

All Articles