¿Qué tan limpio tiene que estar el código en mi github?

Así que casi he terminado con mi MSc. Inteligencia artificial y comenzar a buscar posiciones en aprendizaje automático y ciencia de datos (en Alemania, ya que esto probablemente marque la diferencia).

Desafortunadamente, algunos de mis mejores trabajos han sido en proyectos de código cerrado con empresas. Sin embargo, tengo algunos trabajos de los que estoy bastante orgulloso o que son prueba de que sé programar algunos conceptos básicos. La mayor parte son varios cursos, hackathons o proyectos que he hecho para educarme. (Cosas básicas como programar un enjambre de boid y jugar con una representación gráfica, algoritmos evolutivos, redes neuronales, etc.)

Así que pensé, hagamos una página de github para mostrar mi trabajo. Pero antes de hacer eso busqué consejos en línea. Y me está confundiendo la verdad. Originalmente, mi idea era poner todo en él y clasificarlo por categoría, y asumí que un empleador entendería que no vale la pena revisar los casi cien scripts rápidos y sucios para limpiar algunos datos si lo indico como tal.

Pero incluso si hago una buena selección, el consejo aún decía que debería tener un historial de confirmación regular (que obviamente ninguno de ellos tiene) y debería ser un código de nivel de producción. Quiero decir que obviamente no lo es, fue principalmente un trabajo educativo. Quiero decir que tal vez sea un error, pero por lo general no me tomo mucho comentar este código y escribir pruebas unitarias, si solo quiero implementar un algoritmo genial y jugar con sus variables. También estoy seguro de que hay algún truco sucio ocasional en el que el plazo era ajustado o simplemente quería que el programa se ejecutara lo antes posible.

Llevar todo este trabajo a lo que yo consideraría calidad de nivel de producción sería sin duda un trabajo muy aburrido. Así que estoy bastante indeciso y preferiría gastarlo en mis nuevos proyectos.

Así que supongo que mi pregunta es:

¿Vale la pena poner ejemplos de mi trabajo en github, incluso si no son "perfectos"?

Odio esta tendencia de que los candidatos a un trabajo ahora deben mostrar un perfil de github. Incluso las corporaciones donde las personas trabajan en proyectos de código cerrado de alguna manera requieren contribuciones al código abierto. Esta locura grupal hace que la decisión de trabajar para una empresa de código cerrado sea un desastre para su carrera.
¿Quiénes son estas personas que están leyendo el código github del solicitante todo el día? leer código es difícil , no creo que nadie vaya a hacer más que mirar brevemente los títulos de algunos de tus trabajos
@bharal Leer código es poco común, pero leer un cuaderno de ciencia de datos es muy común
@bharal Toneladas y toneladas de proyectos de ciencia de datos en Github tienen un cuaderno para visualización y resumen de estadísticas, etc.
@MateuszStefek: Después de afirmar que me mantengo al día con las tecnologías; el entrevistador me pidió mi cuenta de Twitter. Luego explicó que si me mantengo actualizado, debo estar retuiteando la información, por lo que quería volver a verificarme. Le dije que no tengo Twitter (verdad) y que me podía preguntar cualquier cosa sobre las últimas características de .NET/C#/... Su respuesta fue que no es su trabajo saber de tecnología. Del mismo modo, lo de GitHub parece una opción perezosa para no tener que verificar la capacidad del desarrollador usted mismo.
@MateuszStefek Creo que es una excelente manera de poner el pie en la puerta para destacar. Después de todo, muchas personas se gradúan con un título en informática pero no pueden resolver problemas básicos. Al menos con una cuenta de GitHub puedes ver algo antes de perder tu tiempo y el de la empresa cuando te dan una prueba que no puedes resolver. No creo que las empresas los lean línea por línea, pero al menos pueden decir: "Tal vez esta persona sepa algo".

Respuestas (5)

Desafortunadamente, algunos de mis mejores trabajos han sido en proyectos de código cerrado con empresas.

