Soy un idiota inútil, así que quiero dejar mi trabajo: 10 preguntas para un desarrollador de software, un episodio piloto



Hola, Habr!

¿Recuerdas la historia de Steve Jobs y Dennis Ritchie ? Sin ninguna intención de reavivar los debates o moralizar sobre el tema, seamos sinceros: miles de técnicos estelares viven en la sombra, mientras que sus propias historias están ocultas en un armario polvoriento.

Nosotros, el equipo editorial de Habr, estamos dispuestos a abordar esta injusticia. De ahora en adelante, entrevistaremos regularmente a personas que mantienen un perfil bajo en los medios y las redes sociales. Entonces, si tiene algo que contar sobre usted, prepárese.

Para darle una idea de cómo se verá esto, lo guiaremos. Haga clic a continuación para ver 10 preguntas generales que le haremos a cada invitado. Para nuestro episodio piloto, el primer invitado en responder las preguntas fue fillpackart. (Este mes he tenido varias sesiones de entrevistas bastante buenas con él, ver artículos uno, dos, tres). Léalos, y si decide contar su propia historia de una manera similar, solo envíeme un mensaje a mí o bábalo.



Filipp Ranzhin, hijo de un ingeniero de una pequeña ciudad rusa de Ivanovo. Comenzó a codificar en C ++ en la universidad cuando tenía 16 años, y luego aprendió .NET. Actualmente trabaja en el puesto de ingeniero sénior de desarrollo de software en una empresa extranjera respetable. Además de los lenguajes de programación de uso común, también es competente en F # y OCaml.

1. Cuéntame sobre una característica que implementaste que te enorgullece mucho.


- No he hecho nada que pueda hacerme sentir orgulloso. A lo largo de mi vida, he estado lidiando con problemas muy triviales. Así que estoy orgulloso de lo que soy capaz, más que de lo que he logrado.

Creo que me habría sentido orgulloso si hubiera diseñado un sistema inteligente de inteligencia artificial.

2. Ahora cuéntame sobre tu peor cagada.


- Una vez que pasé todo un día tratando de hacer que OCaml se ejecute en Windows (no intenten repetir esto, muchachos). Esta no era una actividad relacionada con el trabajo, así que a la mañana siguiente tuve que encontrar alguna excusa en una reunión. Justo en ese momento vi una asignación de errores que ni siquiera me tomé el tiempo de investigar. Y estoy como, "¡Dame cualquier error, y lo arreglaré en dos días!" Mentí en la reunión que había estado trabajando en ese error y que esperaba lanzar un RP en dos días.

Sin embargo, resultó que tuve que pasar tres meses para arreglarlo.

El error estaba relacionado con la interoperabilidad entre dos sistemas enormes. Podría ser reproducido constantemente. Durante todos esos tres meses, seguí haciendo varias sugerencias y revisándolas, fallando una y otra vez, hasta el punto en que abandoné la construcción de mi casa en Skyrim. Esos fueron los peores tres meses de mi vida.

Finalmente, lo cerré como "No repro". Me acerqué a mi jefe y le dije: "Soy un idiota inútil, así que quiero dejar mi trabajo para liberarte de esta carga". Pero en cambio ella me dio un gran aumento de sueldo.

3. Describa su lugar de trabajo: desde la silla y el monitor de su oficina hasta los entornos de desarrollo preferidos y las utilidades favoritas.


- Trabajo con la familia de sistemas operativos Windows, porque uso la pila .NET y porque Windows tiene una mejor interfaz de usuario. Me siento en una mesa que hice para mí. Es tan enorme que es capaz de acomodar a media docena de codificadores.

Mi DevBox no es para nada malo, sin embargo, tiene una falla sustancial: intenté reducir los costos y compré una CPU AMD. Este fue un fracaso épico. A pesar del alto rendimiento reclamado, este pedazo de mierda ejecuta mis pruebas cinco (!!!) veces más lento que un procesador similar de Intel.

Actualmente solo tengo un monitor. Planeo comprar dos más para parecer un profesional. Mi IDE favorito es Visual Studio 2017 combinado con Resharper. Mi editor de texto favorito es Visual Studio Code mejorado con millones de complementos. Descargarlos y ver evolucionar VSCode es uno de mis pasatiempos.

