Cómo prepararme para una pasantía en Google y 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 puedes mejorar tu conjunto de habilidades.

Siguiente control de versiones. Es una habilidad esencial si está contribuyendo a proyectos de código abierto. Aprender el control de versiones. La mayoría de los proyectos usan git. Así que empieza con git. Hacer una cuenta de Gihub. Haga que sus proyectos personales o académicos sean exhibidos allí. Aprende a cometer, empujar y tirar. Aprenda cómo enviar una solicitud de extracción.

La próxima parada estaría empezando a contribuir al código abierto.

Primero trata de analizar tus habilidades y expectativas. Tenga sus habilidades y expectativas organizadas 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 la organización GSoC de este año. Puede revisar la lista de organizaciones, sus misiones, sus tecnologías y seleccionar una que le apasiona.

Una vez que seleccione una organización, puede visitar su sitio, suscribirse a su lista de correo, unirse al canal de irc, leer sus documentos sobre cómo contribuir e información sobre su producto y diseño. Se esconden en sus listas de correo para entender cómo 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 solicitando instrucciones y orientación sobre cómo contribuir.

Si los pasos para contribuir son claros y bien definidos, puede seguirlos y preguntar a la comunidad si tiene algún problema. Sea un colaborador constante y ayude a la gente, si sabe algo que ellos no saben. La columna vertebral de la fuente abierta es la comunidad. Entonces, sé un miembro activo de la comunidad, que respeta las ideas de los demás y ayuda a los demás de manera proactiva. Si tienes alguna idea desagradable puedes expresarla. Pero hazlo de una manera que no sea ofensiva para otros.

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

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

Si está sugiriendo algo único, asegúrese de que esté dentro de 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 colaboradores habituales, en donde algunas organizaciones consideran que todos los solicitantes son iguales 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 a varias organizaciones aumentará las posibilidades de ser seleccionado. ¡Espero que esto ayude y que tenga suerte 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 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. Por lo tanto, antes de aplicar en GSoC, debe tener algunos conjuntos de habilidades que se requieren para el desarrollo de software.

Lectura / escritura de código: debe ser bueno para leer el código de otros y ser capaz de hacer las modificaciones necesarias por usted mismo.
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; Construimos 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 la 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 pseudo código que puede usar para volver a producir el código original. debe ser capaz de comprender las API con solo leer sus documentaciones.

Pensamiento estructural : obtienes una tarea que cumplir, como crear un programa similar a mspaint.exe . Pueden haber millones de formas de hacer esto, pero no todas son buenas. escriba el código de tal manera que pueda modificarlo y agregarle características sin modificar mucho su estructura original.

¿Cómo abordaré el mismo problema (crear un programa similar a mspaint.exe)?
Comencé 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 es compatible con el dibujo de líneas brutas. ¿En el futuro podemos agregar sombras al lápiz como lápiz de crayón? ¿sombreado? ¿Correcto? Ahora, antes de comenzar mi codificación, tengo en cuenta que en el futuro extenderé esta función de lápiz, así que haga todas las funciones de soporte de esta manera para poder ampliarlas más adelante.

Ahora, ¿cómo ganar todas estas habilidades?

  • Comience el desarrollo a partir de hoy, corte / 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 te detengas comience a escribir su propio software, conviértalo en código abierto y obtenga opiniones de otros programadores.

Durante el período de propuesta de los estudiantes de 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 la propuesta.
Créame, su experiencia / currículum no importa para la organización si no ha entendido y presenta bien el proyecto.

Puedo decirle mi ejemplo, estoy trabajando en el controlador SATA-AHCI para Windows Server 2003 (NT 5.2). En realidad, no hay ningún controlador de código abierto disponible para esto (dirigido a NT 5.2), por lo que todo lo que puedo hacer es leer el archivo de especificación AHCI. Hackee 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 monolítico por naturaleza, lo que implica que no contiene el modelo de pila de almacenamiento de Windows y lo implementa Es propio. lo que realmente es una mala idea, porque termina todo el alcance futuro del desarrollo.
Por lo tanto, en la propuesta informo sobre 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 llevaré a React OS sin ninguna modificación al controlador. Y antes de crear mi borrador final de propuesta, hablé con sus desarrolladores sobre el IRC y le expliqué mi plan; Ellos sugirieron algunas correcciones y en total quedaron impresionados del plan.