Siento que estás viendo un perfil de Github como demasiado importante en el proceso de contratación aquí. No hay nada desafortunado o inusual en eso: el 99% del código que escribe en un entorno profesional probablemente será de esta manera. Esto es genial: significa que puede enumerar la experiencia comercial que obtuvo mientras trabajaba en estos proyectos internos.

Así que pensé, hagamos una página de github para mostrar mi trabajo. Pero antes de hacer eso busqué consejos en línea. Y me está confundiendo la verdad.

En general, hay dos tipos de personas que tienen perfiles de Github en estos días: aquellos que contribuyen activamente a proyectos de código abierto y aquellos que simplemente lo crean para cargar un volcado de código que escribieron anteriormente. Diría que el primero es definitivamente un mejor escenario, pero ciertamente tampoco hay nada intrínsecamente malo con el segundo, siempre que:

  • El código que tienes allí no es un ejemplo de estilo "hola mundo" que sea demasiado básico;
  • El código es algo que ha escrito usted mismo, es decir, no está tomando un proyecto desarrollado en un equipo e intentando hacerlo pasar como propio.
  • No haces que parezca lo más importante en tu CV.

Si alguien se toma el tiempo para ver los detalles de su código, entonces genial: ha causado suficiente impresión inicial para que lo vean más de cerca.

Asi que:

¿Vale la pena poner ejemplos de mi trabajo en github, incluso si no son "perfectos"?

Absolutamente. (Y aparte, ¡"código de nivel de producción" ciertamente no significa perfecto!)

Absolutamente. (Y aparte, ¡"código de nivel de producción" ciertamente no significa perfecto!) El hecho de que no lo sea es una verdad desafortunada, en un mundo mejor debería significar código perfecto o al menos tan cerca de la perfección como sea razonablemente posible. .
@Cronax Por supuesto, pero esto significa que si alguien que sabe lo que está haciendo ve algunas partes que podrían mejorarse (lo que sería el caso con casi cualquier código base), ciertamente no se acabó el juego.

Hay una extraña tendencia en los consejos en línea de decir que necesitas un perfil de github. tu no Tener algo que mostrar en tu perfil de github es un buen consejo si no tienes nada más . Entonces sí, por supuesto, demuestra algo .

Tienes un maestro y experiencia. Ambos deben ser documentos (Uni-Abschluß, Arbeits-/Praktikumszeugnisse) que pueda mostrar. Prueba contundente de que fuiste examinado y encontrado apto para el trabajo. No tienes necesidad de presentar nada menos que eso.

Imagínese lo extrañas que serían las entrevistas de trabajo si los empleadores no confiaran en los certificados y referencias:

Señor, en Garbage Inc estamos muy orgullosos de emplear solo a los mejores conductores de camiones de basura. Vemos que tiene una licencia válida, un certificado para reciclar materiales peligrosos y una brillante referencia de nuestro principal competidor... pero señor, notamos que no publicó ningún video privado de usted sacando la basura. Nos gusta contratar personas en función de su transmisión de youtube de eliminación de basura privada.

Si no.

Ve con lo que tienes. Eso es genial y debería ser suficiente. Si alguien no valora un máster sobre una página de github, no quiere trabajar allí.

Si desea incluir su perfil de github, debe pulirse al menos al nivel de su maestría/experiencia laboral. Cualquier cosa menos sería como servir papas fritas frías con una gran hamburguesa. Quieres ser recordado por lo que hiciste bien, no por los extras de mala calidad. Sin embargo, pulir hasta ese punto es difícil y no lo necesitas, así que piensa si deberías dedicar tiempo a pulirlo. Solo déjalo apagado.