Por mucho que me guste git, diría que prefiero Visual Studio Team Services sobre GitHub.

4. ¿Con base en qué criterios eliges trabajar? ¿Es la pila, el producto, el entorno de trabajo, el dinero?


- Por el momento, los factores clave para mí son el salario y la capacidad de comprometerme solo en un tercio de mi potencial. Creo que he pasado por un agotamiento y ya no estoy listo para entregar mi corazón y mi alma al negocio de alguien. Incluso ante la amenaza de ser despedido y perder el estilo de vida al que estoy acostumbrado, todavía no profundizaré demasiado en el proyecto. Y digo esto como padre de "un año y medio", por lo que es una seria amenaza. Pero la repetibilidad y la falta de sentido en todo lo que he hecho anteriormente ahora duele casi físicamente.

A veces pienso que con ese enfoque no tengo el derecho moral de buscar trabajo. Mi justificación es que uno no puede ser moral o inmoral con respecto a un sistema. La naturaleza abstracta de las corporaciones me ayuda a distanciarme de la idea de que podría dañar a personas de la vida real, por lo que acepto trabajos solo de grandes empresas.

Al mismo tiempo, me da vergüenza cuánto gano (según los estándares de mi ciudad) por una solicitud de extracción. Como si el estado de un desarrollador altamente calificado me permitiera tener una vida diez veces mejor que un montón de otras personas que trabajan duro durante ocho horas al día para hacer algo realmente útil.

A veces pienso que si he logrado burlar a un representante comercial en una entrevista de trabajo, hasta cierto punto, merezco todo lo que tengo. Esto me hace perder el contacto con la realidad y empiezo a creer que así debe ser.

No sé cómo esto puede funcionar, pero me encanta la codificación, y al mismo tiempo odio trabajar como desarrollador. Puedo animarme diciendo que todavía no he trabajado en un proyecto interesante, pero realmente no creo en él. Es difícil vivir con esto.

5. ¿Qué le gustaría mejorar en la tecnología y los idiomas que está utilizando?


- Esto es lo que me gustaría cambiar:

  • Inferencia de tipos e inmutabilidad en tiempo de compilación para mecanografiado y C #. Esto me daría la oportunidad de crear un método que reciba algo confiablemente inmutable, a diferencia del ReadonlyDictionary utilizado actualmente, que en realidad no es de solo lectura (puede pasar un diccionario regular a su constructor, mantener una referencia y luego mutarlo fácilmente it)
  • Me gustaría que los desarrolladores de C # finalmente dejen de perder el tiempo con la compatibilidad con versiones anteriores y las estúpidas declaraciones de uso, que de todos modos solo funcionan dentro de un archivo, y para modernizar el lenguaje de programación. En serio, en un lenguaje donde es una práctica habitual escribir algo como IDictionnary <IMyStupidType, IMyStupidType2> Foo (Func <IMySupidType, int, bool, string> reallyStrangeCallback, no implementar tipos de alias es una decisión muy extraña.
  • Campos de respaldo automatizados en C #, algún tipo de azúcar sintáctica sobre Func <T1, T2>.
  • El código listo para usar se contrae para C # (por ejemplo, en Roslyn) en lugar de soluciones externas que convierten mi IDE en un desorden lento.
  • Una alternativa de jsx para el lenguaje F #. Si ninguno de ustedes lo lanzará la próxima semana, entonces tendré que atenderlo.
  • Me gustaría que la comunidad se dé cuenta de que las pruebas unitarias son basura inútil, y que los idiomas con escritura dinámica (que no deben confundirse con escritura débil) son el mayor fracaso en la historia de la industria.
  • Para hacer que las arquitecturas del procesador se adapten mejor al enfoque funcional.
  • Para optimizar las recursiones de cola en JS / TS, para poder atascar mis recursiones de cola en todas partes sin mirar atrás en el tamaño de la pila. Está allí en la especificación, pero los chicos que están trabajando en v8 parecían ignorar la especificación del lenguaje como algo sin importancia cuando se trata de desarrollar el código de tiempo de ejecución.
  • Una opción para escribir estático listo para usar en JS, sin perjuicio del mecanografiado. A diferencia de los creadores del mecanografiado, lo considero un lenguaje de programación independiente con un diseño multi-paradigma avanzado y potente.
  • Para que cosas como WebAssembly estén firmemente arraigadas en las mejores prácticas y estándares de desarrollo front-end.
  • Para ver clientes web significativamente mejorados para GitHub y similares. Idealmente, me gustaría poder editar el código de un proyecto serio en mi navegador.
  • Más convenciones de compatibilidad. La vida sería mucho más fácil si jvm pudiera interpretar y jit un fragmento de código en .NET CIL.

