Cómo prepararme para una pasantía en Google y el Google Summer of Code (GSoC) desde el primer año en la universidad

Sí tu puedes. Pero tienes que trabajar duro. Mejore su nivel básico de comprensión de C ++ a un nivel experto. Hay varios recursos en línea donde puede agudizar su conjunto de habilidades.

Siguiente control de versiones. Es una habilidad esencial si está contribuyendo a proyectos de código abierto. Aprenda el control de versiones. La mayoría de los proyectos usan git. Así que comienza con git. Crea una cuenta Gihub. Haga que sus proyectos personales o académicos se exhiban allí. Aprenda a comprometerse, empujar y tirar. Obtenga información sobre cómo enviar una solicitud de extracción.

La siguiente parada comenzaría a contribuir al código abierto.

Primero trate de analizar sus habilidades y expectativas. Organice sus habilidades y expectativas y encuentre un proyecto de código abierto que alinee sus intereses. Si no sabe dónde encontrar dicha organización, el mejor lugar sería la página de organización GSoC de este año. Puede revisar la lista de organizaciones, sus misiones, sus tecnologías y seleccionar una que le apasione.

Una vez que selecciona una organización, puede visitar su sitio, suscribirse a su lista de correo, unirse al canal IRC, leer sus documentos sobre cómo contribuir e información sobre su producto y diseño. Al acecho en sus listas de correo para comprender cómo funciona la cultura o esa organización. Una vez que se sienta cómodo, envíe un correo electrónico a su lista de correo presentándose y pidiendo instrucciones y orientación sobre cómo contribuir.

Si los pasos para contribuir son claros y están bien definidos, puede seguirlos y preguntar a la comunidad si enfrenta algún problema. Sea un contribuyente constante y ayude a las personas, si sabe algo que ellos no saben. La columna vertebral del código abierto es la comunidad. Por lo tanto, sea un miembro activo de la comunidad, que respete las ideas de otras personas y ayude a otros de manera proactiva. Si tiene ideas desagradables, puede expresarlas. Pero hazlo de una manera que no sea ofensiva para los demás.

Luego, cuando se anuncie el GSoC, puede expresar sus intereses en los proyectos para encontrar un proyecto adecuado para usted. Como ya ha comenzado a contribuir y está familiarizado con la organización, esto sería fácil. Cuando seleccione un proyecto, prepare una propuesta que sea buena en detalles e información técnica sobre cómo va a hacer el proyecto esperado. Tener un buen cronograma flexible y un diseño aumentaría sus posibilidades de aceptar. Asegúrese de revisar su propuesta antes de enviar la versión final al sitio. A continuación hay algunas cosas que los mentores notan sobre sus propuestas.

  1. Flexibilidad
  2. Voluntad de aprender
  3. Comunicaciones previas en la comunidad y contribuciones.
  4. Fuerza técnica
  5. Cosas únicas que traes a la mesa

Si está sugiriendo algo único, asegúrese de que se ajuste a los requisitos de la organización de los proyectos. El criterio de elección es diferente entre las organizaciones. Algunas organizaciones dan prioridad a los contribuyentes habituales, donde algunas organizaciones consideran iguales a todos los solicitantes y eligen según su propuesta. Para estar seguro, tenga una contribución sólida en el fondo y una propuesta sólida. Si puede, no limite sus contribuciones a una organización. Solicitar en varias organizaciones aumentará sus posibilidades de ser seleccionado. ¡Espero que esto ayude y la mejor de las suertes con el GSoC del próximo año!

La parte final de la respuesta se copia y pega de la siguiente respuesta.

La respuesta de Dinu Kumarasiri a ¿Cómo me preparo para una pasantía en Google y el Google Summer of Code (GSoC) desde el primer año en la universidad?

Gracias por A2A!

GSoC es una iniciativa para la comunidad de desarrollo de código abierto. Quieren que todos contribuyan con FOSS. Entonces, antes de aplicar en GSoC, debe tener algunos conjuntos de habilidades que se requieren para el desarrollo de software.

Lectura / escritura de códigos: debe ser bueno para leer el código de otros y ser capaz de realizar las modificaciones necesarias.
Esta habilidad es realmente muy importante, cuando entras en el proceso de desarrollo de software, notarás que en realidad no escribimos todo desde cero; Creamos funcionalidades en la parte superior de la arquitectura ya escrita, porque eso ahorra mucho tiempo de codificación / depuración y, por lo tanto, aumenta la productividad.