Estoy de acuerdo en que no necesitas absolutamente una cartera de gihub, pero creo que te estás yendo a los extremos cuando haces algunas de tus afirmaciones comparando su valor con una maestría. Conocí (y contraté) a muchas personas que no tenían una maestría (o NINGÚN título) o que tenían una que no era relevante, pero que aún eran programadores talentosos que podían presumir a través de un github u otro portafolio. Creo que es tan tonto cancelar la cartera como cancelar una maestría.
En el otro lado del comentario de @dwizum, he visto desarrolladores con maestría y experiencia que no podían programar nada de complejidad. El hecho de que tenga un título y experiencia no significa que sea bueno en su trabajo. Especialmente porque los estudios académicos y el trabajo real a menudo no se alinean bien.
@dwizum Realmente no veo dónde diferimos. No estoy descartando ninguno de los dos, solo digo que github es una buena manera de mostrar lo que puede hacer si no tiene un certificado de ningún tipo. Si ya tiene el certificado más alto que pueda tener, no es necesario.

Tienes que ver esto como un anuncio para ti. Así que sé muy crítico con lo que publicas. Es mejor tener 2-3 problemas de datos complejos y sus soluciones resultantes que 100 ejemplos de clase cortos.

Las soluciones reales tienen cosas como prueba unitaria y comentarios. Tienen documentos de requisitos. Si desea demostrar que es mejor que su competencia, debe demostrar que lo es haciendo que sus ejemplos de Git Hub sean lo mejor posible. Si estoy contratando y tengo dos personas con aproximadamente la misma experiencia y una muestra un centro de git de 100 proyectos pequeños, la mayoría de los cuales parecen ser ejemplos de clase y todos parecen código rápido y sucio y uno muestra tres proyectos complejos y el la presentación es profesional incluyendo hasta la prueba, comentarios, registro de errores, etc., ¿cuál me va a impresionar más como oficial de contratación?

En ciencia de datos en particular, quiero ver evidencia de que comprende el significado de los datos y que consideró cómo limpiar y transformar los datos, así como analizarlos. Me gustaría tener evidencia de las diferentes metodologías de análisis que usó y una discusión en alguna parte de por qué eligió la que eligió. Me gustaría ver documentos de presentación sobre cómo presentó sus resultados porque la presentación y la persuasión son dos de las habilidades más críticas que se necesitan en esta área.

Lo que más me preocupa es esta afirmación:

Llevar todo este trabajo a lo que yo consideraría calidad de nivel de producción sería sin duda un trabajo muy aburrido.

Gran parte del trabajo real en un entorno profesional es este tipo de trabajo aburrido pero necesario. Quiero contratar a alguien que entienda eso y que no vaya a ser un codificador vaquero. Así que sí, haz las partes aburridas primero en los ejemplos que elijas y luego hazlas con cualquier proyecto nuevo que agregues.

Sí, publícalo. Si no está avergonzado por al menos algunos aspectos de su código 2 años después, probablemente no esté progresando en sus habilidades de desarrollo, especialmente si es nuevo. Si bien cualquiera puede adivinar algunos ejemplos de currículums, una progresión del trabajo real es mucho más ilustrativa. Si saca un "hit", los empleadores en su mayoría examinarán el código en ese proyecto, no indagando en lo esencial. Las otras contribuciones aún rellenan los gráficos de su página de destino y lo hacen lucir más fuerte, así que obtenga algo lo antes posible.

En diez años, tendrás 10 años de proyectos para mostrar, pero no si no empiezas. No publique código descartable de revisión cero, pero no se obsesione con "¿debería haber doblado ese bucle?" o "¿son perfectos estos nombres de campo de documentos?". Git también es muy útil para desarrollar código, no solo para verse bien, así que no seas tímido.

Voy a repetir algo que he dicho en muchas respuestas. La contratación es un proceso de venta. Usted, como solicitante, tiene algo que está tratando de vender (usted mismo: o al menos, su capacidad para realizar un trabajo).

La forma de lograr esto es mediante el uso de herramientas de ventas: un currículum, una solicitud de empleo, una carta de presentación, referencias y (tal vez) una cartera de trabajo, es decir, una cuenta de github. Al evaluar cómo utiliza estas herramientas, debe centrarse en el hecho de que son herramientas para facilitar un proceso de ventas.

