Cómo un desarrollador novato para sobrevivir en una entrevista y no volverse loco en el trabajo



De un traductor: Valery Aleksiev, un programador experimentado, habló sobre lo que mejor hace un desarrollador de software al comienzo de su carrera. En particular, qué herramientas vale la pena usar y qué buscar en las entrevistas.

Los primeros años de mi carrera fueron años de entrenamiento intensivo. Encontré una dura realidad y me di cuenta de que necesitaba obtener muchas habilidades diferentes que ni siquiera había pensado antes. Por lo tanto, decidí escribir una pequeña guía para otros desarrolladores. El artículo revela temas como entrevistas, trabajar como programador, recursos que ayudarán a mejorar.

Entrevistas de trabajo


Habiendo comenzado una carrera como programador, inmediatamente te darás cuenta de que las entrevistas apestan. Pueden ser terribles para todas las partes involucradas. Simplemente son asesinos de tiempo, un factor generador de estrés y el primer obstáculo para una carrera exitosa. Pero tienes que lidiar con ellos, así que es mejor saber para qué prepararte.

Preparación para la batalla

Las preguntas y tareas pueden ser muy diferentes, como ejemplo citaré la popular tarea FizzBuzz.

Escriba un programa que muestre números del 1 al 100. Pero para los números múltiplos de tres, debe mostrar Fizz en lugar del número en sí, y para los números múltiplos de cinco, Buzz. Para números que son múltiplos de tres y cinco, muestre la palabra FizzBuzz.

Todo parece ser tan simple y claro como el día, ¿verdad? De hecho, la mayoría de los programadores principiantes fallan en la entrevista de trabajo. Incluso he visto casos en que los solicitantes para el puesto superior no completaron la tarea y, además, tenían acceso a la red. Mi consejo es completar esta tarea antes de la entrevista en el lenguaje de programación que usa con más frecuencia. De lo contrario, la entrevista será una pérdida de tiempo para todos sus participantes.

Por supuesto, necesitas mucho más conocimiento. En particular:

  • Estructuras y algoritmos de datos básicos: listas vinculadas, matrices, árboles y clasificaciones.
  • Información general sobre "su" lenguaje, incluida la inmutabilidad de cadenas, la administración de memoria y más.
  • Conceptos de programación orientada a objetos como clase vs objeto y herencia.

Todo esto debe ser literalmente pulido a un brillo si quieres mostrarte desde el mejor lado. Puedo aconsejar esos recursos que ayudarán a prepararse para las entrevistas:

  • "Cracking the Coding Interview ", un libro fantástico que contiene información sobre una gran cantidad de problemas de programación y sus soluciones;
  • CodeWars , un sitio con tareas de programación inusuales que puede resolver directamente en su navegador usando varios idiomas.

Skillbox recomienda: Curso práctico "Profession Web Developer" .

Le recordamos: para todos los lectores de "Habr": un descuento de 10.000 rublos al registrarse en cualquier curso de Skillbox con el código de promoción "Habr".

Y un poco mas



Hay un par de puntos que lo ayudarán a obtener conocimientos y experiencia adicionales.

Primero, aprenda a expresar claramente sus pensamientos, así como a describir sus conocimientos y capacidades. Aprende a hacer currículums buenos y plegables. Esto puede sonar tonto, pero muchas personas que buscan trabajo no saben cómo hacerlo, no pueden explicar qué son en una reunión personal ni redactar un currículum competente.

En segundo lugar, publique ejemplos de su código en GitHub o en cualquier otro repositorio abierto. Los ejemplos de código no deberían ser demasiado complicados, pero el código debe ser limpio y racional. Esta es tu oportunidad de mostrar algunas de tus habilidades antes de la entrevista.

Intenta participar en un proyecto de código abierto. Esto mostrará su experiencia y le enseñará a trabajar en equipo.

Entrevista a tu entrevistador

Sí, la entrevista no solo debería preguntarte. Puede y debe estar interesado en los diversos matices de su futuro trabajo y empresa. Escucha atentamente las respuestas. Pueden ser muy importantes, contener información explícita y no muy acerca de qué es una nueva empresa, su equipo y su trabajo.

Aquí hay ejemplos de preguntas para hacer.

¿Cuál será mi jornada laboral estándar?
Este es un tema importante, ya que las tareas de un desarrollador de software en diferentes compañías pueden variar significativamente. Si la respuesta no es demasiado confiada o vaga, puede considerar esto como una advertencia, un indicador de que algo está mal aquí. La persona que lo contrata debe comprender claramente por qué es una empresa.

¿Cómo pruebas tu software?
Idealmente, las pruebas deberían ser bastante diversas. Si la respuesta es algo así como "Simplemente escribimos todo a la vez sin errores, jaja", debe entender esto de tal manera que haya errores, pero nadie quiere o no puede solucionarlos.

¿Qué sistema de control de versiones estás usando?
Una pregunta importante ya que es necesaria para el trabajo en equipo. Si la respuesta es: "¿Qué, sistema de control de versiones?" - luego huir de esa entrevista rápidamente y lejos.



Si su interlocutor comienza a hablar sobre un sistema personalizado, entonces nada bueno lo estará esperando en esta compañía tampoco, ya que la infraestructura aquí claramente no se ha actualizado durante mucho tiempo.

¿Realizas revisiones de código?
De hecho, la revisión de código es un paso importante en el trabajo en equipo porque le permite identificar muchos errores. Si recibe una respuesta negativa, significa que el trabajo en equipo no está muy bien entregado. Por supuesto, puede haber excepciones, pero en la mayoría de los casos lo es. Si le dicen algo como "Confiamos el uno en el otro", entonces vale la pena considerarlo. Lo más probable es que nadie verifique nada en esta empresa.

