¿Cómo puedo obtener más experiencia en programación [cerrado]

9

Voy a ser un estudiante de informática de tercer año y he leído Head first Java, Head First C, y actualmente estoy leyendo C ++, que es el lenguaje que más me gusta ya que tiene un buen estilo de enseñanza para personas con experiencia. Estoy planeando aprender a hacer software con QT, aprender Objective-C (para iphone) o leer Effective C ++.

¿Cómo puedo obtener experiencia como programador? ¿Tengo las habilidades para unirme a un proyecto de código abierto o necesito aprender php, mySQL o cualquier otro idioma? Me encanta la programación y la informática en general, aunque algunas clases pueden ser extremadamente difíciles (informática teórica). También planeo convertirme en un gurú en C ++, pero eso no será pronto.

Antonio
fuente
1
¿Has escrito algún programa que otros usen? De lo contrario, escriba uno que un familiar querido necesite y hágalo útil (puede tomar varias iteraciones). La última parte es donde está la verdadera lección.
¿Cómo se llega al Carnegie Hall?
jfrankcarr
1
Voy a sonar como un imbécil por un segundo pero ... experiencia : participación activa en eventos o actividades, lo que lleva a la acumulación de conocimientos o habilidades. Entonces comience a participar activamente en la programación.
Steven Evers
1
Por cierto, ¿cuál es la diferencia entre StackOverflow y Programmers? ¿El patrón de preguntas de cierre pretende hacer que los Programadores sean solo otro StackOverflow? ¿Cuál es el punto entonces? Simplemente fusionar los dos. Solíamos poder hacer preguntas esotéricas a los Programadores que no pudimos en StackOverflow.
שינתיא אבישגנת

Respuestas:

11

ABC - SIEMPRE SE CODIFICANDO. Es realmente así de simple. Una de mis formas favoritas de conocer un idioma es escribir un intérprete de juguete para un subconjunto del idioma en el idioma mismo o si eso no es lo tuyo, entonces tal vez un rastreador u otra cosa que sea lo suficientemente grande como para no ser trivial pero no tan grande que no se pueda terminar en un mes más o menos. El punto es trabajar en algo que lo obligará a mirar la biblioteca estándar y las facilidades de abstracción de datos que ofrece el lenguaje. A veces el proyecto es un éxito, a veces no lo es, pero al final sé lo suficiente sobre un idioma para saber cuáles son sus fortalezas y debilidades y si quiero seguir aprendiendo más. Si resulta que me gusta el idioma, cada vez que leo un artículo interesante o una publicación de blog, trato de comenzar un proyecto en el que implemente algunas de las ideas que se presentaron en el artículo o la publicación del blog. De esta manera, siempre estoy practicando y aprendiendo nuevas ideas, por lo que se convierte en un ciclo virtuoso.

Algunos proyectos que me han funcionado muy bien en el pasado: intérprete para un subconjunto de algún lenguaje, rastreador, generador de analizador PEG, analizador de encabezado HTTP, cliente / servidor de eco simple, bot de Twitter para publicar automáticamente tweets desde una cola, producto de Amazon raspador para buscar ofertas.

davidk01
fuente
+1 Mencionaste algunos proyectos realmente interesantes, gracias.
Anthony
8

