¿Qué debo tener en mente antes de comenzar a escribir el código?

Es una combinación de experiencia, investigación y sus propios métodos personales. Estos se consolidarán lentamente en una metodología que desarrolle el software adecuado para sus necesidades.

Experiencia

Usted podría sumergirse en una plataforma con su conjunto de idiomas y comportamientos específicos. O podría desarrollar un amplio conocimiento en diferentes áreas a la vez, como un ingeniero de pila.
De cualquier manera, tienes que ensuciarte las manos con el código para descubrir mediante prueba y error qué tipo de cosas debes tener en cuenta y todos los diferentes tipos de problemas que existen.

Investigación

Hay algunos problemas similares que siguen apareciendo para los desarrolladores. La esencia de estos problemas se ha estado y se está extrayendo lentamente de estos problemas similares, y se han creado patrones de diseño que todavía se están creando para resolver los mismos problemas una y otra vez.
Estudiar estos patrones de diseño y practicar con ellos te lleva a otro nivel de artesanía de software.

Personal

Cada desarrollador creo que tiene un espíritu animal . Esto es como su analogía con el software que les ayuda a mantener las cosas en su mente. La analogía adoptada en OO es organismos. Donde cada componente / clase / módulo / biblioteca / control tiene sus tareas designadas y tienen entrada / salida para controlar la cosa y obtener el comportamiento correcto de ella.
Esto funciona bien conmigo al desarrollar diseños de cómo quiero que funcionen las cosas.

Con el tiempo, la metodología que cree se puede mejorar y perfeccionar aumentando en cada uno de los tres mencionados anteriormente. Antes de que usted lo sepa, el código parece fluir de usted y las soluciones surgen más fácilmente y es más fácil saber qué hacer.

¿Piensa un carpintero en cómo cortar y lijar un pedazo de madera o en cómo juntar todas las piezas para obtener un mueble?

La codificación es una técnica para construir y juntar piezas de software para que un sistema informático funcione. No es la solución en sí misma.

Si tomo su pregunta por un simple fragmento de código, tal vez podría ver una función, una clase que representa un objeto de negocio, o incluso un par de líneas de código en mi mente … Pero si está pensando en una aplicación completa, lo haría. Me gusta ir más allá de eso.

Desarrollé el código durante casi 30 años, y lo primero que siempre me viene a la mente es descubrir cuál es la mejor manera de resolver este problema en particular.

Como casi todo el tiempo programo para alguien más, antes de comenzar a codificar, necesito hacer un “estudio de actores”. Necesito conocer las expectativas del cliente (o propietario), los recursos que tienen y la calidad que necesitan. Hoy en día, todos quieren buena calidad y las cosas se hacen rápido, pero no todos están dispuestos a pagar por eso.

La mayoría de las veces, las soluciones más simples son mejores, ya que se pueden mejorar fácilmente, mientras que las complicadas son difíciles de depurar.

Entonces, antes de quedar atrapado en una solución técnica para un problema no técnico, debo estar seguro de que todos estamos en la misma página.

Lo siguiente es averiguar cuánto tiempo podría llevar el desarrollo. Aquí utilizo para hacer una combinación de soluciones técnicas que podría aplicar, devolviendo mis comentarios sobre la solución técnica aplicada a un problema comercial, mientras sigo tratando de comprender la ansiedad del cliente … (Porque siempre le pedirán un número, en horas o en dinero, dependiendo de para quién está trabajando, y tiene que ser para hoy!).

Al tener éxito en eso, creo que estoy en una buena posición para comenzar a tratar de explicar cómo aplicaremos un desarrollo ágil y convencerlos de que deben participar en todo el proceso, sin excepción.

Después de eso, solo y solo estoy dibujando una imagen en mi mente adivinando la mejor arquitectura para esta solución. Si estoy convencido de que estaban muy seguros de la funcionalidad que quieren es una cosa. Pensar en una arquitectura para un producto mantenible a lo largo del tiempo es un problema muy diferente …

Una vez que obtenga la imagen completa, puedo comenzar con la parte fácil. ¡Piensa en código!

Estoy convencido de que la mayoría de los proyectos no fallan debido a problemas técnicos, sino a la comprensión humana del mismo problema. Recuerde que un programador no siempre conoce el negocio del cliente, y el cliente no siempre conoce las técnicas de software.