¿Qué programas educativos puedes ofrecer? Un programador debe evolucionar constantemente, por lo que la mayoría de las empresas ofrecen la oportunidad de aprender. Si este no es el caso, entonces el dinero es un problema o los desarrolladores a menudo cambian.



¿Qué proceso de desarrollo de software utilizas?
En cualquier empresa donde trabajen más de dos personas, debe haber algún tipo de algoritmo para el trabajo general del equipo, un proceso simplificado. Si no hay nada como esto, el trabajo en esta compañía será como andar en bicicleta que arde, y todo lo que lo rodea arde, todos arden.

¿Cómo resuelve el problema técnico de la deuda?
La deuda técnica, o deuda de codificación, es un término que identifica errores de larga duración en el código o la arquitectura de la aplicación. Los problemas se acumulan y al final se convierten en un obstáculo muy serio para seguir trabajando en el proyecto.

Si le responden que no hay soluciones, y la compañía se está "enfocando en nuevas características", entonces lo más probable es que el problema haya crecido a tal escala que no se pueda resolver, o el caos comenzará en el futuro cercano.

¿Qué puedes decir sobre la cultura corporativa?
Diferentes empresas tienen una atmósfera y cultura muy diferentes. Pero tenga en cuenta que necesitará estar dentro del equipo más de 40 horas a la semana durante varios años, así que escuche lo que le dicen.

Trabaja como programador


Bien, pasaste por todas las etapas de la entrevista y conseguiste un trabajo. Felicidades



Que ahora Necesitas realizar muchas cosas interesantes y no tan interesantes. Como somos programadores, detengámonos en la discusión del código.

Buen código

Debe cumplir los siguientes criterios:

  • Para ser legible, porque el código se analiza con mucha más frecuencia de lo que se escribe. Por lo tanto, su código debe ser legible y comprensible tanto para usted como para sus colegas.
  • Fiable Debe asegurarse de que todas las clases y métodos se usen correctamente y que no se bloquee el programa.
  • Optimizado No debe ser un perfeccionista, pero aún necesita revisar periódicamente su código. Siempre debe estar preparado para hacer una pequeña optimización del código.

Aquí hay algunas cosas más para aprender.

No estarás programando mucho.

Sí, esto puede parecer extraño, pero de hecho pasarás mucho más tiempo en:

  • depuración
  • leyendo el código;
  • reuniones y redacción de correos electrónicos / respuestas;
  • planificación

Y hablemos de las habilidades que son importantes para la carrera de un programador.

Código de depuración y lectura



  • Para convertirse en un profesional en depuración, debe decidir las herramientas adecuadas. Los lenguajes de programación más populares tienen las herramientas necesarias para la depuración. Conózcalos, aprenda a usarlos, esto le ahorrará innumerables horas.
  • Comprender la base, la estructura de la base del código. Puede aprender el código con herramientas como ReSharper, grep o Sourcegraph.
  • Aprende los manuales. Se sorprenderá si descubre que pocos desarrolladores aprenden la documentación técnica. Como resultado, muchos simplemente no saben cómo debería funcionar el software, lo que significa que se dedica más tiempo a la depuración. Simplemente lea la documentación, le ahorrará tiempo.

Organización y planificación

Dado que tiene mucho para comunicarse con sus colegas, planificar y realizar tareas (y algunas al mismo tiempo), debe poder organizar su tiempo. Esto te ayudará a:

  • TODO / Tareas. Lo más probable es que su empresa tenga un sistema para mantener tareas y monitorear su implementación, pero no está de más iniciar su propio sistema. Usa Trello, Todoist u otra cosa.
  • Notas En el proceso, a menudo necesita memorizar varias pequeñas cosas necesarias. Es mejor grabarlos, por ejemplo, usando Evernote, OneNote y otras herramientas.
  • Gráficos y visualización. Es mejor evaluar su rendimiento con herramientas como Lucidchart, Visio y otras.

¿Cuándo usar bibliotecas?

Casi siempre No hay necesidad de reinventar la rueda una y otra vez. En la mayoría de los casos, trabajar sin bibliotecas conduce a una pérdida de tiempo. Por supuesto, esto no significa que deba permanecer ignorante acerca de cómo usar los algoritmos o cuál es la estructura de las bases de datos, porque necesita comprender cómo y dónde usar todo esto.

Las bibliotecas estándar de los idiomas más populares son extremadamente eficientes. Revise la documentación para comprender mejor cómo usarlos.

No debe tener miedo de trabajar con bibliotecas adicionales si ayudan a ahorrar tiempo. Puede ser:

  • Bibliotecas de código abierto donde puede evaluar la calidad del código.
  • Bibliotecas con licencia bajo MIT y BSD, puede usarlas sin problemas. Ten cuidado con la GPL.
  • Aquellos que ya están en uso durante mucho tiempo y tienen una amplia gama de capacidades.
  • Compatible: aquellos que reciben actualizaciones regularmente.
  • Utilizado por otras empresas / proyectos, lo que puede indicar su fiabilidad.

Seguir mejorando

Puede parecer cursi, pero debe aprender incluso durante el trabajo, así como en su tiempo libre, todos los días. Esto es ayudado por cursos en línea, libros, blogs, así como una segunda (tercera) educación. También vale la pena prestar atención a conferencias y diversos tipos de talleres. Entre las conferencias más famosas, destacaría GOTO (dirección general), Strange Loop (también general), PyCon (Python), CPPCon (C ++), DEF CON (seguridad), Fluent (webdev).

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


All Articles