Lo mejor de la suerte 🙂

Esta pregunta es graciosa, pero siendo un estudiante de segundo año, puedo entender totalmente su motivación para hacer esta pregunta. Puede que no te guste lo que escuchas, y definitivamente no te voy a dar un plan, porque no hay ninguno. Tengo muchos A2A, así que estoy escribiendo esto.

Si la programación le emociona y usted trata de resolver problemas por código, aprende rápido, puede escuchar a otras personas y recibir críticas de una manera saludable, tiene una buena oportunidad para GSoC.

Pero una cosa muy importante que entender aquí es que no todos los programadores buenos son seleccionados y los que se seleccionan, 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 en cualquier pasantía, la persona que se selecciona es aquella que las personas de esa organización consideran adecuada para el proyecto en cuestión. La decisión depende de una o dos personas, por lo que hay mucha dinámica aquí en juego. Incluso las malas habilidades de comunicación pueden ser una razón, no importa si escribes un gran código.

Así que mi primer consejo, deja de perseguir a GSoC. No lo hagas JEE, donde comienzas a prepararte con meses de anticipación. Es 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 mentor no fueron seleccionados. Muchos de ellos lo hicieron. Pero no hay motivos comunes en los que pueda decir por qué uno 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 absorber eso en sí 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 se aplasta una y otra vez, porque el código habla por sí mismo. Es muy fácil terminar y argumentar, funciona o no, o su código es más rápido / robusto que el mío. No BS.

Si su código no es legible, entonces nadie lo cuidará. 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 importante cuando se trabaja en equipos. Así que espero que entiendas por qué Google gastar millones de dólares en GSoC tiene sentido.

Así que mantén la calma y sigue codificando: p Sigue desafiándote con mejores proyectos. Codifica algo que sea útil y compártelo con el mundo, sin importar si ya existe una solución, porque estás 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 en 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 el código. Si tienes un problema con algo, mejora ese código.

Tienes pocos meses antes de la próxima GSoC, solo sigue aprendiendo y mejorando. 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 enfocarte en ello. Hasta luego codifique algunos buenos proyectos, incluso los “geniales”

Comienza a contribuir mucho al código abierto.

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

Por lo menos vuélvase bueno en un idioma y vea lo que todas las organizaciones están usando para construir algo.

No pierdas el tiempo aprendiendo lo “inconformista”, pon a punto tu lógica básica y tus habilidades de codificación después de eso, es como LEGO: unir los bloques.

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

Contribuir a los repositorios anteriores 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 debe ser 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 con 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 las 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 compromisos por cerca de 40 días, finalmente se aceptó y ese sentimiento no tiene parangón.
Solo una nota; aléjate de las organizaciones que no están activas / mira hacia abajo a los principiantes, también hay algunos peces malos en el mar. Y hazlo si te gusta, no para GSoC etc.