Entonces, en mi caso, no veo el código directamente para una solución completa, ni lo traduzco para ningún idioma. Uso el código solo como una herramienta para un tema específico.

Para tener éxito, debe dominar la herramienta sin pensar … igual que el carpintero usa una sierra o un martillo.

Depende de su experiencia y fluidez en las tecnologías con las que trabaja.

Solo puedo hablar por mí mismo, pero “veo” y sueño en código. A medida que estoy trabajando en el diseño y la estructura de un problema y su solución, la imagen mental de los objetos, componentes y su interacción comienzan a tomar forma. A medida que la solución se solidifica y comienzo a hacer suposiciones y decisiones difíciles, el código comienza a emerger. Cuando puedo “ver” suficiente código detrás de mis globos oculares, lo confío al editor. Básicamente quitándolo de mi cabeza y ponlo en la computadora.

En problemas particularmente difíciles donde puedo ver la solución, salvo algunos trucos difíciles, es cuando puedo soñar con el código. A veces una pesadilla de código luchando contra mi mente hasta que emerge un vencedor.

Única forma de describirlo. No puedo aprender un idioma humano extranjero para salvar mi vida, pero puedo transcribir fácilmente miles de líneas de código de la esencia del pensamiento.

Cuando comenzaba el desarrollo web con php, al pedirle que escribiera software, revisaba el manual de php para ver las funciones que podrían ayudarme a hacer esto. Después de encontrar lo que necesitaba, continuaría implementando estas funciones juntas y, a través de muchas pruebas y errores, conseguí que el código se ejecutara en consecuencia. Trabajé así durante más de un año.

Obviamente, este proceso fue increíblemente lento e ineficiente. A menudo me pasaba días enteros intentando que las tareas simples se ejecutaran correctamente. Aun así, sin este proceso tedioso, definitivamente no estaría escribiendo código como lo hago hoy. (No es que sea el mejor en programación) Todas las tareas que completé me ayudaron a comprender exactamente qué es posible en PHP. Con cada programa completado vinieron herramientas que podría usar para el siguiente. Con el tiempo, comencé a familiarizarme con las diversas bibliotecas centrales. Me gustaría acceder a los documentos menos como muleta y más como un recurso.

Ahora, cuando me piden que escriba algo de software, a medida que me informan sobre las características, generalmente pienso en cómo puedo implementar estas solicitudes directamente en el código. Para proyectos simples como estos, solo es cuestión de escribir el programa en ese momento. Sin embargo, para proyectos más complicados, si tengo problemas para pensar en una forma de implementar una determinada funcionalidad, por lo general me tomo mi tiempo y analizo minuciosamente lo que sé para ver si algo ayudará a resolver este problema. Si todavía estoy perdido, investigo un poco, también conocido como Google, para ver cómo puedo encontrar una solución. * Después de encontrar lo que necesito y después de terminar el programa, habré adquirido el conocimiento necesario para abordar un problema. Problema similar con facilidad en el futuro.

Entonces, al final del día, entender qué pensar antes de escribir un código es algo que se obtiene a través de la experiencia. Si está comenzando, una buena manera de aprender esta habilidad es, como mencionó, escribir el código “meta”, que se conoce formalmente como pseudo código.

Espero que esto te ayude. en sus esfuerzos de programación. ¡Buena suerte!

* ¡No copie el código en línea cuando intente resolver un problema! Simplemente no está bien, y no aprenderá nada en el proceso. En su lugar, intente comprender el código que va a utilizar e implementarlo en su programa por su cuenta. Esta es una práctica clave a la hora de pasar a la web.

