¿Qué debo hacer como estudiante de CS de pre-final de año?

¿Quieres ser un desarrollador web o un verdadero programador?

Las dos cosas que mencionas: las habilidades de programación y las últimas tecnologías basadas en la web (o más bien modas) no están relacionadas con ser un buen desarrollador.

Confía en mí, desde que comencé a codificar (mucho antes de que pudiera andar en bicicleta), he trabajado con quizás un centenar de plataformas / bibliotecas / idiomas / frameworks / lo que sea que llamen estos días

Escribí quizás varios cientos de miles de líneas de código, y me pagaron al menos el 90% de eso.

La verdad es esa :

  • El conocimiento algorítmico no es una herramienta realmente útil para resolver problemas del mundo real. En todos mis años de programación, tal vez hay 5 proyectos que tenían algoritmos no triviales que necesitaba buscar, y he escrito todo, desde simulaciones matemáticas hasta gráficos en 3D y herramientas de compresión de datos.
  • Los marcos son una completa pérdida de tiempo para concentrarse. Hay algunas cosas como la biblioteca de tiempo de ejecución de C o OpenGL que permanecerán con vida durante muchos años todavía, pero todo este nuevo material es un destello en una sartén.

Para ser realmente un experto en este campo, debe ir a “pila completa”: debe aprender los conceptos básicos de hardware, programación de bajo nivel, cosas de nivel de sistema operativo y luego todo lo demás para tener al menos una idea razonable de cómo para escribir cualquier programa que te pida. Debe poder escribir código general en cualquier idioma con el marco que le digo, dentro de unas pocas semanas.

El truco es retener los fundamentos en la memoria y olvidar los detalles. No tiene sentido memorizar detalles como llamadas de API, etc.

Los genios de la industria son aquellos que se adaptan rápidamente y aprenden y desaprenden rápidamente. Debe tener una gran curiosidad por todo lo relacionado con las computadoras.

Lo mejor que puede hacer es comenzar a trabajar en un proyecto no trivial en su tiempo libre y hacer un voto de que nunca le preguntará a nadie cómo resolver algo, a menos que haya intentado resolverlo usted mismo durante unas horas al menos.

El día que crees que puedes codificar cualquier cosa que se te ocurra, sin ninguna tensión, ese día has madurado como programador. Entonces no buscas trabajo, los trabajos vienen a ti.

HackerRank y todas las demás sugerencias son buenas, pero no estoy de acuerdo con ellas. Como se señaló correctamente, creo que debería elegir la segunda opción. En este momento no sabes nada porque no te enseñan nada en la universidad. Digo aprender sobre marcos y herramientas básicas que son parte integral de la vida de cualquier desarrollador. Conozca las herramientas de control de versiones, las herramientas de integración continua, las últimas tecnologías y los estándares de la industria.

Con mi poca experiencia en Amazon y Paypal, te sugiero que sigas los siguientes temas para tener una idea vaga (no en profundidad). Recuerde que esto no es lo básico, como las normas de codificación rudimentarias y geekforgeeks.com.

Nivel frontal:

  • Servidor de aplicaciones / Contenedor: Tomcat, Glassfish o un híbrido como Nodejs, Play, Lift, etc.
  • Lenguajes de script como Python o Ruby
  • Protocolo de conexión: HTTP simple sobre TCP / IP o SOAP
  • Plantillas de motores (Dust, jade, JSP, etc.) y HTML5; conocimiento de scripting del lado del cliente y css para una mejor interfaz de usuario – BootStrap;
  • Desarrollo de aplicaciones nativas móviles (Android, iOS, Windows), principalmente actividades y servicios que se ejecutan en el dispositivo
  • Herramientas de automatización de pruebas funcionales (selenio, Nemo, etc.)

Nivel medio:

  • Puede ser cualquier lenguaje (preferiblemente Java), pero decide entre HTTP simple sobre TCP / IP o SOAP para el protocolo

Backend (un desarrollador web no necesita ser maestro de estos, pero al menos debe estar familiarizado con ellos):

  • Conocimiento de un par de bases de datos relacionales (Oracle, Sqlite, Sqlplus, etc.)
  • Conocimiento de un par de bases de datos no relacionales (orientadas a columnas / documentos o valor clave): Mongo, Cassandra, etc.
  • Conocimiento de ORM como Hibernate, Spring ORM o incluso jdbc simple
  • Big data (no específico para desarrolladores web pero porque Big Data se está moviendo de “grande en términos de volumen” a “grande en términos de velocidad / variedad”): Mapa / Reducir (Hadoop, Hbase), Pig, Hive