Lectura / escritura de documentación : debe ser capaz de leer la documentación escrita por otros desarrolladores y compañías y poder producir código a partir de ella. No siempre tendrá un pseudocódigo que puede usar para volver a generar el código original. debe ser capaz de comprender las API simplemente leyendo sus documentaciones.

Pensamiento estructural : tiene una tarea que realizar, como crear un programa similar a mspaint.exe . Puede haber millones de maneras de hacer esto, pero no todas son buenas. escribir código de tal manera que uno pueda modificarlo y agregarle características sin muchos cambios en su estructura original.

¿Cómo abordaré el mismo problema (crear un programa similar a mspaint.exe)?
Comienzo mi proceso de pensamiento creando una lista de características que admitirá en su primera versión, una vez que haya terminado con eso. Me pregunto ” ¿cuál sería el alcance futuro del desarrollo? “Digamos que planeé una característica de la herramienta de lápiz que solo admite el dibujo de líneas crudas. ¿En el futuro podemos agregar sombras al lápiz como un lápiz de crayón? ¿sombreado? ¿Correcto? ahora, antes de comenzar mi codificación, tengo en cuenta que voy a extender esta función de lápiz en el futuro, así que haga todas las funciones de soporte de esta manera para que puedan ampliarse más adelante.

¿Ahora cómo ganar todas estas habilidades?

  • Comience el desarrollo desde hoy, piratee / lea tantos códigos como pueda.
  • Contribuya a proyectos de código abierto y aprenda el estilo de escritura de código de programadores experimentados.
  • No pares! comience a escribir su propio software, hágalo de código abierto y obtenga críticas de otros programadores.

Durante el período de propuesta estudiantil GSoC, intente informar su plan completo, que debe incluir su plan de diseño y la comprensión de las complejidades del proyecto. Para eso, puede interactuar con su organización antes de que comience el período de propuesta.
Créame, su experiencia / currículum no le importa a la organización si no ha entendido y presentado bien el proyecto.

Puedo decirles mi ejemplo, estoy trabajando en el controlador SATA-AHCI para Windows Server 2003 (NT 5.2), en realidad no hay un controlador de código abierto disponible para esto (dirigido a NT 5.2), así que todo lo que puedo hacer es leer el archivo de especificación AHCI , Piratee algunas implementaciones de código abierto (como el controlador Linux-AHCI / msahci.sys), cree un plan de diseño de controlador / estructura de codificación que obedezca perfectamente al modelo de pila de almacenamiento de Windows NT 5.2 / 6.
React OS ya tiene soporte AHCI de uni_ata pero ese controlador es de naturaleza monolítica, eso implica que no tiene el modelo de pila de almacenamiento de Windows e implementa Es propio. lo cual es realmente una mala idea, porque termina todo el alcance futuro del desarrollo.
Entonces, en la propuesta, resumí la pila de almacenamiento actual en React OS y Windows Server 2003, los comparé y luego presenté mi plan sobre cómo escribiré el controlador AHCI para win2k3 y luego lo portaré a React OS sin ninguna modificación en el controlador. Y antes de crear mi borrador final de propuesta, hablé con sus desarrolladores en IRC y les expliqué mi plan; Sugirieron algunas correcciones y en total quedaron impresionados por el plan.

La mejor de las suertes 🙂

Esta pregunta es divertida, pero como eres un estudiante de segundo año, puedo entender totalmente tu deseo de hacer esta pregunta. Es posible que no le guste lo que escucha, y definitivamente no voy a darle un plan, porque no hay ninguno. Tengo muchos A2A, así que estoy escribiendo esto.

Si la programación te entusiasma y tratas de resolver los problemas por código, aprendes rápido, puedes escuchar a otras personas y recibir críticas de manera saludable, tienes una buena oportunidad para GSoC.

Pero una cosa muy importante para entender aquí es que no todos los buenos programadores son seleccionados y los que son seleccionados, no todos son grandes programadores.

Primero, comprenda que Google Summer of Code es una pasantía remota en una organización de código abierto patrocinada por Google. Al igual que cualquier pasantía, la persona que se selecciona es la persona que la gente de esa organización considera adecuada para el proyecto en cuestión. La decisión generalmente depende de una o dos personas, por lo que hay muchas dinámicas aquí en juego. Incluso las malas habilidades de comunicación pueden ser una razón, no importa si escribes un código excelente.

