¿Cuál es la mejor manera de saltar a la programación después de aprender lo básico para que pueda desarrollar habilidades del mundo intermedio y real?

Así que mi pregunta sería, ¿qué consideras lo básico? Necesitas estar seguro de que realmente los has cubierto. Unas pocas semanas / meses de aprender la sintaxis de un solo idioma no es lo mismo que aprender los conceptos básicos de la programación.

Posiblemente el mejor consejo que le puedo dar a un programador principiante es este: es importante entender que el código es simple y la expresión de su solución. En realidad, es el paso final en el proceso. Lo que es importante es desarrollar el algoritmo, no las palabras que usa para decirle a la computadora que lo implemente.

Por lo tanto, al no saber exactamente en qué punto se encuentra en su viaje de programación, le ofreceré consejos que lo llevarán desde el principio a trabajar en habilidades del mundo real. En su mayoría, soy un programador orientado a objetos, así que me inclinaré por eso. Mucho de lo que digo funcionará para otros paradims, pero algunos pueden requerir cambiar los detalles. Primero aprender los conceptos básicos de un idioma. Aprenda las estructuras de control, if, for, while, etc. Aprenda sobre las funciones. Cómo pasar cosas y sacar cosas. Aprenda al menos algunos de los ya implementados para su idioma. Sé que dije que el algoritmo es mayor que la implementación, pero si está aprendiendo por su cuenta, necesitará una forma de verificar sus algoritmos.

En segundo lugar, aprender algunas estructuras de datos básicos. Aprende sobre sus fortalezas y debilidades. Aquí hay algunos a considerar: lista vinculada, matriz, árbol binario, cola de pila y montón. Hay otros pero estos son un buen comienzo.

Lo siguiente es obtener un control sobre lo que realmente significa algoritmo. Estudia y entiende la diferencia entre iterativo y recursivo. Examine algunos de los algoritmos de búsqueda como ordenamiento por burbuja, ordenamiento por inserción, ordenamiento rápido y ordenamiento por fusión. Mira cosas como la búsqueda binaria. Estoy seguro de que hay al menos algunos otros que me estoy perdiendo aquí, pero el punto es entender nuevamente las diversas fortalezas y debilidades de cada uno y ver cómo se relacionan con las estructuras de datos del último paso.

Mira en los patrones de diseño. Sé que hay gente por ahí que, por alguna razón, piensan que son el demonio. Pero son realmente simples estrategias para los problemas con los que te encuentras regularmente. No te preocupes por memorizarlos. Lo que considero importante es en realidad la idea de que debe intentar reconocer si un problema se resolvió anteriormente. ¿Y hay un caso general fácil de implementar para ese problema? Un segundo buen consejo que puedo dar es que no haga un trabajo que no tiene que hacer. Si ya tiene una buena manera de resolver un problema, continúe usándolo en lugar de explorar nuevas implementaciones cada vez.

En mi opinión, ahora has llegado a haber aprendido lo básico. Entonces, ¿a dónde ir desde aquí? A continuación, necesita aprender sobre las diversas herramientas que pueden hacer su vida mucho más fácil. Mira en eclipse o estudio visual. Como mínimo, mire algo como notepad ++. Hay otros por ahí que son apropiados para cualquier idioma que estés usando. Aprenda sobre el control de la fuente. Mira en Git y SVN. Estos harán que su vida sea mejor y son esenciales si alguna vez realmente desea trabajar como parte de un equipo.

Ahora que tiene algunos conocimientos de programación y algunas herramientas para ayudarlo, puede comenzar a ver problemas reales. Empieza intentando diseñar algo. Nos enfrentamos a varios juegos de mesa cuando estaba en la escuela. Estos serán grandes proyectos para un solo desarrollador, así que comprenda que no estoy hablando de hacer esto durante un fin de semana. Para este tipo de cosas por lo general trabajamos en equipos de 4 durante 6 semanas. Eso equivale a casi 6 meses para una sola persona. Empieza por diseñar no por programación. Piense en todas las piezas que necesitará crear y cómo encajarán entre sí. Configura y usa tu control de versiones. Escribe documentación real para ayudarte a mantenerte en el buen camino. Todas estas son cosas que necesitarás para aprender a hacer.

Esperemos que esto sea útil. ¡Buena suerte!

Voy a exponer los consejos que he encontrado a menudo al aprender a programar: elija un proyecto algo ingenuo y comience a codificar … o comience a leer sobre cómo escribir código para implementar esa idea.

Entonces, tiene lo básico, pero desea desarrollar “habilidades intermedias” y, por intermedio, creo que se refiere a las habilidades que son relevantes para el desarrollo de una pieza de software en lugar de solo funciones simples como revertir una matriz / lista o escribir Un programa para leer un archivo e imprimir su contenido. Para desarrollar estas habilidades, la única opción (realmente) es comenzar un proyecto y verlo a través de:

Si está interesado en el diseño web, inicie un sitio web desde cero que haga algo trivial, como permitir a los usuarios registrarse, iniciar sesión y cerrar sesión, así como proporcionar algo que hacer como usuario conectado, posiblemente involucrando una base de datos. Esto le tomaría bastante tiempo, pero aprendería mucha información aplicativa para diseñar y construir un sitio web.

Si estás interesado en hacer juegos, trata de hacer un juego simple desde cero, ¡el más simple! Tal vez Pong, o un simple clon de Space Invaders … cualquier tipo de juego trivial con algunos sprites y algunas acciones simples. Esto lo familiarizará con la escucha de la entrada del sistema desde el teclado y / o el mouse, y le proporcionará horas de diversión para jugar con la velocidad de los proyectiles, la estructura del juego y / o los gráficos.

¡La programación te da la posibilidad de convertir tus dedos en una varita mágica, porque cuanto mejor sepas cómo programar, mejor sabes cómo utilizar el hardware de una computadora para tu propia agenda! En este momento me estoy interesando en el diseño e implementación de Lenguajes de Programación y Compiladores para PL, así que naturalmente, para que mi Tesis de Honor se gradúe con mi licenciatura, implementaré un compilador para un lenguaje que diseñamos en una de mis clases. Usando mi lenguaje de programación favorito, Haskell! No sé casi nada sobre escribir un compilador, ¡pero hace aproximadamente 4 semanas no sabía nada! La cuestión es que pasé las últimas 4 semanas (aproximadamente 5 a 10 horas a la semana) aprendiendo sobre la construcción de un compilador, ¡y no sabría nada sin haber hecho eso!

En cualquier etapa del camino hacia el objetivo (verdaderamente) inalcanzable de saber todo lo que le gustaría saber sobre programación, ¡siempre hay más que aprender! Sin embargo, el aprendizaje no es fácil: realmente tienes que luchar para lograr algo que inicialmente es claramente más desafiante que las habilidades que posees actualmente. Mientras trabajas para lograr esos objetivos, el aprendizaje es un efecto secundario. Entonces, la moraleja es: encuentre un proyecto que le apasiona y trabaje para completarlo. Sin intentar cosas que actualmente son demasiado difíciles para usted, nunca aprenderá nada que no sepa ya … porque si siempre está haciendo cosas que sabe hacer, pueden resolverse utilizando el conocimiento que posee actualmente. , ¿no? ¡Ve a por ello!

Mundo real ” significa que alguien usó tu programa. Mire las publicaciones de Show HN en Hacker News para ver los tipos de proyectos que los desarrolladores están construyendo en estos días.

Si eres un desarrollador web, un proyecto fácil de entender es un blog o clon de twitter. Pero en su interior se encuentran las bases de datos, la autenticación, la protección contra correo no deseado, la organización dinámica de datos y una serie de otros problemas comunes que enfrentan los desarrolladores profesionales en la actualidad.

Si desea seguir la ruta de la aplicación, escribir un clon parcial de Twitter que se relacione con la API de Twitter le brindará muchos desafíos interesantes que son bastante típicos en este espacio, como el desarrollo de IU, las API de consumo y OAuth.

Estos están diseñados para ser conceptualmente simples para que pueda centrarse en los desafíos técnicos en el diseño y la creación de su aplicación.

Podrías comenzar tu propio proyecto. Solo piensa en lo que la gente necesita y créelo. Puede elegir la pila de tecnología que desee, pero debe pensar en la escala de su proyecto, ya que no es efectivo usar java para sitios web menores que podrían crearse con otros idiomas en 2 o 3 días. Este enfoque es bueno para aprender nuevas tecnologías, pero no obtendrás habilidades de juego en equipo.

Puede solicitar una pasantía o vacaciones de desarrollador junior en una gran empresa. Resolverás problemas del mundo real y obtendrás mucha experiencia en otros campos. Pero el trabajo es un trabajo, por lo que debería dedicarle mucho tiempo y al principio por dinero realmente bajo.

Lo último que podrías hacer es probar proyectos de código abierto. Usted elige algo que le gusta y busca errores y problemas para corregir o tal vez la característica que desea ver en ese proyecto. Entonces creas solución y si es buena, será aprobada. También es muy útil en su currículum, pero no es gratificante si quiere dinero para su trabajo.

Resuelve problemas del mundo real. Para el idioma de su elección, vaya a GitHub y lea el código constantemente; encuentre un proyecto que quiera construir y trabaje en eso. YouTube tiene una gran cantidad de proyectos para cada idioma. También me gustaría recoger un libro (a mí personalmente me gustan los libros tangibles, pero lo que sea que funcione) sobre la programación Intermedia, el ciclo de desarrollo de software, etc. Hay muchas cosas que aprender que te darán habilidades reales. Gracias y espero que esto ayude.