Más allá de aprender Java, PHPw / mySQL, HTML + CSS, lo cual he hecho, ¿cuáles son algunas formas para que un estudiante de secundaria amplíe sus conocimientos sobre programación y computadoras?

Ese es un gran progreso y los felicito por haber aprendido tanto hasta ahora. Muchas personas 10 años mayores que tú todavía están luchando con cualquiera de esos dos.

La codificación es solo un aspecto de la ingeniería de software. Hay muchas otras tareas que necesitarás dominar para ser verdaderamente exitoso. Enumeraré algunas de estas áreas de estudio y un libro recomendado para que lea en cada una.

  • El control de revisión del código fuente es esencial para seguir su progreso, ya sea que sea un programador solitario o que trabaje con un grupo.
    Control de versiones pragmáticas usando Git
    • El diseño orientado a objetos es importante para hacer que los proyectos de codificación más grandes sean más mantenibles y reutilizables.
      Head First Análisis y diseño orientado a objetos
    • Los patrones de diseño son el siguiente paso para comprender las técnicas comunes del diseño orientado a objetos.
      Head First Patrones de diseño
    • ¡La programación implica mucho más que la codificación!
      El programador pragmático: de oficial a maestro
    • Diseño web para que sus aplicaciones sean profesionales, modernas, divertidas y utilizables.
      Diseño web para desarrolladores: una guía del programador para diseñar herramientas y técnicas
    • La prueba es una habilidad que te garantizo que te hará escribir mejor código.
      Cómo romper el software web: Pruebas funcionales y de seguridad de aplicaciones web y servicios web.
    • La seguridad es una responsabilidad que todo programador debe tomar en serio.
      Seguridad esencial de PHP
    • La documentación es crucial para cualquier software. ¿Cómo lo usará alguien?
      ¡Léeme primero! Una guía de estilo para la industria informática, tercera edición
    • Recopilación de requisitos : ¿cómo sabes qué construir?
      Requisitos de software 2
    • Planificación: importante al hacer proyectos más grandes o trabajar con otras personas.
      Diseño de comunicación: desarrollo de documentación del sitio web para diseño y planificación

    Y tengo que conectar mi propio libro, una descripción de errores comunes al programar SQL, y cómo solucionarlos:

    • Antipatterns SQL: evitando las trampas de la programación de bases de datos

    Recomendaría continuar programando y absorbiendo lo que le interese. Si le apasiona una tecnología, un marco o una herramienta, sumérjase y lea parte de su código fuente. Al igual que aprender un lenguaje natural, la programación se acelera mejor leyendo y escribiendo la mayor cantidad de código posible.

    No necesariamente quedaría atrapado en aplicaciones o desarrollo web, las personas que se apasionan por ellas tenderán a venderlo como la cúspide de ser un programador, y que la informática y la programación son simplemente herramientas para ese fin. Después de haber trabajado tanto como investigador como desarrollador web, puedo decirte que no es necesariamente lo más difícil que uno puede hacer, y tus intereses pueden estar en otro lado. Tengo amigos que prefieren la robótica, la seguridad, la síntesis musical, el arte generado o la programación científica.

    Le recomiendo que amplíe su conocimiento de la informática y la programación en el mundo en general.

    Creo que parte de esto es la comprensión de que la programación está viva en cada parte de la vida. Casi todo ha sido tocado por las computadoras, incluida la entrega de sus paquetes, envíos de alimentos a la tienda de comestibles, transacciones, ascensores, automóviles, servicios bancarios, facturas, atención médica, escolaridad, ciencia e incluso partes de su hogar están controlados por computadoras, y las personas que los programan. Es importante tener en cuenta cuán amplia es la programación como disciplina.

    Con esto en mente, no se fije en una sola cosa. Conozco a muchas personas que comenzaron la universidad con intereses concretos como el desarrollo de iOS, redes, diseño de juegos, etc. Muchos de ellos han descubierto pasiones que antes no conocían, como la teoría del lenguaje de programación, matemática de nivel superior, criptografía, seguridad informática, arquitectura de computadoras, inteligencia artificial, aprendizaje automático o que en el fondo son ingenieros de software. Explorar este espacio es una parte importante para descubrir lo que amas.

    Especialmente en estos primeros tiempos de su vida, se trata de no poner nada en piedra, sino de aprender tantas cosas diferentes (no solo de programación y CS) como sea posible, y mantener una mente abierta. Esto puede sonar ridículo, pero las cosas que le interesan ahora probablemente no sean las mismas que le interesarán a los 23. Si me preguntara a mi hijo de 17 años qué estaría haciendo hoy, mi respuesta definitivamente no sería lo que estoy haciendo. hoy. Puede terminar en finanzas, organizaciones sin fines de lucro, la NASA o su compañía de software local, y depende de usted decidir qué es lo que más le conviene.

    Las experiencias de aprendizaje más valiosas para mí siempre han sido autoguiadas. Si no sabe nada sobre la complejidad computacional, aprenda sobre eso, si no sabe sobre MVC, aprenda sobre eso, si no sabe qué es la programación funcional, aprenda eso, si no conoce Ruby on Rails ve a aprender eso. En el proceso eliminarás las cosas que no son importantes para ti y descubrirás qué es.

    Aprender sobre patrones de diseño u otras metodologías probablemente no sea tan útil, solo tome una gran cantidad de temas y las cosas sin importancia desaparecerán. Tomaría algunos libros sobre temas que desea conocer y leer.
    En términos de recursos concretos, simplemente lea Wikipedia para tener una idea de algunos de estos temas a medida que escuche sobre ellos y profundice en los específicos a medida que van surgiendo. Encuentre libros, lea las respuestas de desbordamiento de la pila, cree lo que le interesa y aprenda de los que vinieron antes.

    La mejor parte de productos como GitHub es que * tanto * mucho código es un lugar para leer. Cuando estaba aprendiendo a programar a principios de la década de 2000, los recursos no eran tan frecuentes y me dificultaba aprender. Si quieres saber qué está sucediendo, por ejemplo, Ruby, solo echa un vistazo a los commits sobre GH y mira cómo funciona el proyecto, puedes hacerlo escribiendo no con resistencia cero.

    Mi último consejo es el más concreto, ve a aprender Git y C / C ++, independientemente de lo que hagas en el futuro. C es el mundo vernáculo o de programación, y es el conocimiento necesario para comprender realmente muchos proyectos grandes. Git se está convirtiendo rápidamente en la forma de facto de trabajar en * cualquier * proyecto, lo usamos en mi laboratorio de investigación para todo nuestro trabajo, lo he usado en todos mis trabajos recientes, y la gente incluso lo está usando para escribir libros de matemática teórica .

    1) Aprende a codificar. Java es un excelente lenguaje para comenzar, pero en CodeAcademy también puedes aprender los conceptos básicos de Javascript, jQuery, Python y Ruby.
    2) Conozca su ABC: siempre esté codificando. Como cualquier otro lenguaje, puede olvidar los fundamentos de los lenguajes de programación si no se usan durante demasiado tiempo. Intenta hacer un proyecto cada semana o dos para mantenerte alerta.
    3) Pon a prueba tus límites. Si hay un programa que desea construir y no sabe cómo hacerlo, hay toneladas de recursos en línea para ayudarlo. Sé que he pasado días de mi vida en Stack Overflow para programar tareas y trabajos.
    4) Diviértete! Aprender a codificar es una gran experiencia y espero que sigas disfrutando durante la escuela secundaria y el resto de tu vida adulta. ¡La mejor de las suertes para ti!

    No estoy seguro de en qué nivel estás con esas habilidades, pero una vez que llegas a un cierto punto, quieres comenzar a sumergirte en todo lo que encuentras y con lo que no estás familiarizado.

    Si te encuentras con un nuevo concepto, incluso si no es algo directamente relevante, pasa unos buenos 20-30 minutos leyéndolo para obtener una comprensión básica de lo que es. Esta es una buena manera de ampliar su conocimiento y le ayudará a obtener una perspectiva más sólida que le proporcionará una mejor visión de lo que realmente quiere aprender. Si está leyendo un artículo o tutorial y se encuentra con alguna terminología de la que no está seguro, incluso si puede inferir el significado del contexto, tómese el tiempo para buscarlo y hacer todo lo posible para comprender lo que es.

    No se contente con saber lo suficiente como para ponerlo en práctica, aprender los conceptos subyacentes y preguntar “¿por qué?” ¿no como?’. Como ejemplo, puede llegar lejos y convertirse en un buen desarrollador sin comprender cómo funciona el hardware, pero aprender sobre conjuntos de instrucciones, puertas lógicas, ALU, etc. ampliará su perspectiva e indirectamente contribuirá a su habilidad como ingeniero.

    Siempre desafíe su forma de hacer las cosas y no tenga miedo de experimentar con nuevas ideas o tecnologías. En lugar de hacer preguntas como ‘¿debería usar el lenguaje X o el lenguaje Y?’, Pruébelos usted mismo y vea qué funciona para usted.

    Familiarícese con los campos relacionados, como las matemáticas, el diseño de la experiencia del usuario, etc. No necesita dominar estas áreas, pero aprenda su importancia y el papel que desempeñan en la ingeniería de software.

    Si desea consejos más tangibles, le sugiero pasar a un lenguaje de nivel inferior como C o C ++; quizás también sea un poco ensamblador, no es necesario que se convierta en un experto, pero es útil poder depurar o desensamblar algún código y tener una idea de lo que está sucediendo. Mire algunos lenguajes y plataformas más modernos como Ruby o node.js. Pruebe algunos marcos front-end modernos como Ember o Angular y aprenda a apreciar el desarrollo front-end; no caiga en la trampa de pensar que es más fácil que la programación del lado del servidor o las aplicaciones de escritorio.

    Mi sugerencia sería aprender C ++, es un lenguaje que puede tomar años para comprenderlo completamente (eso es bueno porque eres joven), y un par de años más para convertirte realmente en un experto debido a la naturaleza abstracta del lenguaje y su tipo rico. sistema.

    Si desea resolver los problemas de hoy, realmente no importa qué lenguaje de programación esté utilizando , por otro lado, si desea que su código realmente se compile dentro de 100 años (porque resuelve algún problema fundamental de la humanidad), es mejor que lo construya con C ++, porque en 100 años o más nadie aprenderá / usará PHP, Ruby, Java o C # para convertir su fuente a código de bytes moderno. pero definitivamente podrán compilar al menos su código C ++ en su máquina.

    El beneficio adicional para usted es que comprenderá cómo funciona su computadora en un nivel mucho más bajo de lo que aprendería casi cualquier otro idioma moderno.

    Yo también estoy en la universidad y sé esos idiomas. Continuaría aprendiendo, profundizando en javascript, jQuery y Ajax. Cuanto más aprendas, mejor, ¡nunca podrás aprender lo suficiente!

    Sin embargo, tenga en cuenta que la práctica hace al maestro. Compre su propio servidor (algunos son muy baratos, a partir de € 15 p / a. También hay servidores gratuitos, pero generalmente no son confiables), y cree sitios web. Tal vez intente y trabaje por cuenta propia: cree una cartera y encuentre clientes. La mejor manera de aprender a programar es aplicar la teoría.

    Desafortunadamente, algunos aspectos de la informática solo se pueden aprender a través del trabajo teórico, que sigue siendo muy importante. Asegúrese de que en su búsqueda de la práctica, no deje de lado los aspectos teóricos, ya que su objetivo es brindarle una comprensión más profunda de los lenguajes de computadora y cómo funcionan las computadoras en general.

    En primer lugar, ¡felicidades por haber aprendido tanto a tan temprana edad!

    Recomiendo comenzar con Learn to code para aprender algunos otros idiomas, o más para aprender los fundamentos de JavaScript y jQuery, o Ruby, o Python.

    Otros también han mencionado Coursera, que es otro gran recurso para aprender.

    Para ampliar eso, el control de versiones es un aspecto importante del mundo de desarrollo. Enseñarte a ti mismo cómo usar Git dará sus frutos diez veces porque te enamorarás (o al menos yo lo hice). Si no está familiarizado con Git, GitHub tiene un buen tutorial para principiantes sobre cómo configurar su sistema: Configurar Git · Ayuda de GitHub

    Además, esto es algo que no puedo enfatizar lo suficiente: use su conocimiento ya conocido y el conocimiento recién aprendido, y comience a aplicarlo a pequeños proyectos personales. Descubrí que la aplicación real de lo que estoy leyendo y aprendiendo me ayudó a comprender mejor la información y cómo usarla de manera efectiva. Además, con Git podrá compartir sus proyectos personales con otros desarrolladores (si elige hacerlo, AKA no usará repositorios privados) y podrá recibir comentarios en función de su trabajo. Eso también resultó ser una experiencia de aprendizaje efectiva para mí personalmente.

    Si bien no estoy seguro sobre el nivel de estudio en su escuela, siempre debe centrarse en lo básico y cosas que no necesariamente se relacionan con un lenguaje específico para una buena base.

    Además de esa mentalidad y enfoque que me ayudaron a crecer mucho más rápido:

    1. No existe el “proyecto pequeño”: cada proyecto en el que debería intentar trabajar de la manera más profesional posible.
      Desde que me uní al ejército, siempre tomé en serio todos los códigos o proyectos que escribí, incluso si era un sistema interno a pequeña escala que debía implantarse más adelante y obtuve las manos libres o algún proyecto propio, como resultado investigué mucho más sobre nada y obtuve una mejor comprensión de todo lo relacionado con él.
      A menudo veo que las personas que no toman en serio el proyecto terminan en muchas horas extras y errores debido a esa actitud.
    2. Convención de código: también debe crear su propia convención de código y forzarla lo más que pueda, son la clave del código que sería fácil de entender a largo plazo y menos posibilidades de errores en el corto.
    3. Plan: trabajé en algunos proyectos que se planificaron mal en el pasado o no se planificaron lo suficiente debido a la restricción de tiempo y, como resultado, mi tiempo de desarrollo tomó mucho más, ya que era más difícil entender el código o depurarlo con toda la extensión que terminó como resultado.
    4. Estudio del pasado: después de terminar un gran proyecto, intente analizar el proceso por el que pasó y anote lo que debe evitar del proceso, los problemas que tuvo y cómo podría evitarlos.
    5. Investigue nuevas plataformas y bibliotecas de desarrollo: estar en la zona familiar es mucho más fácil que aprender cosas nuevas que a menudo tienden a llevar mucho tiempo también, pero al final, saltar a una nueva plataforma siempre me ayudó a largo plazo y puede ayudar en el proceso de desarrollo mucho si se investiga adecuadamente de antemano.
    6. No tenga miedo de las nuevas plataformas: lo que me lleva al siguiente punto, a menudo el nuevo lenguaje o biblioteca puede ser frustrante e intimidante al principio, pero una vez que pasa esta etapa, todo comienza a fluir naturalmente poco a poco.
    7. Vaya a la convención y a la conferencia abierta: este lugar puede llevar a una discusión con personas que trabajan o tienen una perspectiva diferente y siempre puede aprender de ellas.
      el contenido de las conferencias también lo expone a nuevas tecnologías
    8. Encuentre a las personas que pueden brindarle el control de calidad inmediato: me ha ayudado mucho durante el diseño y los pequeños detalles, solo asegúrese de limitarlos al elemento específico que está probando y lo entienden.

    Comprende que un sitio web es como una casa. Cada idioma, como los constructores de una casa, tienen sus propios roles.

    HTML – La estructura de tu casa
    CSS: todo lo visual, como pintar y personalizar cada parte de su casa.
    PHP – La lógica y el cerebro – su fontanería, electricidad, etc.
    SQL: ahora tiene una casa construida y funcionando, pero debe almacenar datos: sus dígitos en su sistema de seguridad, las pertenencias de las personas / usuarios que se mudan
    Javascript / jQuery: estás listo para organizar una fiesta, congelar esa fiesta (eso está cargando tu página, todo lo que ves justo cuando se carga) ahora presiona jugar, haces que un perro corra, amigos chateando y conversando, etc. todo lo que se está moviendo y actualizando en esa página sin la recarga de la página es Javascript. P.ej. El control deslizante, el chat de Facebook, el servicio de noticias se actualizan automáticamente
    AJAX, esencialmente sacando solo lo que se necesita de la base de datos sin tener que volver a cargar toda la página, tal vez hacer que tu amigo te traiga una cerveza en lugar de ir a una página completamente nueva para obtenerla.

    Espero que esto ayude. Comience con HTML, CSS y PHP.

    Construye algo. Sabes lo suficiente para crear sitios web, ¡genial! Pero la progresión de un desarrollador junior a un desarrollador senior es aprender a construir y mantener aplicaciones más grandes y resolver problemas más difíciles.

    Llegará a ambos si simplemente elige un proyecto y comienza a trabajar en él. Una alternativa es descargar una aplicación de código abierto que le interese y comenzar a aprender cómo funciona. No me molestaría en aprender el lenguaje XYZ a menos que te interese (es decir, solo preocúpate por C #, C, Python, Ruby, C ++ si hay un proyecto en el que quieras entrar que los use). Tal vez Scala / F # / ML si quieres meterte con tu mente y aprender idiomas funcionales.

    Leer grandes aplicaciones de código abierto bien mantenidas debería enseñarle mucho. También puede leer su registro de errores e intentar corregir algunos. Luego, si te quedas atascado, salta a la lista de correo, di en HS y trata de arreglar foo. Eso debería obtener algo de ayuda de la mayoría de los desarrolladores de código abierto. Intenta descubrir por qué y cómo crearon la aplicación para hacer ciertas cosas. Cualquier aplicación grande con buenos documentos en su arquitectura también sería una buena lectura.

    Además, aprender JavaScript / Ajax es importante si comienzas a construir aplicaciones web.

    En definitiva, concéntrate en lo que quieres hacer o lo que te interesa. Esto te ayudará a aprovechar más tu motivación y a mantenerte enfocado.

    Felicidades por aprender tanto a esa edad. Como alguien que lucha con las complejidades del diseño web en general a la edad de 29 años, lo felicito.

    Mi consejo para usted es que no solo continúe buscando la programación y las ciencias de la computación, sino que también busque la comprensión de los negocios y el valor de las grandes ideas que pueden ser cambiadores de juego disruptivos. Tome algunos cursos u obtenga más información sobre cómo comercializar y dar forma a una idea de negocio: cómo aislar un mercado y presentarlo a los inversores, etc.

    No recuerdo quién dijo esto, pero fue en una entrevista con un programador de Google. Se le pidió que diera algunos consejos sobre cómo ser un programador y su respuesta fue algo así como: “¡Un buen programador conoce el código pero también comprende los requisitos comerciales y comercializa su construcción!”

    Entonces, esencialmente, ahora que sabes cómo construir CON los detalles, aprende a crear una idea. Aprende a hacer una lluvia de ideas sobre cosas nuevas y geniales y te veré en las noticias.

    Pensar fuera de la caja.

    Cuando estaba en el primer año de secundaria, estaba en tu posición. Primero elegiría JavaScript ya que eso se está volviendo cada vez más importante. Luego aprenda jQuery y un marco como AngularJS, Ember, Meteor o Backbone.js. Una vez que haya aprendido estas cosas, debe estar equipado para crear cualquier sitio web con el que pueda soñar. Luego, puede comenzar a crear sitios web que resuelvan problemas que tenga o cubran áreas de interés. Luego puede vender esos sitios web en línea, anunciarse en ellos o mantenerlos por interés personal.

    Además de eso, probablemente me sumergiría en la teoría de CS y comenzaría a aprender estructuras y algoritmos de datos. Desearía haber comenzado a aprender estructuras de datos y algoritmos antes … son súper divertidos y, en mi opinión, infinitamente más gratificantes que la programación.

    No olvides aplicar las habilidades que has aprendido, esto te ayudará a recordarlas y es la parte más divertida del aprendizaje 🙂

    Si estás interesado en la programación, participa en concursos de programación. Un buen lugar para hacerlo en línea: topcoder. En muchos países, también encontrarás concursos en la escuela, concursos locales o regionales en los que puedes participar. Consulta ACM ICPC, Google Codejam, etc. Te ayudan a descubrir lo divertida que puede ser la programación 🙂 Puedes resolver problemas lógicos y codificarlos y competir contra otros de ideas afines.

    También reiterando, ¡Coursera es realmente genial!

    No puedo recomendar Coursera lo suficiente. Si no está familiarizado con él, Coursera es un sitio donde universidades destacadas ofrecen cursos en línea de forma gratuita, generalmente de muy alta calidad.
    Como con la mayoría de las fuentes de aprendizaje en línea, la informática está muy bien representada. Por ejemplo, tienen una clase sobre algoritmos que comienza a fines de enero. El curso de aprendizaje automático de la Universidad de Stanford es particularmente sorprendente, pero también requiere mucho trabajo.

    Una de las mejores maneras de hacerlo era descargar una aplicación en un iDevice llamado “iTunes U” y allí puedes encontrar lecciones de clase sobre varios cursos sobre redes y programación de universidades como MIT, Harvard, entre otras, de forma gratuita. Puedes ver al maestro enseñando la lección, ver sus tareas, obtener notas, etc. Es realmente bueno, me ayudó mucho en el estudio de redes

    En primer lugar, ¡no lo veas como una competencia! La programación es una empresa cooperativa masivamente paralela, y ninguno de nosotros es una isla o trata de correr hacia la cima de una escalera. Cuanto menos te consideres un competidor y más como un contribuyente, más valor crearás y descubrirás.

    En cuanto a qué hacer ahora, realmente depende de cuáles sean sus pasiones. Te queda un tiempo antes de que necesites que te paguen por el código, así que haz lo que quieras hacer. Cuando era adolescente, quería hacer juegos. De hecho, todavía lo hago y sigo jugando con eso, a pesar de que no es mi trabajo diario. En mi tiempo, dada la potencia informática disponible y la disponibilidad práctica de herramientas de desarrollo, eso significaba simples juegos de texto. Así que trabajé como codificador y constructor de MUD. Es posible que no desee hacer juegos, pero si lo hizo, la buena noticia es que hay toneladas de herramientas increíbles para hacerlo.

    Quizás desee crear sitios web, software de comunicación o herramientas gráficas o musicales. Cualquiera sea el caso, hazlo. No se preocupe si es útil para otras personas en este momento, o rentable, o si se ha hecho antes. Lo que buscas es experiencia práctica, y lo obtendrás escribiendo código que te interese.

    Construye algo. Un sitio web, un programa, una aplicación. Elija uno, y puedo darle lo que debe leer / aprender en los comentarios.

    Construir algo le dará una comprensión de las partes de los ciclos de prueba y diseño que es difícil de absorber por completo sin práctica.

    ¡Felicidades por aprender tanto! Creo que JavaScript es grande. Quizás también debería aprender algo de programación funcional, puede hacerlo en JavaScript, Scala, Clojure, Haskell y otros.

    Sugerencia aún mejor: dado que has aprendido mucho y parece que estás dispuesto a invertir tiempo, creo que deberías ser voluntario en un proyecto de código abierto o comenzar tu propio Github con tus propios proyectos. Comienza a poner sitios web en Heroku. Creo que tienes una buena base y es hora de que aprendas cómo hacer un gran proyecto y escribir cosas que son más que juguetes. (Nota: es posible que no sienta que conoce bien Java después de hacer un gran proyecto, pero está bien, es mejor que bien).

    Sugerencias menos importantes: tal vez desee aprender los conceptos básicos de Page on Regex. Tal vez pueda obtener un Ardunio y comenzar a ensamblar y piratear hardware. Quizás puedas aprender C / C ++.