Así que mi primer consejo, deja de perseguir a GSoC. No lo haga JEE, donde comienza a prepararse con meses de anticipación. Es simplemente estúpido y realmente te hará sentir mal si no te seleccionan. Esta no es la actitud de un buen ingeniero o un buen hacker.

Muchos buenos programadores que conozco y asesoré no fueron seleccionados. Muchos de ellos lo hicieron. Pero no hay motivos comunes en los que pueda decir por qué uno lo hizo o por qué el otro no.

El verdadero espíritu de GSoC es convertirse en un buen colaborador de código abierto. Si puede asimilar eso en usted mismo, con los próximos proyectos o problemas que ataque con su código, no solo tendrá grandes posibilidades de ser seleccionado para GSoC sino que más adelante en la vida se le abrirán muchas buenas oportunidades. Y por buenas oportunidades me refiero principalmente a trabajar con personas inteligentes. La razón es simple, la contribución de código abierto requiere ciertas habilidades más disciplina, entras en un entorno donde tu ego es aplastado una y otra vez, porque el código habla por sí mismo. Es muy fácil terminar y discutir, o funciona o no funciona, o su código es más rápido / robusto que el mío. No BS.

Si su código no es legible, entonces a nadie le importará. Si tu código es hermoso, la gente se volverá loca por ti, algunos incluso pueden comenzar a adorarte. Ese es el tipo de tierra de código abierto, donde lo mejor no solo sobrevive, sino que prospera, es apreciado y respetado. Y una vez que haya vivido aquí, terminará convirtiéndose en un programador que sigue las buenas prácticas y es capaz de comunicar bien sus ideas, lo cual es muy, muy importante cuando se trabaja en equipo. Así que espero que entiendas por qué Google gasta millones de dólares en GSoC tiene sentido.

Así que mantén la calma y sigue codificando: p Sigue desafiándote con mejores proyectos. Codifique algo que sea útil y compártalo con el mundo, sin importar si ya existe una solución, porque está aprendiendo. No encuentre un tutorial, use las documentaciones, son sus verdaderos amigos que estarán allí por mucho tiempo. Usa git en todas partes. Incluso para escribir tu propio blog. Es una herramienta muy inteligente y poderosa. Intenta comunicarte con otros desarrolladores de todo el mundo. Contribuye a los proyectos que te gustan en Github. Incluso si es una contribución para mejorar un error gramatical en la documentación, es un buen comienzo. Colabora con otros en código. Si tiene un problema con algo, mejore ese código.

Tienes pocos meses antes del próximo GSoC, solo sigue aprendiendo y mejorándote. Deja de preocuparte o perseguirlo ahora. El momento adecuado es uno o dos meses antes de que se declare la lista de organizaciones seleccionadas. Entonces deberías concentrarte en ello. Hasta entonces codifique algunos buenos proyectos, incluso los “geniales” 🙂

Comience a contribuir mucho al código abierto.

La mayoría de la comunidad del sistema operativo es muy amigable con los principiantes que quieren aprender pero no esperan ser alimentados con cuchara. Aquí hay algunos consejos

Mejore al menos en un idioma y vea lo que todas las organizaciones los están utilizando para construir algo.

No pierda el tiempo aprendiendo cosas de “hipster”, obtenga su lógica básica y sus habilidades de codificación después de eso, es como LEGO: juntar los bloques.

Ignora los programas de laboratorio de tu universidad, ya que son la * peor * forma posible de juzgar la habilidad de codificación de alguien (Spoiler: los chupé en todos …)

Contribuir a los repositorios ascendentes no solo aumentará en gran medida sus habilidades de codificación, sino que también le dará una idea de cómo se supone que es el código de producción, cómo se escriben las pruebas, etc. y también mejorará sus habilidades de comunicación / escritura.

Comencé a contribuir a FOSS mucho tarde, pero siempre sentí que debería haber hecho mucho más antes. De todos modos, buena suerte para su viaje, habrá momentos de frustraciones en los que habría trabajado en su PR (Solicitud de extracción) durante varios días / semanas / meses y aún así no será aceptado, pero mantén la calma y sigue trabajando. Una vez que tuve mi RP con alrededor de 70 confirmaciones por cerca de 40 días, finalmente fue aceptado y esa sensación no tiene comparación.
Solo una nota; Aléjese de esas organizaciones que no son activas / desprecian a los principiantes, también hay algunos peces malos en el mar. Y hazlo si te encanta, no para GSoC, etc.

