Un artículo que es de mucha ayuda para los programadores jóvenes, anímense unos a otros (volver)

En un abrir y cerrar de ojos, llevo 8 años trabajando, un colega de la empresa que entró al puesto de trabajo hace dos días quería que le diera algunos consejos y experiencia. Creo que este tema es muy valioso. Escribí este artículo basado en mis pensamientos y experiencias personales, con la esperanza de inspirar a los desarrolladores jóvenes.

Hay 4 empresas para las que he trabajado, NVIDIA, Google, Slide y Glow. Dos de ellas son grandes empresas conocidas, me incorporé a Slide después de la ronda D. En ese momento, había unas 150 personas. Glow se ha establecido desde su primer día y ha estado allí hasta ahora. El trabajo personal también abarca desde Desarrollador, Jefe de Tecnología, Gerente de Ingeniería hasta CTO. Estas experiencias me dieron una visión más completa del desarrollo personal de los programadores.

Si le pregunta a un joven desarrollador front-end, ¿cómo puede mejorar sus habilidades en los próximos 3 años? Podría decir: "Estoy más familiarizado con el front-end web, pero quiero aprender más sobre AngularJS. Además, React se está desarrollando muy rápido y quiero echarle un vistazo. Después de eso, dedicaré tiempo a aprender sobre el desarrollo de iOS y Android". Se ve bien. , Pero carece de objetivos sistemáticos. En otras palabras, formuló lo que debía aprender, pero no pensó detenidamente por qué debería aprenderlo.

En el campo técnico, hay demasiadas cosas que se volverán obsoletas rápidamente ¿Cómo utilizar el tiempo limitado para maximizar sus beneficios a largo plazo? Aquí puedo dar algunas sugerencias.

1 Construye tu caja de herramientas

Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas. Cada desarrollador debe tener su propia navaja suiza. En la larga carrera en el futuro, estas herramientas pueden ahorrarle un tiempo valioso y ayudarlo a organizar mejor su base de conocimientos personal. Dé dos ejemplos:

  • Un entorno de desarrollo eficiente

  • Un recolector de información y un cuaderno.

  • Entorno de desarrollo eficiente

Podemos hablar de editores. Aquí están IDE vs Text Editor, Vim vs Emacs, Sublime vs Atom, ¿cómo elijo? Antes de tomar una decisión, primero pensamos en nuestros objetivos. Esperamos que sea una inversión a largo plazo. Este editor se puede utilizar durante mucho tiempo. En este proceso, continuaremos puliéndolo para que sea totalmente adecuado a nuestros hábitos y maximice la eficiencia de edición. Si el programador es un caballero, el editor es su espada.

Aunque soy un gran usuario de Vim, creo que no lo consideré cuando elegí Vim. Si tuviera que elegir de nuevo, mi primera opción sería Emacs y mi segunda opción sería Atom. Emacs ha existido durante 30 años, la comunidad todavía está activa y su escalabilidad no tiene comparación con los editores. El lenguaje de programación de Emacs, elisp, también es un dialecto de lisp.Creo que aprender lisp puede mejorar la comprensión de los programadores de las ideas centrales de la programación. Otro punto extra es que Emacs atrae a un gran número de programadores de alta calidad debido a su alto umbral y características de ceceo. Su comunidad puede describirse como un dragón oculto y un tigre agachado, y nació un complemento de nivel de dios como Org-mode. A diferencia de Vim, la esencia de Vim radica en la edición de modo, que vale la pena aprender y puede mejorar en gran medida la eficiencia de la edición de texto.

Pero cuando esté familiarizado con este concepto, creo que puede cambiar a otros editores, porque la arquitectura de Vim y Vimscript limitan su escalabilidad. Emacs es totalmente compatible con la edición en modo a través del complemento Evil, y otros editores convencionales también tienen complementos similares, por lo que una vez que domine este concepto, también podrá desempeñar un papel en otros editores. Algunas personas pueden decir que ningún emulador de Vim puede lograr el 100% de las funciones de Vim, pero la cuestión no es si se trasplanta una determinada instrucción, sino si se puede trasplantar la esencia del pensamiento de edición de modo. Creo que la respuesta es sí.

Mirando a Atom vs Sublime nuevamente, Atom es muy extensible, y la mayoría de sus funciones centrales también se implementan en forma de complementos, esto es similar a Emacs. Y su función de código abierto me hace creer que tiene una vitalidad más duradera que Sublime.

En cuanto a los IDE, mi opinión es que no excluyo los IDE, pero cada IDE es para una tarea o lenguaje de programación específico. Como aspirante a programador, puede utilizar un IDE, pero aún necesita dominar un potente editor universal.