Paradigmas y conceptos de programación general:

  • Conozca los estilos de programación funcional (Scala, JS, Java más reciente) y reactiva; Están destinados a la escalabilidad, una gran necesidad de aplicaciones web.
  • OOAD no se dice.
  • Aspectos no funcionales:
    • Domina el teorema del CAP.
    • lista de patrones de escalabilidad (alrededor de 6 a 7)
    • Técnicas de disponibilidad (solo una pareja)
    • Amenazas de seguridad comunes y sus soluciones (solo elija los 5 o 6 principales)
    • Herramientas de prueba de L&P, específicamente para aplicaciones web (aplicaciones de navegador y servicios web)
  • MVC: Struts, Spring MVC, AngularJS, etc.
  • Facilidad de uso en JSON y XML
  • Varias formas de solicitud web: AJAX, canalización HTTP, disparar y olvidar, asíncrono, etc.
  • [opcional] Comprender AOP (AspectJ o SpringAOP o AspectC ++)
  • Esto es bueno saberlo para un gran desarrollador web, pero tener una vaga idea de ellos te ayudará mucho.
    ¡Todo lo mejor!

    Tome el único proyecto con el que siempre ha soñado, en el que cree que es realmente divertido trabajar y lo suficientemente pequeño como para que pueda completarse al menos un modelo de demostración en 3-4 meses (¡se extenderá eventualmente, sin importar lo que pase! ) Comience de inmediato. Aprenda lo que sea necesario para construirlo en el camino.

    La ingeniería no se trata de llenar tu cerebro con tecnologías aleatorias. Cientos nuevos surgen cada día de todos modos y la vida es demasiado corta. ¡La ingeniería se trata de construir algo, construir algo útil, algo genial o incluso algo estúpido es absolutamente increíble! 🙂

    ¡Construye algo y el trabajo de tus sueños te encontrará tarde o temprano o tal vez crearás uno para los demás!

    En unión con lo anterior, también puede realizar pasantías, participar en hackatones o competencias si lo desea.

    Opinión general: felicidades, parece que le está yendo mejor que el 90% de su cohorte al preocuparse por las elecciones que haga hoy, lo que tendrá un profundo y profundo impacto en su carrera profesional en los próximos años. Francamente, desearía ser tan atento como tú hoy sobre mi futuro profesional.

    Un título universitario en informática servirá como piedra angular en una amplia gama de carreras. No se configure para ser encasillado como programador “web”, programador de sistemas, diseñador de interfaz de usuario o cualquier otra función nueva que pueda surgir. Tales roles van y vienen, pero sus habilidades deben ser duraderas. He visto estudiantes (incluido yo mismo) que han cambiado sus inclinaciones a medida que avanzaban en su carrera profesional. Un amigo cercano quería ser un gurú de la ingeniería de sistemas durante su licenciatura y ahora trabaja en una de las mejores casas de diseño del mundo. No cierre las puertas a las carreras antes de tener la oportunidad de experimentar el mundo real.

    Concéntrese en los conceptos básicos: pensamiento algorítmico, estructuras de datos, diseño orientado a objetos, etc., conceptos básicos de redes y sistemas operativos, etc. Es una buena apuesta que estos fundamentos no cambiarán durante mucho tiempo.
    Una buena mentalidad algorítmica probablemente se mantendrá bien si está trabajando en una tienda de redes o en una casa de diseño web genial. Desde mis lenguajes de programación de observación, los marcos son altamente volátiles.
    Manténgase agonista ante tales tendencias. Te servirá bien. Los mejores ingenieros están bien versados ​​en 4-5 idiomas y expertos en 1-2 idiomas / marcos. Sitios web de programación competitivos, Github son buenas vías para establecer sus habilidades de programación. Considere convertirse en activo en proyectos de código abierto que son ampliamente utilizados. Únase a hilos de correo y salas de chat de IRC para estos proyectos. Lo expondrá a otros programadores, diversas ideas y desafíos (buenos y malos) del desarrollo de código. Es fácil suponer que las contribuciones a una comunidad en línea se refieren a escribir grandes porciones de código y desarrollar mejoras de características.
    La solución de problemas simples o “QA” son contribuciones perfectamente suficientes.

    Diversidad: no dude en experimentar con todos los aspectos de la pila de tecnología moderna. Ya se trate de bases de datos, programación web, middleware o conceptos de sistemas de bajo nivel o programación móvil. Cada área presenta sus propios desafíos que pueden despertar su interés.

    Desarrolle una marca: a medida que trabaja y expone sus habilidades en línea, no dude en construir una marca a su alrededor. No hay daño en la autopromoción. Sus contribuciones a una comunidad en línea, las respuestas a un hilo de correo electrónico abierto pueden servir como la vanguardia de su ejercicio de marca propia.

    Pasantías: este es probablemente el aspecto más difícil. Las pasantías como concepto en India aún son muy incipientes y prácticamente inexistentes para el estudiante promedio, excepto que, por supuesto, está bien conectado con los niveles más altos en las empresas de tecnología. Una pasantía lo expondrá a las complejidades del mundo corporativo. Algunos de los cuales te pueden gustar y otros que probablemente no te gusten. La diversidad en las pasantías también ayudará. Cuantas más pasantías pueda hacer, mejor será cuando se gradúe.

    Habilidades no técnicas: Estas habilidades son las habilidades más subestimadas que un joven ingeniero probablemente no podrá desarrollar al ingresar al lugar de trabajo. La comunicación representa aproximadamente el 40-50% de cualquier trabajo. La comunicación incluye comunicación tanto verbal como escrita. Concéntrese en escribir contenido conciso, bien aunque fuera y estructurado. Si hablar inglés no es tu fortaleza, trabaja en ello. En el trabajo, tendrá que generar documentos y presentar estos documentos a una audiencia. Los mejores ingenieros son personas que tienen una combinación de habilidades técnicas y un buen dominio de sus habilidades de comunicación.

    Trayectoria profesional: ¿Te ves algún día emprendedor? Intente trazar un mapa de su trayectoria profesional que probablemente nunca sea cierta cuando ingrese a la fuerza laboral, pero tener un plan será de gran ayuda. Piense en las empresas en las que le gustaría trabajar y observe sus aperturas. Le ayudará a desarrollar una carrera profesional.

    Al pensar en estos puntos, ¡te deseo buena suerte!

    Si está buscando ubicarse en 5-6 compañías, entonces SÍ, vaya con la opción 1 y mejore las habilidades de programación. Junto con eso, tome una buena estructura de base de datos de net e intente implementar su lógica comercial con las habilidades mencionadas en la opción 2. por ejemplo, cree un blog usando Angular.js, node.js, bootstrap (del cual tiene una idea). Mi enfoque sería lograr algo visible con una lógica empresarial compleja.

    Cree un portafolio de código o sitios web que le pertenezca sin ambigüedades (su nombre e imagen en algún lugar de la página), que muestre su habilidad técnica; por ejemplo, cree algunas páginas WebGL que muestren su capacidad para manejar conceptos avanzados.

    Las clasificaciones de código me dejan frío. Lo único que me importa al entrevistar a alguien es lo que han logrado: sus proyectos de trabajo y sus proyectos personales. Si un graduado viene a mí sin un portafolio de proyectos personales, no tengo uso para ellos; mi suposición automática es que su corazón no está en eso, realmente no disfrutan mucho la programación.

    More Interesting

    ¿Cuál es la diferencia entre pasantía y formación profesional?

    He fallado mi segundo año de ingeniería, dos veces. ¿Hay alguna esperanza para mi?

    ¿Qué debo tomar para aumentar mis posibilidades de obtener una pasantía en informática: clases de gráficos o de aprendizaje automático?

    ¿Cómo es ser pasante en Deloitte USI Consulting India?

    ¿Cómo puede un estudiante de la Universidad de Thapar obtener una pasantía de investigación en el extranjero?

    ¿Cuáles son los pros y los contras de tomar un año sabático en medio de la universidad?

    ¿Debería hacer una pasantía en CDOT durante este verano o debería buscar un inicio, siendo un estudiante de tercer año de ingeniería informática?

    ¿Cuánto impuesto debo pagar como estudiante internacional haciendo una pasantía en Alemania?

    ¿Hay alguna organización que acepte graduados de secundaria para pasantías de verano?

    ¿Dónde podemos obtener pasantías en línea para ECE?

    ¿Cómo puedo solicitar una pasantía de verano o capacitación para ingeniería mecánica de tercer año?

    He fallado miserablemente en mi intento de encontrar un borrador. sci. prácticas de verano para este verano (2014). ¿Qué puedo hacer para conseguir uno bueno el año que viene?

    ¿Puedo obtener entre 6 y 12 meses de pasantía después de completar mi ingeniería pero con retrasos activos? En caso afirmativo, ¿cómo debo hacer eso?

    Cómo obtener experiencia en ingeniería mecánica sin una pasantía

    Cómo obtener pasantías en LinkedIn