Si desea saber todo sobre el programa Google Summer Of Code, este hilo es tan completo como se hace: ¿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 esa materia. Pero hay algunas cosas específicas que todo estudiante de primer año de universidad debería hacer, me gustaría haber hecho todo esto pero solo he llegado a esta conclusión 3 años demasiado tarde. Los enumeraré en el siguiente orden.

  • En general, hay tres tipos de lenguajes (una generalización muy burda) 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 a esta pregunta, está bien. Elija un idioma en cada una de estas categorías. Yo recomendaría a Learn C (por la extensión de la cual, C ++ no sería tan difícil de aprender). Así que aprenda C / C ++ y luego aprenda un lenguaje de scripting. No sé sobre Perl, etc., soy un pitónista en todos los sentidos. Te sugiero que aprendas eso también. Esto es asumiendo que tienes cero experiencia en programación (estaba en la misma situación). Es muy factible, no tenía experiencia en programación antes de ir a la universidad y muchos otros también.
  • No tengo conocimientos sobre áreas como el desarrollo web, etc. Además, no sé mucho sobre las organizaciones que utilizan C / C ++ / Java para su base de código principal (LibreOffice, KDE, etc.). Estas son algunas de las principales organizaciones de Summer of Code que utilizan C / C ++ / Java de forma extensiva. Intenté contribuir con ellos, pero por algunas razones que no puedo recordar, no llegué demasiado lejos. Recomiendo encarecidamente seguir con una organización basada en Python. Esto se basa en mi experiencia personal, me parece que las grandes bases de código 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 la pitón. Aprende sus entresijos. Sus características. Qué bibliotecas y frameworks 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 se están escribiendo en Python, me entiendes, Python es el lenguaje “it”. Estas bibliotecas y marcos no necesariamente tienen que adaptarse a sus intereses. Muchas bibliotecas están disponibles para personas de diferentes dominios, por ejemplo, hay bibliotecas para investigación en astronomía, física de partículas, ecuaciones diferenciales, procesamiento de imágenes, etc. Elija un dominio, es probable que exista una biblioteca en Python para resolver problemas de cómputo. . Explora todos o tantos de ellos. No seas tímido No necesariamente necesitas conocer o dominar ese dominio, solo necesitas ser persistente y saber cómo resolver los problemas abstractos que el dominio tiene para ofrecer. Me gustaría aclarar esto con un ejemplo en el siguiente punto.
  • Estoy haciendo una pasantía como estudiante 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 un estudiante de Física y tampoco tengo notas estelares (creo, obtuve una C o C). No sé exactamente nada acerca de la física solar. Sí, lo has oído 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 necesitas un conocimiento superficial de la Física Solar (no es muy difícil de aprender, confía en mí). Hay problemas de programación relacionados con la creación de envoltorios de Python sobre API, desarrollo y escritura de clientes de Python para descargar archivos, problemas relacionados con la base de datos, diseño de un caché LRU (Sí, esto fue realmente una tarea, la gente que estudia sistemas operativos estaría familiarizada con esto) y toneladas Más.
  • En resumen, no se preocupe por el hecho de que la organización a la que contribuye 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 la “preparación para GsoC”, odio esta palabra, prefiero expresarla como “comenzar con la comunidad de código abierto”. Aquí están: https://www.quora.com/profile/Su… .

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

Todo lo mejor de tu viaje Open Source. Sé persistente y curioso. Que la fuente te acompañe.

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

Sin embargo, es igualmente competitivo también.

Para eliminar la GSOC en el primer intento, se requiere mucha investigación previa sobre los compañeros que participan en ella.

Esto debe ser seguido por la elección de los productos de estas empresas que le interesan. 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 te seleccionen, serás asignado a un mentor que te ayudará con el proyecto y también hará un seguimiento de tu progreso.

Buena suerte ☺

Visite este sitio web para ver la línea de tiempo de GSoC https: //summerofcode.withgoogle… . Aquí encuentras 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 una gran cantidad de 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. Crea una cuenta en ella y comienza a contribuir en ella. Esto hace que tu 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 incluirlos 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í Proyecto entonces sus posibilidades de selección en gran.

En primer lugar no ganas. Te seleccionan Hay un poco de diferencia entre los 2. En segundo lugar, Google Summer of Codes no tiene nada que ver con tu año. Solo se refiere a sus habilidades de codificación de aplicaciones en varios proyectos de desarrollo. Para ingresar a GSoC, necesita acostumbrarse al desarrollo de código abierto. Contribuya en otros proyectos de código abierto, hangout en IRC, aprenda sistemas de control de versiones, etc. Una vez que se cumplan las dos condiciones (es decir, que se convierta en un desarrollador lo suficientemente bueno y lo suficientemente bueno en el 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 deseo solicitar el GSoC 2017?

Empezar ahora.

Encuentra una organización para contribuir. Aprende las tecnologías en las que trabajan.

Entender su código base. Parche los errores fáciles y luego vaya por los difíciles.

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

Tienes mucho tiempo para aprender. Todo lo mejor d.

Por favor, haga una búsqueda exhaustiva en Quora antes de hacer cualquier pregunta. Es probable que ya haya una respuesta a una pregunta similar.

Espero que estos dos ayuden.

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

¿Cómo me preparo para obtener pasantías de verano en compañías como Google, Facebook, Microsoft, etc., después de haber sido seleccionado para Google Summer of Code en 2014?

No es una competencia, es una especie 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)?