Habilidades requeridas para un buen trabajo de Linux [cerrado]

14

Estoy trabajando como ingeniero de TI en una empresa de renombre en la India. El problema es que, aunque me dijeron que me darían trabajo en Linux, estoy obligado a trabajar en Java y Windows. Estoy incómodo con Java y odio Windows.

He comenzado a aprender Python por mí mismo, pero es difícil darle suficiente tiempo debido al trabajo en curso. Francamente, no soy un codificador experto. Intenté mucho entrar en el desarrollo del kernel de Linux durante mis días de universidad, pero me di cuenta de que no soy un buen programador. Así que decidí hacer RHCE e ir a la administración del servidor.

Lo que quiero saber es qué conjunto de habilidades se requieren para obtener un trabajo en proyectos de Linux. En agosto de 2011, planeo tomar un descanso del trabajo si esta compañía no me da un buen proyecto de Linux. ¿Qué habilidades debo adquirir para obtener un buen trabajo en Linux? Una cosa que he decidido hacer durante ese descanso es perseguir a RHCE. Después de leer primero el conjunto de tres libros de cursos de RHCE, estoy seguro de que puedo navegar a través de él.

Las aportaciones de los expertos en este sitio son muy valiosas. Mis intereses técnicos en este momento son: programación de Python, programación C / C ++, gestión del servidor Linux y computación en la nube. Pero el título universitario que tengo no es suficiente para entrar en una buena compañía. El conocimiento práctico que tengo no es de un nivel experto. Y la experiencia laboral que tengo es simplemente patética.

PD: estoy extremadamente frustrado en mi trabajo actual. Aunque creo que apenas hay necesidad de mencionarlo.

Dharmit Shah
fuente

Respuestas:

12

Esto se ha sugerido varias veces antes en este contexto, pero ... Sugeriría adquirir algo de experiencia en un proyecto de software libre. Esto se ve bien en su currículum, es una experiencia valiosa trabajando con buenas personas y es útil para los contactos. La gente regularmente consigue trabajo a través de proyectos de software libre. Mi impresión (que puede ser incorrecta) también es que no es común que los indios se involucren en proyectos de software libre, y si es cierto, eso lo ayudaría a destacarse.

Dices que estás interesado en Python. Hay muchos proyectos de software libre que involucran a Python, con varios niveles de barrera de entrada. Uno con el que estoy familiarizado es Mercurial, donde la barrera de entrada no es demasiado alta, la comunidad es amigable, los programadores son talentosos y hay oportunidades para participar. Y todos usan el control de versiones. Podrías recoger una pequeña función de error y / o lista de deseos del tamaño de un bocado y trabajar en ello.

Otros proyectos fuera de mi alcance son Django, Pylons, SQLAlchemy, aunque creo que Mercurial es tan bueno o mejor que cualquiera de estos desde el punto de vista de la oportunidad de participación. Otra posibilidad es el trabajo de distribución de la comunidad Linux, por ejemplo. con Debian, que también le dará la oportunidad de trabajar con personas talentosas. También es bueno para hacer contactos, etc. Además, si está interesado en C ++, los proyectos apt y aptitude en Debian son importantes y están severamente descuidados. En general, la mayoría de los proyectos de software libre no tienen suficiente mano de obra, particularmente los más pequeños, y están ansiosos por recibir ayuda.

desconocido
fuente
8

Tienes varios caminos que ofrecen diferentes oportunidades de trabajo.

  • cosas basadas en la web
  • proyectos nativos
  • desarrollo multiplataforma
  • portando a Linux

En general, prepárate para usar otros Unixes junto con Linux (aunque Linux es totalmente dominante en este momento).

Basado en la web

Casi cualquier cosa basada en la web que no use .NET es material de Linux (o multiplataforma). Puede concentrarse en cualquiera de los lenguajes más utilizados: PHP, Python, Perl, Ruby.

Proyectos nativos

Estos son en su mayoría trabajos de código abierto o computación de alto rendimiento.

En Europa es bastante común contratar a un programador de tiempo completo para modificar un proyecto de código abierto (y proporcionar soporte) en lugar de pagar tarifas de licencia locas para productos comerciales que de todos modos no encajarán.

El área de alto rendimiento es una especie de Linux solo en este momento, por lo tanto, los trabajos en esta área probablemente conducirán a Linux.

Esta área es muy pesada en C, con un poco de C ++ y mucha Java.

Desarrollo multiplataforma

Tipo de área extraña. Hay algunas compañías que ofrecen software multiplataforma, algunas tienen equipos especiales para plataformas específicas, algunas tienen equipos multiplataforma.

Pero muchas compañías simplemente usan Java (no es que ayude mucho).

Portando a Linux

Estos trabajos aparecen de vez en cuando. Algunas compañías ven un mercado abierto y deciden expandirse. Yo personalmente huiría de tales trabajos.

Let_Me_Be
fuente
+1 para un comentario interesante. ¿Le gustaría ampliar lo que es tan malo de portar trabajos?
Faheem Mitha
1
@Faheem Bueno, portar trabajos generalmente significa que terminas con una base de código horrible llena de extensiones no estándar y violaciones estándar (que parecen funcionar debido a algún milagro de MSVC). Por lo general, partes del código serán escritas por personas desaparecidas de la compañía y llenas de varios errores que aparecerán durante la transferencia. Esto también puede suceder en otras áreas, pero no es tan común (los proyectos de código abierto tienden a tener bases de código bastante horribles, pero no hay muchos proyectos grandes con una larga historia y una comunidad de desarrolladores de pequeña a mediana).
Let_Me_Be
Veo. ¿se refiere principalmente a las bases de código interno / propietario anteriores? ¿MSVC significa que las bases de código de C ++ están escritas en Visual C ++ y luego quieren portarlo a gcc?
Faheem Mitha
@Faheem C y C ++ son los que más sufren, los lenguajes con script menos. El principal problema es que, al realizar la transferencia, tocará el código que funciona "aquí y ahora" y, por lo general, descubrirá errores en dicho código.
Let_Me_Be
4

Un proyecto que tiene un número muy alto de codificadores que realizan trabajo remunerado es GNOME. Si vas allí y haces un trabajo increíble, es probable que alguien se te acerque. El más grande de estos es probablemente Red Hat (Fedora), y otros que he visto incluyen Canonical (Ubuntu), Novell (SuSE), un grupo de nuevas empresas o incluso la base de GNOME. Ah, y hay un montón de uso de Python en el proyecto, y el recuento de LOC es probablemente solo superado por C.

El planeta del proyecto es normalmente donde estas 'compañías GNOME' reportan sus acciones. Echar un vistazo.

Tshepang
fuente
1

Estoy hecho para trabajar en Java y Windows.

Buenas noticias, parece que al menos estás escribiendo / trabajando con código.

Si estuviera en su lugar, creo que tomaría un enfoque pragmático y aprendería a portar esa aplicación Java a Linux (cuando el jefe no está mirando).

Es un buen ejercicio hacer que una aplicación sea portátil.

Estoy incómodo con Java

No lo hagas, en el mundo de Linux usas el mejor lenguaje para la tarea. (Mejor lenguaje libre al menos).

Por lo tanto, debe asegurarse de estar cómodo con Java, C ++ / Qt, C, python, php, perl, etc.

Johan
fuente
Gracias. Bueno, escribir todo mi perfil de trabajo es ilógico, así que no lo he mencionado por completo. aquí. Pero debe tener en cuenta la última línea de su respuesta.
Dharmit