Similar al editor, el entorno de desarrollo eficiente también incluye Shell, Launcher, administrador de ventanas, lector de documentos, etc. Algunos de ellos solo necesitan que dediques muy poco tiempo a completar la configuración, y su retorno de la inversión es muy alto.

Recolector de información y cuaderno

El primero se utiliza para recopilar información generada por otros y el segundo se utiliza para recopilar información generada por usted mismo. Un ejemplo sencillo del primero es el marcador del navegador. Debe poder archivar un conjunto de información útil en cualquier momento y encontrarla rápidamente en algún momento en el futuro. El ejemplo más intuitivo de este último es el portátil que viene con Mac OS o iOS. El propósito aquí es registrar sus propios pensamientos en cualquier momento y lugar. Esencialmente, necesita tener un conjunto de herramientas útiles para hacer su gestión del conocimiento (Gestión del conocimiento), que también se puede decir que es una copia de seguridad externa de sus conocimientos e ideas. Yo personalmente uso Evernote tanto para la recopilación de información como para las notas. Si tiene un buen proceso, también puede utilizar dos herramientas para hacer bien las dos cosas. Pero le sugiero que dedique suficiente tiempo a pensar en cómo organizar su base de conocimientos personal.

Los anteriores son solo dos ejemplos típicos. Lo que debe hacer es encontrar las tareas en las que estará involucrado durante mucho tiempo (a menudo sin cambiar con la tecnología o con la empresa) y ajustar las herramientas necesarias para completar estas tareas de la mejor manera. Para dar otro ejemplo, prestaré atención a los teclados que usan los programadores que me rodean. Solo unos pocos programadores comprarán teclados capacitivos electrostáticos de alta gama, como HHKB. En mi opinión, esta es obviamente una inversión muy valiosa. Los programadores necesitan trabajar con teclados la mayor parte del tiempo en el trabajo. Una experiencia de escritura cómoda es muy rentable, sin mencionar teclados de alta calidad. Ambos son muy duraderos.

2 Amplíe sus horizontes y construya su sistema técnico

En primer lugar, debe establecer una meta para usted, al igual que una empresa establecerá su Visión.

La meta debe ser lo suficientemente grande para que puedas ver más paisajes.

El objetivo debe fijarse en qué tipo de problema resolver, no qué tipo de tecnología dominar. La tecnología es solo un medio, no un fin.

Por ejemplo, el objetivo de "Quiero ser un experto en desarrollo de iOS" es mucho menos significativo que "Quiero ser un experto en desarrollo de aplicaciones front-end". En el primero, podrás adentrarte en varios trucos y trucos en el framework iOS, mientras que en el segundo, comenzarás a prestar atención al diseño visual e interactivo, y a estudiar las diferencias y tendencias comunes entre plataformas. Obviamente, esto último es más útil para tu desarrollo personal.

Sin embargo, incluso con un objetivo claro, qué tipo de tecnología elegir y cómo aprender, sigue siendo un problema difícil hoy con la sobrecarga de información. A menudo existe la opinión de que se debe aprender la última tecnología, porque la antigua está desactualizada, y la opinión opuesta es que la nueva tecnología aún no está madura. Mi opinión personal es que cuando ingresa por primera vez a un campo, debe elegir el marco de tecnología convencional; cuando tiene cierta experiencia, debe prestar más atención a los promotores detrás cuando elige la tecnología. Creo que las personas y los equipos excelentes siempre pueden crear productos excelentes, sin importar ¿Es una empresa comercial o una comunidad de código abierto? No se preocupe demasiado por la vieja y la nueva tecnología, porque pronto se convertirá en pasado. Lo que realmente desea aprender es el pensamiento detrás de la tecnología.

Muchos lenguajes y proyectos de código abierto escribirán su filosofía de Codificación, lo cual es muy interesante, puedes verificar estos conceptos de programación desde su código fuente. Tome Python como ejemplo. Si ejecuta import this, verá su filosofía. Otro ejemplo es Celery, una conocida biblioteca de código abierto en Python, que tiene una sección dedicada en su documentación que describe su filosofía de programación. Su impacto en ti será más profundo que el de estas tecnologías en sí, este es un consejo que doy a los principiantes. Por la misma razón, recomiendo leer algunas excelentes bibliotecas de código abierto o el código fuente del lenguaje. Por ejemplo, la mayor parte de la biblioteca estándar de Python está implementada en Python y es muy legible. Si el aprendizaje de una tecnología solo se mantiene en el nivel de uso, no ha absorbido completamente su esencia y los beneficios del aprendizaje desaparecerán a medida que la tecnología se vuelva obsoleta.

