¿Qué pensamiento paso a paso debe seguir un programador para codificar?

A2A

Hay un par de sencillos pasos que debe seguir un programador para codificar:

  1. Aprende a codificar en primer lugar
  2. Que alguien más resuelva el problema por ellos
  3. Traducir la solución del problema a las instrucciones de la máquina

Es realmente así de simple.


Si te niegas en el paso 2, es porque tienes una comprensión muy pobre de cómo funciona la resolución de problemas.

La resolución de problemas no es un proceso paso a paso, y no importa cuánto la gerencia media quiera reemplazar los solucionadores de problemas con engranajes idénticos, que pueden ser contratados a bajo costo e intercambiarse fácilmente, no va a suceder.

La resolución de problemas requiere una idea del problema y una comprensión del espacio del problema en el que se encuentra el problema frente a usted.

Luego, obtiene una solución que mapea la porción del espacio del problema que contiene el problema que le interesa resolver ahora, y en los otros problemas dentro de ese espacio, probablemente le interesará resolver en el futuro.

Esto define su espacio de solución.

Y luego completa esa parte del espacio de la solución que cubre el problema inmediatamente frente a ti y dejas el resto para más adelante.

Lo hace de esta manera, porque si no lo hace, tendrá que rehacer todo más tarde, en lugar de poder extender el espacio de la solución al resto del espacio del problema más tarde, como llenar un globo, dentro de una forma extraña caja.

Porque si lo hace de otra manera, terminará con un producto de la versión 1.0 que requerirá una reescritura completa para crear un producto de la versión 1.1.

Has respondido tu propia pregunta en gran medida: la programación es un proceso paso a paso. Existen múltiples vías, pero todo se reduce a análisis iterativo (¿qué debería construir?), Diseño (¿cómo debería construirlo?), Implementación, pruebas de banco (¿funciona?) Y pruebas de usuario (¿es útil?) .

Si desea aprender a diseñar el código OO, le recomiendo el diseño de objetos de Rebecca Wirfs-Brock: Roles, responsabilidades y colaboraciones. Si desea aprender cómo los profesionales desarrollan software, lea acerca de los métodos ágiles, pero tenga en cuenta que solo la experiencia realmente le enseñará cómo hacer cualquiera de estas cosas. Los libros son excelentes iniciadores para experimentar, y mejorarán su trabajo y acortarán el tiempo de suficiencia y dominio.

¡Buena suerte!

Una gran suposición para los pasos no técnicos basados ​​solo en la experiencia personal:

  1. ¿Necesitas contactar a alguien para comenzar? Descubra quiénes son el cliente, el analista de negocios, el desarrollador y el arquitecto líder de software, y en qué momentos están disponibles para preguntas y consejos.
  2. ¿Cuál es el cronograma del trabajo? Planifique lo que necesita hacer cuando, para que las partes dependientes del trabajo no se vean retenidas por falta de infraestructura inicial.
  3. ¿Necesitas diseñar un nuevo software? Aprenda un lenguaje de modelado (UML …) y elabore cualquier nuevo modelo o diseño en el que necesite trabajar, si ninguno ya existe. Puede usar esto para comunicar sus ideas a las personas de arriba
  4. ¿Necesita documentar el trabajo, las instrucciones u otras cosas? Averigüe dónde se encuentra la documentación para los proyectos en los que está trabajando, como referencia. Agregar a la documentación.
  5. ¿Dónde está el código en el que trabajarás? Aprenda sobre la estructura del código en el que está trabajando. ¿Cómo funciona la interfaz de usuario (si la hay) con la lógica de negocios (es decir, el controlador) y las fuentes de datos (bases de datos, etc.)?
  6. ¿Necesita comenzar de nuevo o ya existe algo más? Dedique tiempo a comprender qué partes del código son reutilizables y qué partes debe escribir usted mismo
  7. ¿Cuál es la mejor manera de codificar la solución ? Busque ejemplos, tanto en el código existente en el que está trabajando como en línea. Google es tu mejor amigo. Use un estándar de codificación, o busque uno si ya existe y aplíquelo
  8. ¿Cómo agregará su código a la base de código mientras trabaja en él? Comprenda cómo funcionan el repositorio de código y el control de versiones con la plataforma de integración elegida por el proyecto (por ejemplo, Git, Subversion …)
  9. ¿Su código ejecuta pruebas automáticamente? Sepa cómo escribir pruebas unitarias automatizadas para todo su trabajo
  10. ¿Su código será visible para los clientes y probadores una vez que se haya registrado en el control de origen? Aprenda cómo los usuarios implementan y prueban su código, es decir, la integración continua
  11. ¿Cómo comunicará el progreso o los retrocesos al equipo? Utilice metodologías ágiles cuando sea posible. Es decir, reuniones de pie, planificación de sprints, retrospectivas, etc.