Si desea saber todo sobre el programa Google Summer Of Code, entonces este hilo es tan completo como sea posible: ¿cómo me preparo para el Google Summer of Code (GSoC)?

Es válido para todos los estudiantes independientemente de su rama, nivel de habilidad o cualquier otro atributo para el caso. Pero hay algunas cosas específicas que todo estudiante de primer año de la universidad debería hacer, desearía haber hecho todo esto, pero solo he llegado a esta conclusión 3 años demasiado tarde. Los enumeraría en el siguiente orden.

  • En general, hay tres tipos de lenguajes (una generalización muy cruda) de procedimiento (C, etc.), Orientado a objetos (Java, C ++, etc.) y secuencias de comandos (Perl, Python, etc.). Esta es una generalización muy cruda y posiblemente inexacta (omití deliberadamente funcional), pero para nuestro propósito de responder esta pregunta, está bien. Elija un idioma en cada una de estas categorías. Aconsejaría Learn C (por extensión, C ++ no sería tan difícil de aprender). Así que aprende C / C ++ y luego aprende un lenguaje de script. No sé acerca de Perl, etc., soy un pitonista de principio a fin. Te sugiero que aprendas eso también. Esto supone que tiene cero experiencia en programación (estaba en la misma situación). Es muy factible, tenía cero experiencia en programación antes de venir a la universidad y muchos otros también.
  • No conozco áreas como el desarrollo web, etc. Además, no sé mucho sobre las organizaciones que usan C / C ++ / Java para su base de código principal (LibreOffice, KDE, etc.). Estas son algunas de las principales organizaciones en Summer of Code que usan C / C ++ / Java ampliamente. Intenté contribuir con ellos, pero por alguna razón que no recuerdo, no llegué demasiado lejos. Recomiendo encarecidamente seguir con una organización basada en Python. Esto se basa en mi experiencia personal, encuentro que las bases de código grandes de Python son más fáciles de leer y comprender que decir algo como C / C ++ (no sé mucho de Java, solo una comprensión básica).
  • Ahora que te he aconsejado que te quedes con Python. Aprende sus entresijos. Sus características Qué bibliotecas y marcos tiene para ofrecer. Python es un lenguaje muy popular. Muchas cosas, como las bibliotecas de computación científica, los marcos de desarrollo web, las bibliotecas de aprendizaje profundo, etc., todas están escritas en Python, entiendes, Python es el lenguaje “it”. Estas bibliotecas y marcos no necesariamente tienen que ajustarse bien a sus intereses. Muchas de las bibliotecas están disponibles para personas de diferentes dominios, por ejemplo, hay bibliotecas para la investigación en astronomía, física de partículas, ecuaciones diferenciales, procesamiento de imágenes, etc. Elija un dominio, es probable que haya una biblioteca de Python para resolver problemas computacionales. . Explore todos o tantos de ellos. No seas tímido No necesariamente necesita conocer o dominar ese dominio, solo necesita ser persistente y saber cómo resolver problemas abstractos que el dominio tiene para ofrecer. Lo aclararía con un ejemplo en el siguiente punto.
  • Estoy haciendo una pasantía como estudiante de GSoC con SunPy. Es un módulo basado en Python para el análisis y visualización de datos en física solar. Eso sí, no soy estudiante de Física y tampoco tengo calificaciones estelares (creo que obtuve una C o una C). No sé exactamente nada sobre física solar. Sí, lo escuchaste bien, Nada o Nil. Pero hay muchos problemas para resolver problemas computacionales en este dominio que no tienen nada que ver con el dominio en sí. En el mejor de los casos, solo necesita una comprensión superficial de la Física Solar (no es muy difícil de aprender, confíe en mí). Hay problemas de programación relacionados con la construcción de envoltorios de Python sobre las API, el desarrollo y la escritura de clientes de Python para descargar archivos, problemas relacionados con la base de datos, el diseño de un caché LRU (Sí, esto era realmente una tarea, las personas que estudian Sistemas Operativos estarían familiarizados con esto) y toneladas Más.
  • En resumen, no se preocupe por el hecho de que la organización que está contribuyendo no necesariamente coincide con sus intereses. Debe coincidir con su conjunto de habilidades, que es lo más importante.