Mi otro principio de aprendizaje es maximizar la diferencia entre él y su base de conocimientos existente al elegir aprender una nueva tecnología. Puede ser incómodo de leer. Por ejemplo, si conoces Django, ¿deberías aprender Ruby on Rails o NodeJS a continuación? De acuerdo con este principio, deberías aprender NodeJS, porque su modelo de E / S asíncrono es muy diferente en concepto del modelo síncrono de Django. RoR es más similar a Django. Pero una mejor opción es no aprender otro framework web, aprender ZeroMQ o Redis, los cuales también son muy útiles para el desarrollo web, a fin de maximizar la diferencia. Desde la perspectiva de construir el concepto técnico de un programador, recomendaría que cada programa al menos entienda Lisp o un lenguaje de programación funcional, ya sea que lo use en un futuro previsible, le permiten ver la programación desde una perspectiva diferente .

Finalmente, sugiero que cada programador debería operar un producto propio, puede ser una aplicación, un sitio web o un software de código abierto. A menos que sea uno de los primeros empleados de una empresa emergente, es posible que no tenga la oportunidad de poner en práctica todas las técnicas o ideas que ha aprendido. Hay muchas personas que quieren convertirse en ingenieros completos y la forma más rápida es crear su propio producto. Cualquier diseñador construirá cuidadosamente su propia cartera, pero la mayoría de los programadores no lo harán.

Al evaluar la capacidad de codificación de un programador, comprobaré si hay proyectos pendientes en su Github. Desafortunadamente, el Github de la mayoría de los programadores en China está vacío o solo hay algunos programas muy simples. Sugiero que todos administren sus proyectos en Github. Esto no solo mejorará su reputación, sino que también será muy útil para su futura búsqueda de trabajo. Cuando se quejó de la entrevista de trabajo y se le hicieron todo tipo de preguntas de procedimiento sin sentido, ¿alguna vez pensó que el entrevistador también está muy indefenso, porque no tiene otra forma de saber cómo es su capacidad de codificación? Si cada programador tiene su propio trabajo, creo que la entrevista para programadores será mucho más fácil.

3 Enfatizar el cultivo de habilidades comunicativas

Cuando me preguntan "¿Cuál es la mayor diferencia que has aprendido entre el desarrollador junior y el desarrollador sénior?", Mi reacción más natural es la comunicación y la documentación. La comunicación incluye la comunicación dentro del equipo de programación, la comunicación con otros equipos, la comunicación con el Gerente, etc. No creo que tenga la capacidad de hacer estas preguntas muy generales, pero puedo dar una sugerencia, es decir, aprender a comunicarse con su Gerente primero y dejar que él le enseñe el resto.

Muchas empresas establecerán una proporción de 1: 1 entre el Gerente y los miembros del equipo. Los miembros del equipo deben dirigir una relación 1: 1 eficiente la mayor parte del tiempo. Esto requiere que dedique suficiente tiempo a considerar la pregunta antes de 1: 1, y es mejor enviarla al Gerente con 1 día de anticipación para darle la oportunidad de pensar en la respuesta. Muchas personas no prestan mucha atención a esto, o solo hacen preguntas muy específicas en lugar de algunas preguntas abiertas, por lo que es difícil para usted aprender de su Gerente. Si gradualmente comprende cómo usar el tiempo 1: 1, muy bien se convertirá en la actividad con el mayor retorno de la inversión por unidad de tiempo en su trabajo.

4 Acumula tus conexiones

Todos comprenden la importancia de los contactos, pero no es fácil hacerlo. La participación en algunas reuniones o eventos fuera de línea puede ser una de las formas más directas de expandir su red. Es una pena que la mayoría de la gente se vaya a casa después de una conferencia técnica. Por supuesto, esto también está relacionado con el horario de muchas actividades, el tiempo de la charla está demasiado lleno, la pausa para el café es corta, y en ocasiones los invitados llegan tarde o no controlan el tiempo, por lo que simplemente cancelan la pausa para el café.

De hecho, conocer a uno o dos becarios es mucho más valioso que escuchar conferencias técnicas. La próxima vez que vaya a este tipo de reunión, también puede establecer una meta para usted, como agregar al menos dos pares de WeChat. Después de eso, puede tomar más tiempo mantener sus contactos. Después del trabajo o los fines de semana, ¡pídales un café a sus amigos!

Además, creo que todo el mundo necesita un mentor de carrera, que puede ser su primer mentor o gerente de trabajo, u otras personas mayores que conozca. Necesitas mantener una relación a muy largo plazo, más que una simple empresa, y preferiblemente a lo largo de toda tu carrera. Siempre que tengas dudas, puedes pedirle su consejo, creo que será tu patrimonio personal más valioso.

5 Encuentra una plataforma para usar tus talentos

El último y más importante paso es encontrar la empresa que más le convenga. Cuando un solicitante de empleo evalúa una empresa, puede observar tres aspectos:

  • Las perspectivas de desarrollo de la empresa (para las grandes empresas, observe las perspectivas de desarrollo del departamento)

  • El equipo al que te unirás

  • Salario y beneficios

