Voy a ingresar al segundo año de la B. Tech. en el programa CSE en MNNIT. He comenzado la programación competitiva. ¿Debo continuar con esto o poner énfasis en trabajar en proyectos y desarrollo de software?

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.

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 🙂

Puede mantener la programación competitiva como un pasatiempo si realmente le gusta, y hacer todo lo demás uno al lado del otro porque en realidad lo ayudará a aumentar sus habilidades de programación y habilidades de pensamiento que seguramente lo ayudarán en cualquier tipo de proyecto o desarrollo de software que desee para comenzar.

More Interesting

¿Cómo es tomar una clase en línea de Stanford CS, como ml-class o ai-class?

¿Hay proyectos de inteligencia artificial que se centren en descripciones de audio para video?

¿No soy adecuado para aprender el aprendizaje automático y el aprendizaje profundo si solo puedo pasar como máximo 3 horas después del trabajo?

¿Cuáles son las 3 mejores mejoras tangibles logradas con IA o aprendizaje profundo que han ayudado más a la medicina clínica?

¿Puede un solo GTX 970 ejecutar juegos de triple monitor?

Cómo obtener sonido de una computadora al televisor

¿Cuál es la diferencia entre software y algoritmo?

Si una dirección RAM contiene 8 bits, ¿contiene códigos de operación y operandos en la misma dirección? Si una dirección de memoria es de 8 bits y tiene un tipo de datos de 32 bits, ¿cargará la CPU los 4 bytes automáticamente?

¿Cuál es la diferencia entre la variable de referencia en Java y los punteros en C?

Soy un brogrammer exitoso. ¿Cómo hago la transición al jefe de cabello puntiagudo y / o al rockstar de la banda de chicos?

¿No se puede sobrescribir directamente un Disc-RW en lugar de dejarlo en blanco primero?

¿Cuál es la diferencia entre el control de calidad para una plataforma Enterprise Big Data vs una aplicación Enterprise Big Data?

¿Cómo puede contribuir la informática a la producción de energía renovable?

¿Cómo debería aprender el aprendizaje automático este verano e implementarlo en un proyecto como menor o mayor?

¿Vale la pena la escuela de verano Wolfram si no te gusta el libro "Un nuevo tipo de ciencia"?