He escrito un montón de respuestas relacionadas con “prepararse para GsoC”, odio esta palabra, prefiero expresarla como “empezar con la comunidad de código abierto”. Aquí están: https://www.quora.com/profile/Su

Déles una lectura y lea todo el “gyaan” que Quora tiene para ofrecer sobre el tema GSoC (lo hice, por cierto, de manera extensa y rigurosa).

Todo lo mejor de tu viaje de código abierto. Sé persistente y curioso. Que la fuente te acompañe.

Gsoc es sin duda una de las mejores oportunidades para estudiantes universitarios.

Sin embargo, es igualmente competitivo también.

Para borrar el GSOC en el primer intento, se requiere mucha investigación previa sobre los compañeros que participan en él.

Esto debe seguirse eligiendo productos de estas compañías que le interesen. Puede suscribirse a las listas de correo de estos productos y, como actividad más general, intente hacer alguna contribución para el producto.

Luego viene la fase de ideación en la que se te ocurre tu idea. En esta etapa, puede ponerse en contacto con la comunidad para obtener aclaraciones y finalmente refinar la idea.

Luego, al enviar el resumen, asegúrese de que sea claro y realista también.

Una vez que sea seleccionado, se le asignará un mentor que lo ayudará con el proyecto, así como también hará un seguimiento de su progreso.

Buena suerte ☺

Visite este sitio web para ver la línea de tiempo de GSoC https: //summerofcode.withgoogle …. Aquí encontrarás todo. Este año, la aplicación GSoC está cerrada, así que prepárese para el próximo año.

Si desea aumentar sus posibilidades de ser seleccionado en GSoC, le sugiero que comience con un proyecto de código abierto de su elección en cualquier idioma con el que se sienta cómodo.
Puede encontrar muchos proyectos de código abierto en diferentes campos y en muchos lenguajes de programación en Github, Launchpad, Google Code (Archivado), CodePlex. Mi favorito personal es Github. Haga una cuenta en él y comience a contribuir en él. Esto hace que su candidatura sea fuerte para GSoC.

También puede encontrar la organización que se seleccionó esta vez y qué tipo de proyecto están ofreciendo y también puede bifurcarlos en github y comenzar a contribuir en el proyecto y si la próxima vez se selecciona la misma organización y si se ha comprometido allí proyecta tus posibilidades de selección en grande.

En primer lugar no ganas. Te seleccionan. Hay una pequeña diferencia entre los 2. En segundo lugar, Google Summer of Codes no tiene nada que ver con su año. Solo se refiere a sus habilidades de codificación de aplicaciones en varios proyectos de desarrollo. Para ingresar a GSoC, debe acostumbrarse al desarrollo de código abierto. Contribuya en otros proyectos de código abierto, participe en IRC, aprenda los sistemas de control de versiones, etc. Una vez que se cumplan ambas condiciones (es decir, se convierta en un desarrollador suficientemente bueno y lo suficientemente bueno en código abierto), tiene la oportunidad de ser seleccionado. Aparte de esto, no hay una regla dura y rápida. También puede ir a través de este enlace: la respuesta de Saptak Sengupta a ¿Cómo debo pasar mis vacaciones de verano este año si quiero solicitar GSoC 2017?

Empezar ahora.

Encuentre una organización para contribuir. Aprenda las tecnologías en las que trabajan.

Comprender su base de código. Parchea los errores fáciles y luego busca los más difíciles.

Siga haciendo esto durante un año y cuando la organización sea seleccionada para GSoC-17, presente su solicitud como estudiante y estoy seguro de que tendrá la ventaja y será seleccionado definitivamente.

Tienes mucho tiempo para aprender. Todo muy bien.

Haga una búsqueda exhaustiva en Quora antes de hacer cualquier pregunta. Lo más probable es que ya haya una respuesta a una pregunta similar.

Espero que estos dos ayuden.

¿Cómo debería un estudiante de primer año de ingeniería informática desarrollar habilidades para obtener una pasantía en empresas tecnológicas como Facebook, Google, Adobe, etc.?

¿Cómo me preparo para obtener pasantías de verano en compañías como Google, Facebook, Microsoft, etc., que han sido seleccionadas para Google Summer of Code en 2014?

No es una competencia, es un tipo de programa de pasantías. La pregunta no tiene sentido.

Respuesta del usuario de Quora a ¿Cómo me preparo para el Google Summer of Code (GSoC)?