Para llegar a su pregunta específica:

¿Vale la pena poner ejemplos de mi trabajo en github, incluso si no son "perfectos"?

Prácticamente, para tomar decisiones sobre tu cuenta de github como herramienta de ventas, primero debemos preguntarnos: ¿qué busca un empleador cuando contrata a un desarrollador? Entonces, debemos preguntarnos: ¿Mi cartera de github ayuda a mostrar esas cualidades? Si la respuesta es afirmativa, inclúyala. Si la respuesta es no, no la incluya o modifíquela para que se ajuste mejor a esa perspectiva.

Creo que diste algunas pistas sobre las respuestas cuando dijiste:

Por lo general, no me tomo mucho comentar este código y escribir pruebas unitarias, si solo quiero implementar un algoritmo genial y jugar con sus variables. También estoy seguro de que hay algún truco sucio ocasional en el que el plazo era ajustado o simplemente quería que el programa se ejecutara lo antes posible.

Su cartera de github muestra una resolución de problemas rápida y sucia y fluidez en ciertos idiomas. Si bien ambas son cosas positivas para mostrar, existe una brecha potencial: como gerente de contratación responsable del desarrollo de software, más importante que esas características, busco personas que escriban código sostenible . Desarrolladores que piensan en el largo plazo y entienden por qué cosas como las pruebas unitarias son una buena idea, no solo las personas que hacen pruebas unitarias porque se les ha dicho que las hagan, o las personas que no las hacen en absoluto. En otras palabras, estoy tan interesado en el proceso y el enfoque (es decir, hiciste pruebas unitarias y comentaste adecuadamente) como en el resultado final (obtuviste la respuesta correcta para el desafío del hackatón rápido).Claramente, hay otros gerentes de contratación en diferentes tipos de organizaciones que pueden tener una perspectiva ligeramente diferente al respecto. No está claro en su pregunta exactamente qué tipo de trabajo está buscando. Si está buscando un puesto más centrado en la ciencia de datos, o un puesto en el que el software sea secundario al resultado final, su capacidad para escribir código que resuelva problemas puede resultar más importante que su capacidad para seguir procesos rigurosos de desarrollo de software.

Entonces, volviendo al proceso de ventas, su cartera de github definitivamente tiene valor, pero puede o no ser el valor más apropiado para la posición exacta que busca. Si tiene un currículum/carta de presentación/otro portafolio que muestre qué tan completo es usted y llene los vacíos en su github, entonces el trabajo de github puede permanecer como está de manera segura. Sin embargo, si notiene una manera de mostrar la imagen completa específica que necesita para venderse a sí mismo, entonces probablemente saldrá desequilibrado (por ejemplo: demasiado enfoque en apresurarse a un resultado versus comprender el valor de un buen proceso y enfoque) y debe considerar modificar sus ejemplos de código o agregar otros nuevos (que se enfatizan claramente cuando alguien mira su cuenta de github) que muestran su capacidad para escribir código de "nivel de producción".

En resumen:

  • Use sus herramientas de ventas (currículum, cartera, etc.) para abordar específicamente lo que busca un gerente de contratación
  • En el desarrollo de software, el proceso es tan importante como los resultados finales. Para un puesto más formal, centrado en el desarrollo de software, SOLO mostrar que puede resolver problemas rápidos y sucios puede hacer que parezca arriesgado, en comparación con los candidatos que pueden mostrar una comprensión completa de los procesos de desarrollo. Para una posición más orientada a la ciencia de datos, donde el desarrollo/mantenimiento del código puede ser un poco menos importante que literalmente obtener una respuesta, es posible que esto no se aplique.
  • Piense en el tipo específico de puesto que está solicitando y lo que quiere mostrar sobre usted, y luego, si hay brechas, debe resolver las brechas, independientemente de si incluye o no su cuenta de github en su solicitud .