Los pasos técnicos que tomaría incluirían lo siguiente:

  1. Aprenda un lenguaje de programación que está ganando terreno en varias comunidades. Los lenguajes en los que estoy tratando de adquirir experiencia en este momento son Java, C, C ++, C #, Python, R.
  2. Aprenda a administrar una base de datos , tanto un RDBMS (Oracle, MySQL, PostgreSQL, SQL Server) como un db web gráfico / semántico (MongoDB, CouchDB). Sepa cómo ejecutar consultas en este tipo de fuentes de datos
  3. Aprenda cómo se comunica la web , particularmente a través de paradigmas web como SOA (servicios web, API …). REST, SOAP, Websockets, todo viene a la mente.
  4. Aprenda a administrar varios sistemas operativos . Saber cómo administrar servidores Linux y Windows le dará una gran ventaja, ya que Internet se basa principalmente en ambos.
  5. Aprenda una habilidad suave , como comunicación, liderazgo o diseño visual. Estas cosas son extremadamente importantes cuando se trata de vender ideas, presentarlas en reuniones y negociar el trabajo en general.
  6. Manténgase al tanto de las tendencias mirando regularmente los sitios de empleo para ver lo que actualmente está en demanda y las tendencias por cualquier razón.
  7. Todo es más fácil de lo que piensas . No te estreses si todo se vuelve demasiado, solo déjalo a un lado por el día y vuelve a hacerlo mañana por la mañana.

Buena suerte.

Primer paso: deja de buscar una serie de pasos para pensar.

Lo más importante para aprender es aprender a aprender. No me refiero a una clase de informática de la universidad. Me refiero a cómo enseñarte a ti mismo. La universidad es una buena base, pero no tan importante como aprender a resolver problemas y mantenerse al día con las nuevas tecnologías.

En cambio, comience a trabajar en una colección de habilidades, mejores prácticas y abstracciones.

No hay un orden perfecto para todos. Puede haber una manera perfecta para que aprenda que probablemente solo se dará cuenta después de haber aprendido una buena parte de ella. Nunca terminarás de aprender, por lo que comenzar es lo único que importa.

Una excelente manera de comenzar a aprender es construyendo cosas. Hay un millón de formas diferentes de comenzar a construir cosas y todas tienen algún valor. El que más te gusta disfrutar y completar es el que elegiría.

Lo primero que debe hacer un programador es (planificar un proyecto o programa) y tal vez esto sea

Lo más difícil es crear cualquier programa, por lo que encontramos que muchos programadores se pierden en esta etapa

Comienzan directamente con el diseño y no hay duda de que construir cualquier programa de esta manera es una razón para aparecer.

Muchos errores en el programa.

En general, el programador debe tener una respuesta o antecedentes sobre tales preguntas:

1- ¿Cuál es el propósito del proyecto?

2. ¿En qué límites se deben colocar?

3. ¿Qué instituciones se beneficiarán de este proyecto?

4. ¿Cuál es el tiempo asignado para el diseño y el establecimiento del programa?

¿Puedes responder estas preguntas?

Si su respuesta es sí, está listo para comenzar el diseño. Pero si no lo es

Te aconsejo que esperes un poco hasta que lo sepas.

El programador consciente trabaja como el artista trabaja coordinando la imagen que pinta para que lo haga.

En formato de código y cuídelo lo más posible y esto se debe a muchos beneficios.

Aquí hay algunas reglas básicas para formatear la escritura de código:

Algunos programadores no escriben comentarios y su documento es de pleno conocimiento.

Cómo funciona el código Pero esto no se recomienda en absoluto, especialmente si son un grupo de programadores

Ni una sola persona

Otra cosa importante es si desea volver al programa en el futuro para el desarrollo o

Modificación, estos comentarios lo ayudarán mucho … e incluso si quiere conocer uno

Programadores en el código del programa. Vea si podrá saber la razón detrás del desarrollo de una oración

En este lugar en particular? ¿O cree que su código es tan obvio?

¿No necesita agregarle otros comentarios? Os dejo la respuesta y la comparación.

Hay muchos pasos que deben mencionarse, le da la libertad de investigar para hacer un plan cuando realice un nuevo proyecto.

Si desea saber más y aprender a codificar, simplemente asista a la Escuela Holberton donde aprenderá todo sobre codificación.

Paso 1: Llegue a un algoritmo (o solución) completamente completo, preciso y detallado para su problema de programación.

Paso # 2: Traduce cada elemento de tu algoritmo al lenguaje de programación que elijamos.

Paso # 2a: traduzca la estructura de datos en su algoritmo a los tipos de datos de su lenguaje de programación.

Paso # 2b: traduzca los elementos lógicos de su algoritmo, como la ejecución condicional, la ejecución selectiva, la ejecución iterativa o recursiva, en las estructuras sintácticas correspondientes de su lenguaje de programación.

Paso # 2c: Cuando sea apropiado, defina funciones (o métodos o procedimientos) y mueva la lógica algorítmica a ellas.

Paso 1.: asegúrese de comprender el problema que está tratando de resolver. O al menos llegue a un punto en el que sienta que hay suficientes puntos en común entre lo que cree que es el problema y lo que necesitan los usuarios potenciales.

