La naturaleza problemática del desarrollo de software
Cuando comencé con el desarrollo de software, la frase que más escuché fue "El desarrollo de software se trata de resolver problemas". Pero nadie dijo que el desarrollo de software en sí sea de naturaleza problemática.
La ciencia y la ingeniería también son una herramienta para resolver problemas, como el desarrollo de software. Y el objetivo es la resolución de problemas. Pero el desarrollo de software es una herramienta problemática, como un pez que se le escapa de las manos.
Y basado en este pensamiento; Antes de resolver problemas, creo que debemos arreglar el hacha rota o al menos aprender a cortar leña con un hacha rota.
Estos son algunos de los problemas que veo en el desarrollo de software;
- Está cambiando muy rápido, y hay poco que pueda llamar conocimiento permanente.
- Los materiales de aprendizaje son demasiado, demasiado desordenados y mal documentados.
- No es posible proceder intuitivamente, es necesario proceder con un conocimiento preciso.
- No avanza de forma descentralizada, descontrolada y estandarizada.
- Hay demasiadas soluciones complejas para problemas simples.
- Hay tantas tecnologías diferentes que realizan la misma tarea y, al igual que las diferentes religiones que sirven a un Dios, cada una tiene sus propias reglas.
- La información es tanta y dinámica que es imposible mantenerla en la memoria.
- No se detiene con el aprendizaje y nunca te permite sentirte un experto.
- El mayor problema es que todo esto no se ve como un problema y se hace pasar por “así es el desarrollo de software”.
- Tiene una naturaleza cambiante.
- Las fuentes son borrosas
- no intuitivo
- No estandarizado lo suficiente
- innecesariamente complicado
- Demasiada información
- Demasiada información inútil.
Una persona que quiera especializarse en un determinado campo y tema en cualquier rama de la ciencia puede alcanzar la pericia suficiente obteniendo artículos científicos y libros escritos sobre el tema, quedándose en casa durante unos meses, examinando y tomando las notas necesarias.
En el desarrollo de software, las cosas no funcionan de esa manera. La documentación oficial nunca es suficiente. Es necesario proceder recogiendo información incompleta o incorrecta de guías y videos escritos por terceros. Y esto provoca un proceso de aprendizaje irregular y de muy mala calidad. Por tales razones, no es posible que un desarrollador de software se especialice en su propio campo tanto como una persona que se especializa en un campo científico.
E incluso si se especializa, no es permanente. Porque cada pocos meses, sale un nuevo Einstein y propone una nueva teoría. Por alguna razón hay tantos Einsteins en este campo...
Sé que es infantil decir cómo debería ser el desarrollo de software. Como hicieron los antiguos filósofos. Hablaron mucho sobre cómo debería ser el estado.
- Que los filósofos gobiernen los estados.
- Que los niños sean propiedad común de la sociedad.
- No a la guerra.
- No arranques las flores.
- Todos los lenguajes de programación deben combinarse en una sola sintaxis sin perder sus propiedades.
- Las bibliotecas y marcos equivalentes se fusionan en una sola biblioteca y marco sin perder sus propiedades.
- Deje que estos idiomas y bibliotecas individuales sean administrados y estandarizados por una institución oficial.
- Deje que los lingüistas hagan que el lenguaje sea lo más intuitivo posible.
- Deje que los autores reales escriban los documentos.
- Todos los desarrollos en el mundo del software se anuncian desde una sola fuente.
Pero esto es una utopía y no será verdad en el mundo de hoy. Entonces, ¿qué debe hacer el programador? Debe cambiarse a sí mismo oa la industria. Como puedes entender de la utopía que mencioné, la industria tardará mucho en cambiar, quizás no sea posible. Al tener una vida útil limitada, el desarrollador debe evolucionar hacia estas condiciones.
Como dije al principio, el desarrollo de software es un pez resbaladizo. En primer lugar, debe aprender a sostener esta herramienta. Y si queremos o necesitamos hacer este trabajo en nuestra vida limitada. Lo primero que hay que aprender es tener la filosofía, el sistema y los métodos necesarios para mantener esta herramienta.
El mejor consejo que puedo dar sería especializarse en los permanentes. Estos son los que me vienen a la mente;
- idioma en Inglés
- Habilidad de aprender
- Algoritmos y capacidad de resolución de problemas.

![¿Qué es una lista vinculada, de todos modos? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