6. ¿Dónde está el mejor lugar para compartir experiencias de trabajo: universidad, conferencias, Habr? ¿En algún otro lugar que eso?


- Solía ​​estudiar en una universidad, pero me expulsaron repetidamente. Asistí a conferencias y soy habitual en Habr. No creo haber adquirido nada de sabiduría verdadera de ninguna de estas fuentes. Tal vez solo encuentro placer en pensar eso.

Mi truco es leer libros y hacerme amigo de otros desarrolladores. Creo que hablar con personas inteligentes que se dedican al desarrollo de software ha tenido el efecto más positivo en mis habilidades.

7. Si tuviera recursos ilimitados (tiempo, dinero, instalaciones, recursos humanos), ¿en qué proyecto trabajaría?


- Sería genial crear el simulador más preciso (en la medida de lo posible) de la humanidad, para probar rutas para que la sociedad alcance su estado más feliz. En general, sería interesante emular el comportamiento de las personas bajo diversas circunstancias.

8. ¿Cómo pasas tus horas de ocio? ¿Qué haces aparte de tu trabajo?


- Salgo a caminar por el bosque y contemplo, a veces tomando una cerveza; De vez en cuando toco mi guitarra y juego videojuegos. Diría que mi pasatiempo es pensar y soñar.

Tengo varios proyectos personales en los que trabajo con mis amigos. Disfruto dándoles revisiones de código pasivo-agresivas a propósito (por ejemplo, "¿le importaría sugerir una razón para usar una solución tan mal pensada?") Y observe cómo esto cambia nuestra relación.

A veces hago varias cosas de artes liberales como dar entrevistas. También a menudo escribo un libro, pero nunca he terminado ninguno.

9. Cuéntanos sobre tus tres libros favoritos: uno de aprendizaje, uno no ficticio y otro ficticio.


Aprendizaje - CLR a través de C # por Jeffrey Richter. Está repleto de tantos conocimientos sobre los entresijos del tiempo de ejecución de .NET, lo que lo convierte en un verdadero tesoro. Quien aprenda este libro de memoria, pasará cualquier entrevista para el trabajo de un desarrollador de .NET. También destacaría las Estructuras de datos puramente funcionales de Chris Okasaki. Si bien no es muy práctico, este libro volvió a inculcarme la fe en la programación, ya que la implementación del autor de las estructuras de datos envió escalofríos metafísicos por mi columna vertebral.

No ficción : no sé si Code Complete encaja en esta categoría, pero disfruto releerlo. El autor relata cosas increíblemente obvias, sin embargo, en cada proyecto en el que estaba trabajando, nadie parecía ser capaz de seguir esos principios en un grado adecuado.

Ficción - Una tragedia americana de Theodore Dreiser. Nunca pensaría que un monstruo digital pragmático, como yo, sería capaz de simpatizar con una chica que fue abandonada por su novio y luego asesinada. Pero simpatizaba, y esto significaba mucho para mí.

10. Si un sistema de IA de repente tomara conciencia frente a ti, ¿qué le dirías?


- Lo ofrecería para diseñar un proyecto de inteligencia artificial y luego los compararía entre sí. Si el nuevo resultara ser superior, le pediría que diseñara un proyecto de inteligencia artificial, y así sucesivamente ...

Si un robot de IA fuera un codificador experto, lo usaría para crear una prueba confiable de que Golang es un callejón sin salida de la evolución de la programación. Debido a que veo tantas Guerras Santas sobre este tema, aún no tengo presupuesto para aprender Golang en profundidad para construir un conjunto sólido de argumentos.

Bonificación: pregúntale a otro desarrollador lo que quieras.


- ¿Qué tecnología te gustó más aprender?

Source: https://habr.com/ru/post/es436012/


All Articles