Paso 2.: mira en qué partes se puede dividir el problema. Si una parte es demasiado grande para solucionarla con unas pocas líneas de código, intente dividir el problema en partes más pequeñas y siga repitiendo y documentando ese proceso hasta que sepa qué código escribir para resolver una parte.

Paso 2b : cada vez que piense en un problema, o en parte, intente pensar o encuentre soluciones existentes que se ajusten bien o lo suficientemente bien como para reutilizarlas, en lugar de resolver todos los problemas nuevamente.

Paso 3.: (opcional para algunos, fundamental para desarrolladores basados ​​en pruebas) piense en cómo puede asegurarse de que el problema que está resolviendo se haya resuelto correctamente y escriba una prueba para verificarlo.

Paso 4.: escribe el código. Pruébalo. Integrelo con el resto de su solución. Pruébalo.

Paso 5.: nunca has terminado, vuelve al paso 1.

Por supuesto, ninguno de estos pasos aborda la selección de la plataforma correcta, la arquitectura general de su solución, los patrones de diseño comunes, etc. Pero esas son solo partes del proceso general que siguen el conjunto de pasos iguales o muy similares.

El consejo que suelo dar a los estudiantes es …

  1. Averigua cómo puedes resolver el problema tú mismo, a mano, con lápiz y papel.
  2. Enseñe a la computadora a hacer eso.

La computadora es mucho más rápida y precisa que tú. Pero los programas de computadora siempre están, fundamentalmente, haciendo lo que les dijiste que hicieran, cómo les dijiste que lo hicieran. Entonces debes saber cómo hacer algo, para que la computadora lo haga.

La forma en que me gusta describirlo a la gente de negocios es: “Enséñame cómo hacerlo y le enseñaré a la computadora a hacerlo”.

  1. Identifique el valor real y tangible que se espera que el módulo de código proporcione al usuario: esto también se denomina “análisis de requisitos”. UML utiliza “escenarios de casos de uso” para este propósito.
  2. Defina la API de usuario mínima que puede implementar completamente # 1. No debe contener ningún “chapado en oro para desarrolladores”, debe ser la API de usuario más pequeña y simple. Debería ocultar al usuario la mayor cantidad de estado posible del módulo, por ejemplo, utilizando “cookies” opacas (un identificador de archivo o identificador de socket es un ejemplo de una cookie opaca).
  3. Haga una lluvia de ideas sobre cómo se puede probar esta API de usuario: pruebas de regresión / sistema y pruebas de unidad / módulo. Refine la API del usuario para que pueda soportar esta prueba. Preferiblemente, esta prueba puede ser automatizada.
  4. Codifique la API del usuario utilizando la descomposición funcional, manteniendo oculta la mayor parte de la implementación posible para el usuario y el resto del sistema (es decir, visibilidad “estática”).
  5. Escriba código que realice pruebas automatizadas de unidad / módulo y pruebas de sistema / regresión del módulo de código.

Podría dar una respuesta correcta, pero inútil, como: “divide el problema en partes más pequeñas. Repita el proceso hasta que las piezas sean lo suficientemente simples como para resolverlas directamente “.

Pero la verdad es que, en este nivel de generalidad de la pregunta, no hay una respuesta razonable. Si lo hubiera, cualquiera podría ser un buen programador, lo que, obviamente, no puede.

Si hace una pregunta más específica, yo (o algún otro programador experimentado) podría guiarlo paso a paso por el proceso de pensamiento. No le daría una respuesta sobre cómo resolver ningún problema, pero le daría una idea de cómo los programadores atacan un problema. Aún necesitará esfuerzo y experiencia para poder duplicar el esfuerzo en un problema diferente, pero puede ser un buen comienzo.

Suponiendo que ya tengo el concepto completo del programa y no hay políticas adicionales para manejar, generalmente me gusta este proceso:

  1. Diseño y construyo una base de datos con todas las tablas apropiadas, relaciones, etc. configuradas. Los datos son la base de casi todos los programas.
  2. Comienzo a escribir clases e interfaces para los datos / objetos de mi base de datos.
  3. Construí una interfaz de usuario alrededor de los datos usando las interfaces creadas para los datos. Si hay algo que se siente demasiado complejo, generalmente vuelvo a mis clases y hago algo más simple allí.

Por supuesto, es un poco más complejo que eso, hay muchas pruebas por todas partes, lo que garantiza la seguridad, etc. Pero básicamente este es mi proceso de construcción central, los datos son el rey, la manipulación de datos se controla solo en un par de lugares y la mayoría la seguridad central está ahí, luego haga algo bonito y fácil de usar para trabajar con eso.

Tres pasos sugeridos por Kent Beck:

  1. Hazlo funcionar
  2. Hacer lo correcto
  3. Hazlo rápido

Puede poner estos tres pasos en iteraciones cortas en cualquier nivel, simplemente no cambie el orden.

Aprenda a jugar al ajedrez correctamente y bien, pronto comprenderá cómo y por qué formar soluciones basadas en prácticas comunes de TI.