Como se explica muy bien en Teach Yourself Programming in Diez años , debe seguir los siguientes pasos:

  • Interesarse en la programación y hacer algo porque es divertido. Asegúrese de que siga siendo lo suficientemente divertido como para estar dispuesto a dedicar sus diez años / 10,000 horas.

  • Programa . El mejor tipo de aprendizaje es aprender haciendo. Para decirlo de manera más técnica, "el nivel máximo de rendimiento para las personas en un dominio dado no se alcanza automáticamente en función de la experiencia extendida, pero el nivel de rendimiento puede ser incrementado incluso por individuos altamente experimentados como resultado de esfuerzos deliberados para mejorar ". (p. 366) y "el aprendizaje más efectivo requiere una tarea bien definida con un nivel de dificultad apropiado para el individuo en particular, retroalimentación informativa y oportunidades para la repetición y corrección de errores". (p. 20-21) El libro Cognition in Practice: Mind, Mathematics, and Culture in Everyday Life es una referencia interesante para este punto de vista.

  • Hable con otros programadores; leer otros programas . Esto es más importante que cualquier libro o curso de capacitación.

  • Si lo desea, ingrese cuatro años en una universidad (o más en una escuela de posgrado). Esto le dará acceso a algunos trabajos que requieren credenciales, y le dará una comprensión más profunda del campo, pero si no disfruta de la escuela, puede (con cierta dedicación) obtener una experiencia similar por su cuenta o en el trabajo. . En cualquier caso, el aprendizaje de libros solo no será suficiente. "La educación en ciencias de la computación no puede convertir a nadie en un programador experto de la misma manera que estudiar pinceles y pigmentos puede convertir a alguien en un pintor experto", dice Eric Raymond, autor del Diccionario del Nuevo Hacker. Uno de los mejores programadores que he contratado solo tenía un título de secundaria; ha producido una gran cantidad de software excelente, tiene su propio grupo de noticias y ha ganado suficientes opciones sobre acciones para comprar su propio club nocturno.

  • Trabaja en proyectos con otros programadores . Sé el mejor programador en algunos proyectos; ser el peor en algunos otros. Cuando eres el mejor, puedes poner a prueba tus habilidades para liderar un proyecto e inspirar a otros con tu visión. Cuando eres el peor, aprendes lo que hacen los maestros y aprendes lo que no les gusta hacer (porque te obligan a hacerlo por ellos).

  • Trabaja en proyectos después de otros programadores . Comprender un programa escrito por otra persona. Vea lo que se necesita para comprender y solucionarlo cuando los programadores originales no están presentes. Piense en cómo diseñar sus programas para que sea más fácil para aquellos que los mantendrán después de usted.

  • Aprenda al menos media docena de lenguajes de programación. Incluya un lenguaje que admita abstracciones de clase (como Java o C ++), uno que admita abstracción funcional (como Lisp o ML), uno que admita abstracción sintáctica (como Lisp), uno que admita especificaciones declarativas (como plantillas Prolog o C ++), uno que admite corutinas (como Icon o Scheme), y una que admite paralelismo (como Sisal).

  • Recuerde que hay una "computadora" en "informática". Sepa cuánto tiempo le toma a su computadora ejecutar una instrucción, recuperar una palabra de la memoria (con y sin una pérdida de caché), leer palabras consecutivas del disco y buscar una nueva ubicación en el disco. (Respuestas aquí.)

  • Participe en un esfuerzo de estandarización del idioma. Podría ser el comité ANSI C ++, o podría decidir si su estilo de codificación local tendrá 2 o 4 niveles de sangría de espacio. De cualquier manera, aprendes sobre lo que les gusta a otras personas en un idioma, qué tan profundamente se sienten y quizás incluso un poco sobre por qué se sienten así.

  • Tenga la sensatez de salir del esfuerzo de estandarización del idioma lo más rápido posible.

BЈовић
fuente
3

Te sugiero que te entrenes escribiendo efectivamente programas funcionales. Tome un proyecto más grande una vez que crea que tiene los conceptos básicos. Aprende el marco qt para el desarrollo de software y sigue practicando. La mejor manera de aprender a programar es escribiendo código.

Yo diría que la lectura también juega un papel importante, podría buscar un equipo de desarrolladores que estén organizando un proyecto de código abierto (Busque uno en github u otros sitios similares) porque podrían ofrecerle una valiosa experiencia de desarrollo de equipo.

Bugster
fuente
2

A veces, lugares como sourceforge son un poco desalentadores al principio. Una forma realmente agradable de encontrar algo que hacer es rastrear los rastreadores de problemas de los proyectos y encontrar un error / problema que le guste el sonido de la solución.

En algunos proyectos de github a pequeña escala, esto se vuelve mucho más accesible. Efectivamente tiene una dirección y un propósito al tratar de asimilar el código, en lugar de leerlo a ciegas.

lwm
fuente
1

Las muestras en los libros o las tareas en la universidad son buenos puntos de partida para comprender cómo funciona la programación y muestran las posibilidades para sus futuros proyectos.

Trabaja en proyectos reales

Pero sin una experiencia de proyecto real, tiendes a olvidar las cosas que aprendiste.

Los problemas son oportunidades para mostrar lo que puedes

Además, usted ve en un proyecto real cuán complejos pueden ser los requisitos y usted tiene problemas difíciles de resolver. Estos problemas son oportunidades para mostrar lo que puede. Puedes ver tus lados débiles que deberías mejorar.

Kayser
fuente
-1

¿Necesito aprender php, mySQL o cualquier otro idioma?

Sí señor, considere los idiomas de la red mundial. HTML5, CSS3 y JavaScript.

Aquí es por qué:

  1. Son rápidos de aprender y cada vez más ricos en implementar.

  2. Ya no solo escriben en la web, sino también en el sistema operativo, el servidor y la base de datos.

  3. Lo más importante *

    Ahora están siendo utilizados para redefinir Computer Science 101 , por el creador de jQuery, John Resig.

No dispares al mensajero, solo mira este enlace a la academia de la escuela khan .

Los patrones de diseño de c / c ++ / c # se transfieren a JS allí.

Espero que ayude.

Jack Stone
fuente
+1 - Tan mal que esto se votó negativamente. La información es válida El enlace es creíble. La fuente es jQuery Genius John Resig, iniciando un curso de programación 101 con JavaScript, y funcionará. Echa un vistazo a Khan Academy. Votar por el potencial para avanzar en la educación; en lo mas mínimo. Gracias.
Jack Stone el