Por lo tanto, al entrevistar a una empresa, debe darse cuenta de que la entrevista es bidireccional: mientras la empresa lo está entrevistando, usted también está entrevistando a la empresa. Antes de la entrevista, debes hacer tus deberes sobre la empresa y preparar algunas preguntas de calidad, como señalar problemas en el producto, preguntar sobre el proceso de desarrollo o cómo hacer una evaluación de desempeño. En ese momento también puede verificar si su entrevistador está calificado.

Cada vez que elija una empresa, debe tener en cuenta los tres aspectos anteriores, pero en las diferentes etapas de su carrera, el enfoque es diferente. Por ejemplo, cuando estás trabajando, lo más importante es formar parte de un buen equipo, que te puede enseñar muchas cosas y mejorar tus habilidades. Después de trabajar durante 5 años, necesita una plataforma para mostrar sus talentos y reflejar su valor personal. La importancia de las perspectivas de desarrollo de la empresa está aumentando rápidamente. Una vez que haya logrado algunos logros y haya demostrado su valía, ingresará gradualmente al período de cosecha y será elegible para preguntar a la empresa. Por otro lado, la fuerza del equipo también tiene un gran impacto en las perspectivas de la empresa.

Para un compañero de clase que se acaba de graduar y ha entrado en el lugar de trabajo, una pregunta que se ha hecho en innumerables ocasiones en los últimos años es "¿Mi primer trabajo va a una empresa nueva o grande?" Mi respuesta sigue siendo "Unirme a un equipo excelente es lo mejor importante". Para algunas grandes empresas bien conocidas, la calidad del equipo está garantizada, pero las startups no. La calidad del equipo es desigual, por lo que como dije antes, debes entrevistar al equipo y hacer tu propio juicio. Pero además del factor equipo, me gustaría mencionar algunos beneficios de que los graduados vayan a empresas de nueva creación.

En primer lugar, dentro de un período de tiempo después de la graduación, la presión económica es baja y es el período más libre y con mayor riesgo, y este período a menudo no es largo, por lo que debe aprovechar este momento de máxima audiencia para comenzar una startup. En segundo lugar, después de que todos los estudiantes ingresen a las grandes empresas, ocuparán puestos junior. Hasta cierto punto, son la continuación del aprendizaje escolar. Están estandarizados y organizados, pero carecen de independencia e innovación. Esto es lo que carece de la mayoría de los estudiantes chinos. Esta capacidad se puede ejercer rápidamente en una empresa de nueva creación, pero en una empresa grande, es posible que deba esperar a un puesto de nivel medio para tener esta oportunidad. Punto de vista personal, solo como referencia.

6 Resumen

Creo que los primeros tres años de ingreso al lugar de trabajo son particularmente importantes para el desarrollo futuro. Espero que este artículo pueda ser útil para los programadores jóvenes.

Recomendar buenos artículos:

Cómo hacer un buen trabajo en las pruebas automatizadas, revelar el camino de la práctica de automatización en capas de Alibaba

¿Cómo eligen trabajos los profesionales de pruebas automatizadas? ¿Cuál es el desarrollo profesional futuro?

Los conceptos básicos de las pruebas automatizadas, ¡todo lo que sabe y lo que no sabe está aquí!

Un paquete de tristes tiras picantes para compartir las diez mejores herramientas de prueba automatizadas

¡Acerca de las pruebas de software! Todo lo que quieres saber está aquí, ¡Xiaobai debe verlo!

Lo que necesita saber antes de realizar pruebas automatizadas

10 años de percepciones de ingenieros de pruebas de software para amigos que todavía están confundidos

¿Qué tipo de persona es adecuada para las pruebas de software?

Conocimiento para comprender las pruebas automatizadas de Python (3)

¿Cuál es más adecuado para pruebas automatizadas, Python o Java?

El trabajo diario de los probadores de software

¡Juegue con las pruebas automatizadas de Python + Selenium en 10 minutos y le enseñe un comienzo rápido!

Finalmente: aquí recomiendo un grupo de intercambio de aprendizaje de arquitectura. Número del grupo de aprendizaje de comunicación: 313782132 Se compartirán algunas grabaciones de video grabadas por arquitectos senior: Spring, MyBatis, análisis de código fuente de Netty, principios de alta concurrencia, alto rendimiento, arquitectura distribuida, microservicio, optimización del rendimiento JVM, arquitectura distribuida, etc. Estos se convierten en los sistemas de conocimiento necesarios para los arquitectos.

Supongo que te gusta

Origin blog.csdn.net/weixin_50271247/article/details/108523494
Recomendado
Clasificación