Tómese tiempo para imaginar la solución: ¿cuáles son las piezas principales, cómo puedo “dividir y vencer” el problema dividiéndolo en partes más pequeñas, qué algoritmos usaría, qué estructuras de datos crearé, cuáles son las partes difíciles de problema, y ​​finalmente, ¿cuál es la secuencia de pasos que tomaré para ir del punto A al punto B.
Recuerde, la modularidad y la “separación de preocupaciones”, así que haga que un método haga una cosa bien.
Después de hacer este ejercicio de visualización, siéntese y anote el pseudocódigo (en comentarios) en el archivo de código fuente. Eso se convierte en tu “esqueleto” de tu solución. Luego comience a agregar carne y huesos a ese esqueleto con el código real. Primero, concéntrese en obtener los datos correctamente, ya que los “datos estructuran el programa”. Sí, se trata de los datos.
Así que aquí están tus pasos:
1. Visualización.
2. Pseudocódigo.
3. Código! Recuerde, codifique la cosa más pequeña que funcione primero, luego pruebe, luego agregue un poco más de código y luego pruébelo nuevamente en un ciclo creciente e iterativo. Acceda rápidamente a la funcionalidad de “bucle completo” más estrecha que pueda, que es una rebanada delgada a través de todo el conjunto de problemas. Por ejemplo, interactúe con el usuario (tal vez haga una pequeña parte de un formulario, haga lógica empresarial en el nivel medio, interactúe con la base de datos y luego devuelva el resultado al usuario, es decir, un “bucle completo”).
¡Los mejores deseos!

En primer lugar, necesita visualizar el producto final. Necesitas tener una imagen clara en tu mente cómo van a funcionar las cosas. Tómese un tiempo, recorra el panorama general y vea cómo utiliza el software. Una vez que tenga una idea clara de cómo se ve el producto final, escríbalo en algún lugar (haga esto en serio antes de olvidarlo) y luego ingrese los detalles de lo que podría salir mal.

Una vez que tenga una buena comprensión de cómo debería funcionar, y qué puede salir mal (en un nivel alto) puede comenzar a codificar.

Al codificar en cada etapa, debe considerar qué podría salir mal, por ejemplo, una consulta que no devuelve ningún registro o demasiados registros. Otras excepciones que pueden suceder, etc. Ajuste su código en consecuencia.

Si lo necesita, escriba primero su plan / diseño en inglés. He estado codificando por más de 30 años y lo hago a veces.

Un truco que utilizo es usar los comentarios como un esquema; los comentarios pueden permanecer en el código si aún son correctos (no quiero entrar en este debate en este momento: Twitter).

También te podría gustar esta técnica: el patrón de diseño “Reunir, preparar, cocinar, comer”

Creo que la pregunta más importante es para qué usarás la codificación. ¿Cuál es tu final? ¿Quieres desarrollar aplicaciones móviles, sitios web, videojuegos? La respuesta a esa pregunta reducirá el lenguaje de codificación que elegirás. Si, en general, solo quieres aprender a codificar, digo que comiences con Python y bifurcas desde allí. Python es generalmente considerado como el “más fácil” para empezar.

En primer lugar, debe pensar en la solución, independientemente del código.
Desarrolle su solución gradualmente, primero aborde todo su problema y luego intente resolver los casos especiales.
Usa un papel para anotar tus ideas. Una vez que sienta que su problema está resuelto, comience a traducir todo lo que tenga en documentos a código.

Yo tampoco “veo” el código terminado, no “traduzco” al código. Expreso las instrucciones (el programa) en PHP, Java o Inglés, tal como expresaría otros pensamientos en inglés, alemán o notación matemática.

Todas las respuestas anteriores son correctas. YMMV. Sin embargo, creo que puede estar haciendo la pregunta incorrecta. Tal vez debería ser: ‘¿Qué debería salir de mi mente antes de comenzar a escribir el código?’

Mi sugerencia es vaciar su mente para obtener el enfoque necesario. Tuve mis mejores ideas al correr (lo que para mí es una forma de meditación). Una carrera de larga distancia me permite despejar parte del caos en mi cabeza.

Primero veo el resultado final y lo construyo. Luego escribo los algoritmos que obtengo directamente.

No veo nada en mi cabeza. Tampoco veo la letra de las (muchas) canciones que sé cantar, por cierto

Visualiza lo que quieres hacer.
Romperlo en problemas más pequeños. Continúe desglosando los problemas hasta que sean lo suficientemente pequeños para ser manejados como una sola tarea cada uno.
Haga un plan en el orden en que deben completarse las tareas (por ejemplo, un diagrama de flujo).
Comience a codificar.

Comienza a desarrollar pequeños segmentos de tu programa. Consulte un buen libro para principiantes.