TL; DR Siga haciendo programación competitiva pero al mismo tiempo comience a explorar todos los diferentes campos de la informática, aprenda nuevos idiomas y tecnologías e intente contribuir a algunos proyectos de código abierto.
Has comenzado una programación competitiva desde tu primer año de universidad. Eso es bueno. Ahora es tiempo de que comiences a explorar el vasto mundo de la informática. Esto no significa que tenga que dejar de hacer programación competitiva. No, no es así en absoluto. Sigue practicando problemas y participando en concursos, pero al mismo tiempo deberías comenzar a hacer más de lo siguiente:
1. Aprende a usar Linux
Es posible que no le guste esto al principio o que piense que es necesario. Puede decir: “¡Pero puedo hacer lo mismo en Windows! ¿Por qué Linux?” y estarías más o menos correcto. Pero como chico de CS, creo que deberías aprender a usarlo. Windows (siendo de código cerrado) no le da la oportunidad de explorar el funcionamiento interno del sistema operativo. Mientras que si comienza a usar Linux, comenzará a comprender cómo funciona realmente el sistema operativo. Simplemente instálelo en una máquina virtual y pruébelo durante un mes o dos. Ir a una distribución como openSUSE, CentOS o Fedora. La distribución más popular para principiantes es Ubuntu, por lo que es posible que desee darle una oportunidad a Mint (Cinnamon y MATE son mejores que Unity IMO) si no le gusta ninguno de los anteriores. Si decide que le gusta, continúe y arranque dual con Windows o si es aventurero, ¡vaya 100% Linux! Es posible que no sienta que ha aprendido tanto como le prometí que haría con una de las distribuciones anteriores. Si ese es el caso, entonces es hora de pasar a Arch Linux. Eso debería ser lo suficientemente bueno para usted a menos que le guste tanto Linux que decida ser totalmente hardcore e instalar Linux desde cero.
- ¿Cuáles son las mejores herramientas de modelado de software?
- ¿Cómo se ve tu equipo?
- ¿Es Giga Flops una forma confiable de comparar la velocidad de los procesadores de la computadora (no le interesa la potencia u otros parámetros)?
- ¿Cuáles son algunos esfuerzos interesantes de código abierto en computación paralela?
- Teóricamente, ¿es posible crear un sistema de almacenamiento informático que imite el de un cerebro?
2. Aprende un nuevo idioma
Obviamente me refiero al lenguaje de programación aquí, pero tampoco estaría de más aprender un idioma hablado. Sin duda tendrá mucho tiempo para hacer ambas cosas en su segundo año. De todos modos, creo que ya sabes C, C ++ y Java. Antes que nada, aprende uno de estos muy bien antes de comenzar a aprender más. Una vez que haya terminado con eso, intente aprender un tipo diferente de idioma. Por ejemplo, si elige C, aprenda un lenguaje de programación orientado a objetos como Java o C ++. Si buscas un lenguaje orientado a objetos, prueba un lenguaje de programación funcional como Haskell. La mayoría de los idiomas no pertenecen a un solo tipo de lenguaje, pero aprender diferentes tipos lo introducirá a diferentes estilos de programación. Algunos otros lenguajes populares que podría intentar aprender son Python, Javascript y Ruby.
3. Manténgase actualizado
Las sugerencias que di arriba pueden parecer aburridas porque suenan demasiado a estudiar, pero esta debería ser interesante. La gente viene con cosas nuevas todos los días. Nuevas tecnologías y softwares se hacen constantemente. Es importante saber qué está pasando en el mundo de la informática. Si eres un geek tecnológico, estas cosas deberían interesarte. Lea HN, Slashdot y los subreddits que le interesen.
4. Contribuir a proyectos de código abierto
Esto es algo que te enseñará mucho y te sentirás bien y serás parte de algo más grande. Personalmente siento que más personas deberían hacer esto. Ya sea que se dé cuenta o no, ha utilizado algún programa de código abierto e incluso podría estar utilizando uno ahora. Y la buena noticia es que no tienes que ser solo un usuario. Puede contribuir a los miles de proyectos de código abierto que existen. Todos ellos aceptan contribuciones y solo son posibles gracias a ellos.
5. Aprenda git o algún otro sistema de control de versiones
Es algo que es muy probable que uses si alguna vez trabajas en algún proyecto. Si vas a seguir la sugerencia 4, tendrás que hacer esto de todos modos. ¿Alguna vez ha escrito un buen programa de trabajo, le hizo algunos cambios y descubrió que no funciona y no sabe qué cambió que lo rompió? El control de versiones resuelve este problema por usted. Es una habilidad muy útil para cualquier programador.
6. piratear
No, no me refiero a aprender a entrar en sistemas seguros (o inseguros, según sea el caso). El origen del término piratería en el mundo de las computadoras es mucho antes de que el público en general lo considerara sinónimo de crackeo. Por supuesto, también puede aprender eso si está tan inclinado. Lo que realmente quise decir es probablemente mejor explicado por Eric S. Raymond Cómo convertirse en un hacker
Por cierto, no tienes que hacer todo esto a la vez. Uno o dos a la vez es más que suficiente. Probablemente también debería agregar que de ninguna manera soy un experto en ninguna de estas cosas; Solo estoy aprendiendo también. Más importante aún, te quedan tres años de universidad, gástalos sabiamente . No te preocupes por los punteros o las ubicaciones. Y tampoco te quedes sentado frente a tu computadora portátil todo el día y te preocupes por las cosas de CS. Sal y disfruta la vida también 🙂