¿Construyendo un programa completo?

15

Leer libros, mirar videos y revisar tutoriales es muy fácil. Tomar notas y aprender el material puede ser un poco más difícil, pero aun así, cualquier persona con un cerebro decente y bastante interés, es bastante fácil (sin mencionar que es divertido).

La cuestión es que realmente no te prepara para escribir un programa completo o sitio web. Digamos que son esos adolescentes (solo en la escuela secundaria, no hay cursos de informática o programación verdaderos (nivel universitario) y no tienen experiencia en el mundo real), y salen con Groupon. O incluso Mark Zuckerburg, seguro de que era un genio, y que era un programador muy capaz ... ¿pero cómo?

¿Cómo recomienda que las personas que no son necesariamente nuevas en la programación, pero nuevas en la programación de aplicaciones reales y programadores reales se encarguen de desarrollarla? ¿Cuál es el "proceso de desarrollo", especialmente para programadores individuales (o tal vez 2-3 adolescentes)?

Además, en lo que respecta al desarrollo web, ¿cuál es el proceso? ¿Se escribió algo como Facebook o Groupon con un marco (como CodeIgniter o Zend para PHP)? ¿O desarrollan sus propios marcos? No estoy preguntando cómo llegar a una gran idea, sino cómo implementar grandes ideas de manera efectiva. ¿Alguien tiene consejos?

He leído un par de libros sobre C y C ++ (principalmente el lenguaje de programación C y el lenguaje de programación C ++) y he tomado AP Computer Science (además de leer algunos libros adicionales sobre Java y OOP). También he leído algunos tutoriales sobre PHP (y CodeIgniter) y Python. Pero todavía estoy en la escuela secundaria, y técnicamente ni siquiera tengo la edad suficiente para trabajar en una pasantía durante unos meses más.

Beto
fuente
3
Reading books, watching videos, and reviewing tutorials is all very easy. Sí, leerlos es fácil, comprenderlos es la parte difícil.
Yannis
@Yannis Rizos En realidad, los entiendo, y luego hablo de eso en la oración.
Bob
@Bob aprendiendo el material y realmente entendiendo que en realidad es bastante diferente, el segundo es mucho más difícil. Mi definición personal de "comprensión" es cuando puedo explicar el tema en cuestión de una manera que un niño de diez años entendería. Rápido, explique "interfaces" :)
Thanos Papathanasiou
1
@ThanosPapathanasiou ¿Software, hardware o el concepto OO? :)
Yannis
2
@YannisRizos esa es la belleza de explicar cosas como lo harías a un niño de diez años, te verías obligado a usar un ejemplo simplificado que encapsularía a los tres :)
Thanos Papathanasiou

Respuestas:

8

Hay una diferencia entre simplemente saber programar y saber estructurar un programa (arquitectura de software).

Un libro simple sobre un lenguaje de programación específico solo le enseñará las herramientas que puede usar para configurar la arquitectura de un programa.

También hay libros que lo ayudan con la arquitectura de software. Los temas que debe buscar son patrones de diseño , abstracción de software , arquitectura / diseño de software y muchos más ... ( Head First Design Patterns fue una verdadera revelación para mí).

Para un conjunto más amplio de recursos, esta pregunta puede interesarle.

Aún así, la mejor manera de aprender cómo estructurar adecuadamente un programa completo es tener experiencia práctica al hacerlo, estar muy abierto a sugerencias y nuevas técnicas mientras lo hace.

Steven Jeuris
fuente
6

Es el mismo problema muy común con el desarrollo de juegos (indie): cómo terminar.

Aparte de asegurarse de que puede hacerlo, ya sea porque tiene todo el conocimiento requerido o está dispuesto a aprender, y verificó que otras personas verificaron que no era imposible ...

... lo principal que hace posible el "acabado" es establecer objetivos .

Los objetivos son el objetivo a alcanzar, no deben describir cómo llegar allí, solo cuáles son los requisitos / características básicos que necesita para considerar una primera versión de su aplicación como "terminada". Además, no establezca objetivos demasiado lejos en el tiempo.

Escribe tus objetivos en alguna parte. Escribelo.

Una vez que haya establecido los objetivos, tendrá que encontrar formas de alcanzarlos. Ese es el famoso "camino" que es más interesante que la llegada. No te preocupes por llegar a las paredes y descubrir cuán equivocado estarás. La mayoría de las veces, si el tema es nuevo, se equivocará y aprenderá por qué y podrá hacerlo bien y se habrá preparado para acercarse a los objetivos.

Incluso en el diseño del juego, sabemos que debes proporcionar objetivos para asegurarte de que el jugador sepa, incluso de manera abstracta, lo que necesita lograr, sea cual sea la forma en que lo hace.

Klaim
fuente
4

Leer mucho sobre la natación no lo convierte en un nadador. Por supuesto, prepara uno con el conocimiento requerido, para convertirse en un nadador tienes que saltar al agua.

Veo que muchas personas que simplemente lo hicieron antes de pensar / leer acerca de hacerlo son las que tienen éxito.

Si quieres ser un nadador simplemente salta al agua y aprende a nadar, si quieres ser un programador solo comienza a programar con una idea y aprende a programar.

Creo que el ensayo de Peter Norvig es relevante aquí: enséñate a programar en 10 años

18bytes
fuente
2
¡Buena respuesta! Tengo dos amigos que seguían leyendo (comenzando a leer) libros sobre programación con la esperanza de que algún día se sintieran listos para comenzar a programar. Nunca sentirás eso. Simplemente salta al agua fría y comienza a trabajar en un proyecto real. Si cree que es demasiado complejo, elija uno más pequeño. Trabaja en él hasta que esté terminado. Durante el proyecto, busque libros y lecturas de acuerdo con los temas abiertos que aparecen a medida que avanza.
Giorgio el
1

Parece que te enfocas demasiado en los aspectos de implementación del software, que es solo una fracción de todo el proceso de desarrollo de software (ver SDLC). Es posible que deba mirar algunas metodologías de software y aprender a usar una que le guste. Aparte de eso, lea los estudios de casos, descubra las ventajas y desventajas de cada herramienta que consideraría usar también en su software, evalúe y avance desde allí. Después de una lectura rápida de su pregunta, es posible que deba centrarse en las áreas de Análisis y Diseño del software, y aprender sobre UML, descomposición y quizás algunos patrones de diseño ... tal vez ...

Espero que esto ayude..

Steve Rathbone
fuente
0

Respuesta corta, establece tus objetivos y comienza.

No hay ningún libro o forma de enseñarte esto, sino experiencia práctica.

Cometerás muchos errores y gradualmente ganarás experiencia. Entonces, si se encuentra con un problema, piénselo, intente encontrar una solución y, si falla, vaya a stackoverflow y obtenga ayuda. También tenga revisiones de código tan pronto como sea posible.

Después de terminar su primer proyecto y tener una buena comprensión de los problemas técnicos, comience a buscar temas más abstractos y de mayor nivel de ingeniería de software.

Con su conocimiento recién adquirido de problemas comunes, obtendrá los conceptos abstractos de los libros de tener código limpio y desacoplado, porque su primer proyecto será un desastre imposible de mantener.

Libros (sospechosos habituales):

OliverS
fuente
0

En este punto, debe dejar de leer sobre programación y comenzar a programar. Si desea crear un sitio web, siga un tutorial para el marco de su elección. Solo elige uno que te atraiga. Siga el tutorial para aprender a usar el marco, luego comience a construir su propia aplicación web.

Después de escribir un código, los libros sobre técnicas de programación tendrán mucho más significado.

Kevin Cline
fuente