¿Cómo convertirse en un excelente ingeniero full-stack mediante el autoestudio?
¿Cómo convertirse en un excelente ingeniero full-stack mediante el autoestudio?
Para la mayoría de los graduados en la industria de TI y los recién llegados al mundo laboral. Las preguntas enredadas son cómo elegir una dirección profesional, cómo convertirse en un excelente ingeniero de software y cómo mejorar rápidamente sus habilidades. Hoy, nuestro sitio web chino de php está aquí para hablarle sobre cómo convertirse en un excelente ingeniero full-stack.
¿Qué es un ingeniero full-stack?
El término ingeniero full-stack apareció por primera vez en un artículo del ingeniero de Facebook Calos Bueno - Full Stack (necesidad de eludir el firewall). Define a un ingeniero full-stack como un técnico generalista con un profundo conocimiento de las implicaciones del rendimiento. Desde entonces, el término full stack se ha vuelto popular. He visto ingenieros full stack, diseñadores full stack, operaciones y mantenimiento full stack, especialistas en marketing full stack, etc. En los sitios web de contratación dirigidos a talentos de Internet como "Lagou" y "100Offer", los ingenieros full-stack se han convertido en un puesto de contratación popular y sus niveles salariales también son más altos que los de los puestos de ingeniero de desarrollo general. Entonces, ¿qué es un ingeniero full-stack y cómo deberíamos definirlo?
La Enciclopedia Baidu define a un ingeniero completo de la siguiente manera: "Una persona que domina una variedad de habilidades y puede usar una variedad de habilidades para completar productos de forma independiente". Creo que esta definición no es lo suficientemente completa. Creo que un ingeniero completo debería ser un ingeniero de desarrollo senior, arquitecto y programador con habilidades de desarrollo ágil al mismo tiempo. La comprensión de los ingenieros full-stack sobre el desarrollo de software a menudo ha evolucionado. Han dejado atrás tecnologías específicas y entienden que las actualizaciones tecnológicas son siempre más rápidas que la teoría informática. Por lo tanto, se centran en fortalecer sus habilidades básicas, prestar atención y estar dispuestos a practicar otras. tecnología. Los ingenieros full-stack suelen ser expertos en un área, pero también dominan y utilizan otros lenguajes, herramientas y tecnologías en las situaciones adecuadas.
El valor de los ingenieros full-stack
A medida que pasa el tiempo, el papel y el valor de los ingenieros full-stack se han ido confirmando en cada vez más productos o proyectos. Entonces, echemos un vistazo a lo que significa un ingeniero completo para un individuo o empresa.
Gran mejora en el valor personal y la libertad: he leído algunos artículos que presentan a los ingenieros full-stack, la mayoría de los cuales enfatizaron el valor de los ingenieros full-stack para la empresa y el equipo. Lo que quiero decir es que ningún buen ingeniero full-stack trabaja duro para aprender diversas tecnologías debido al beneficio que traerá a la empresa. Todas las personas que conozco son personas que tienen ingenio, buscan constantemente mejores habilidades y se dedican a fabricar mejores productos. Y cuando se convierta en un verdadero ingeniero completo, sentirá un aumento sin precedentes en el valor personal y la libertad técnica. Imagínate que cuando aparece una buena idea, puedes realizarla solo o liderar un equipo y mejorarla continuamente. ¡Qué emocionante es esto!
Pensamiento global y previsión técnica: debido a su conocimiento de diversos vínculos de desarrollo y campos técnicos, los ingenieros completos a menudo tienen una mejor visión general y previsión técnica, y pueden elegir los correctos en la etapa inicial de la tecnología y controlar bien la dirección general del proyecto. Los proyectos modernos suelen ser muy complejos y los ingenieros completos a menudo pueden aportar garantía técnica y de calidad, convirtiéndose así en una figura clave en el éxito de un proyecto.
Reduzca los costos de comunicación: a menudo escucho a los diseñadores quejarse de que los ingenieros de front-end no pueden restaurar sus diseños al 100%, y los ingenieros de front-end se quejan de que los datos devueltos por los ingenieros de back-end desde la interfaz no se pueden usar directamente. Los ingenieros de back-end también se quejan de que los requisitos planteados por los jefes de producto no se pueden cumplir en absoluto. A medida que aumenta el número de miembros del equipo, los costos de comunicación aumentarán inevitablemente debido a sus diferentes habilidades. Además de poder completar de forma independiente el desarrollo (e incluso el diseño) de front-end y back-end, los ingenieros de pila completa pueden evitar eficazmente riesgos técnicos y filtrar demandas irrazonables si pueden intervenir en las primeras etapas del proyecto, lo que significa significativamente reducir la comunicación debido a diferentes problemas técnicos y reducir significativamente los riesgos del proyecto.
Empresas de nueva creación - Hemos entrado en una era de emprendimiento e innovación entre todas las personas.
Las empresas emergentes también están surgiendo como hongos después de la lluvia. Las empresas de nueva creación a menudo tienen una buena idea, pero a menudo se encuentran con la vergüenza de "simplemente les falta un programador". Lo que quiero decir es que en realidad no les faltan programadores, pero sí un ingeniero completo. Las empresas emergentes suelen tener fondos limitados y un excelente ingeniero completo puede ayudarlas a lanzar sus productos al menor costo y en el menor tiempo. Este es el paso más crítico para que las nuevas empresas sobrevivan, obtengan más inversiones e incluso se conviertan en un "unicornio".
Árbol de habilidades de ingeniero full-stack
Cuando veas esto, definitivamente te preguntarás: ¿qué habilidades se necesitan para convertirte en un ingeniero full-stack? La siguiente imagen proviene de Medium. El autor dividió todos los aspectos involucrados en el desarrollo de software en capas y utilizó las principales tecnologías contenidas en cada capa como componentes para crear este diagrama de tecnología de pila completa.
En la imagen de arriba, podemos ver fácilmente cuán grande es el sistema tecnológico actual. Cada año se agregan nuevas tecnologías a estas capas y las tecnologías existentes se actualizan constantemente. Por lo tanto, es simplemente imposible dominar todas las tecnologías y convertirse en un ingeniero completo no requiere que domines realmente todas las tecnologías. Debes concentrar tu energía en las habilidades de desarrollo clave y algunas habilidades adicionales que debes dominar.
Habilidades clave de desarrollo (habilidades duras):
Git /GitHub: debes dominar cómo usar Git para administrar y compartir tu código. Git figura como la primera habilidad clave porque no es sólo una herramienta de gestión de código, sino también una forma recomendada de trabajar. Le permite desarrollar en cualquier lugar y administrar de manera eficiente proyectos de cualquier tamaño. A través de Git, también puede realizar colaboración distribuida con otros miembros del equipo, lo que mejora enormemente la eficiencia del trabajo. A través de GitHub, también puedes conectarte con todos los desarrolladores del mundo.
Al menos un lenguaje de programación: debe dominar al menos un lenguaje de programación, JAVA, PHP, C#, Python, Ruby, Perl, etc., porque la mayor parte del procesamiento principal de su negocio debe utilizar este idioma Ven y escribe. Debe dominar la sintaxis de este lenguaje y también debe estar muy familiarizado con cómo diseñar, implementar y probar proyectos basados en este lenguaje. Si elige JAVA, entonces necesita dominar el diseño y desarrollo orientado a objetos, la aplicación de patrones de diseño, el desarrollo de varios componentes basados en J2EE, etc.
Utilice marcos de desarrollo y bibliotecas de terceros: los lenguajes de desarrollo populares generalmente van acompañados de excelentes marcos de desarrollo, como Spring de JAVA, MyBatis, Hibernate, Django de Python, thinkphp de PHP, yin, nodeJs Express, etc. en. Estos marcos de desarrollo tienden a seguir algunas de las mejores prácticas en el desarrollo de software y son creados por muy buenos desarrolladores. El uso competente de estos marcos de desarrollo o bibliotecas de terceros puede evitar reinventar la rueda y hacer que su trabajo sea más efectivo con la mitad del esfuerzo. Lo que es más importante es que estos excelentes marcos o bibliotecas de terceros generalmente se mantienen continuamente, lo cual es la garantía más efectiva para la calidad, seguridad y conveniencia de su producto o proyecto.
Tecnología de front-end: la razón por la que la tecnología de front-end está aislada como tecnología clave es que se está volviendo cada vez más importante en el proceso de desarrollo de los proyectos y productos actuales. Además de lograr las funciones requeridas, si un producto es fácil de usar (experiencia de usuario) también se está convirtiendo en un criterio importante para juzgar el éxito de un producto. Y todo esto depende de la implementación de la tecnología front-end. Debe dominar al menos las tecnologías front-end básicas como HTML5, CSS3 y JavaScript, y aprender más sobre marcos front-end o bibliotecas de terceros como JQuery, MENOS. , SASS, AngularJS o REACT.
Base de datos y caché: cualquier producto o proyecto requiere una base de datos para almacenar datos. Como ingeniero full-stack, también necesita dominar al menos una o dos bases de datos y saber cómo interactuar con ellas. Las bases de datos actualmente populares incluyen principalmente MySQL, MongoDB, Redis, Oracle, SQLServer, etc.
MongoDB, como base de datos de documentos, se utiliza cada vez más en productos de Internet. Para proyectos de mayor escala, sigo recomendando utilizar MySQL u Oracle comercial como base de datos de fondo. Las bases de datos en memoria, como Redis, se pueden utilizar para el almacenamiento en caché y mejorar el rendimiento del sistema.
Capacidades de diseño básicas: la mayoría de los artículos o discusiones sobre ingenieros full-stack no enumeran las capacidades de diseño como una habilidad clave para los ingenieros full-stack, pero creo que esta habilidad es muy importante. Me invitaron a evaluar algunos productos desarrollados por los propios ingenieros de software. Estos productos tienen buenas ideas e implementación funcional, pero a primera vista no son buenos productos. Los usuarios no desean usarlos porque los diseños de estos productos son demasiado malos. y, a menudo, esos desarrolladores desconocen por completo la existencia de problemas, como colores inconsistentes, diseño desordenado, íconos inapropiados, etc. Las habilidades de diseño básicas que sugiero no requieren que usted sea capaz de hacer dibujos asombrosos y crear efectos visuales maravillosos como un diseñador profesional, pero necesita dominar los principios de diseño de interfaz de usuario más básicos, como la combinación de colores, el diseño básico y tener buenos Habilidades estéticas y algunas habilidades básicas de diseño de UI, para que los productos que fabriques no sean tan malos.
Después de dominar estas habilidades básicas, podrá aprender otras tecnologías según sus intereses y dirección de desarrollo. Por ejemplo, si está interesado en el procesamiento de datos, puede aprender tecnología de big data. Si está más interesado en Internet móvil, puede aprender Swift y desarrollar aplicaciones para iOS. El conocimiento siempre está conectado y, una vez que tenga una buena base técnica, será muy fácil aprender otros conocimientos.
Habilidades adicionales (habilidades sociales):
Comunicación: a menos que esté trabajando en un proyecto personal, para proyectos más grandes siempre necesitará comunicarse con colegas, partes interesadas o comunicarse con los clientes. La comunicación exitosa es a menudo el primer paso para obtener necesidades efectivas y generar confianza en el equipo. Durante el proyecto, es necesario utilizar una comunicación eficaz para determinar el plan, eliminar malentendidos y trabajar junto con los miembros del proyecto para avanzar. Las buenas habilidades de comunicación te harán más influyente en el equipo y recibirás más respeto y atención.
Capacidad para resolver problemas: un ingeniero completo es, ante todo, un ingeniero. Debe dominar los métodos de ingeniería para resolver diversos problemas encontrados. Casi todos los aspectos más destacados de mi carrera están relacionados con la resolución de problemas, desde proporcionar la solución arquitectónica para todo el proyecto hasta resolver problemas de producción lo más rápido posible. En realidad, hay muchas formas de mejorar las habilidades para resolver problemas, pero ninguna de ellas es más efectiva que la práctica. Los excelentes ingenieros que he visto a menudo son capaces de proporcionar la solución correcta en el menor tiempo basándose en la intuición, pero lo que quizás no veas es que detrás de esto hay experiencia acumulada a través de mucha práctica.
Gestión del tiempo: como ingeniero completo, es posible que se le asigne asumir diferentes roles en diferentes proyectos al mismo tiempo. Debe asignar su tiempo de manera razonable para garantizar que todo el trabajo se entregue a tiempo. Además, en tu tiempo libre, también necesitas dedicar tiempo a leer y aprender, y es posible que también tengas tu propio proyecto paralelo. Por lo tanto, es importante asignar tiempo de manera razonable y planificar algunas tareas clave. Es posible que sientas algo de presión, pero estimulará tu creatividad y hará que todo fluya sin problemas.
Curiosidad: sentir curiosidad por cualquier trabajo y estar dispuesto a aprender y mejorar continuamente son las características comunes de esos excelentes ingenieros. El campo del desarrollo de software reúne a las personas más inteligentes del mundo, y varios tipos de tecnologías, productos y marcos cambian cada día que pasa y surgen sin cesar. Los excelentes ingenieros full-stack necesitan aprender continuamente para captar estos cambios y mantenerse al día con el desarrollo del campo de la informática. La gente me pregunta a menudo si sería agotador seguir aprendiendo, ya que siempre surgen cosas nuevas en la industria informática. Lo que quiero decir es que para las personas que hacen del aprendizaje continuo un hábito de vida, aprender cosas nuevas no se convertirá en una carga, sino en un placer.
Liderazgo: a los excelentes ingenieros full-stack a menudo se les asigna el rol de líder técnico o incluso de gerente de proyecto.
Ser gerente no se trata de dominar a los demás ni de hacer que otros hagan cosas por usted. Los gerentes deben comprender las fortalezas y debilidades de los miembros de su equipo y saber cómo maximizar el rendimiento del equipo con una actitud de servicio. He visto muy buenos ingenieros a quienes les repugnaba que les pidieran que dirigieran un equipo y a menudo preferían trabajar solos. Pero quiero decir que convertirse en gerente lo hará más sabio, más confiable y digno de confianza, y también traerá grandes beneficios para su futura carrera. Así que cuando llegue una oportunidad, acéptala como un desafío y no la rechaces.
Al reclutar, los líderes técnicos experimentados a menudo examinan las habilidades técnicas de los candidatos y las habilidades adicionales mencionadas anteriormente al mismo tiempo. Para la contratación de programadores junior, esas habilidades adicionales suelen ser más preferidas por las empresas de tecnología excelentes. valorado. Las habilidades de desarrollo son su poder duro, mientras que las habilidades adicionales pueden considerarse su poder blando. Sólo poseyendo ambas habilidades podrá convertirse en un excelente ingeniero completo.
Un excelente ingeniero full-stack necesita salir
Un excelente ingeniero full-stack no debe limitarse a su propio trabajo, debe salir, estar expuesto a diferentes tecnologías y comparte su experiencia y experiencia, conoce más amigos. Estas son algunas de mis prácticas.
Participe en conferencias de tecnología: sitios web como InfoQ, CSDN, GITC, Youshe y TED celebran periódicamente varias conferencias de tecnología. En estas conferencias, no sólo podrá escuchar las mejores prácticas técnicas en sus respectivos campos presentadas por expertos técnicos, sino que también podrá conocer a muchos amigos en la industria. Esto le resultará muy útil para ampliar sus ideas y ampliar su círculo social técnico. Por lo tanto, si la empresa no organiza su asistencia a estas conferencias tecnológicas, compre sus propias entradas para asistir como una inversión en usted mismo.
Hacer discursos públicos: un ingeniero full-stack no necesita ser un orador público, pero como miembro central del equipo, debe dar discursos sobre tecnología, gestión y otros aspectos dentro del equipo. Si es un experto técnico y está dispuesto a compartir, también puede intentar grabar cursos personales (video o audio) y compartir sus habilidades y conocimientos en MOOC, NetEase Classroom, Youku o varios medios como Litchi, Himalaya, etc. No quieres probarlo porque no eres un experto. Créeme, el contenido que crees con cuidado será reconocido por todos y ganará una gran cantidad de fanáticos.
Blog personal - Progresa un poco cada día y darás un salto cualitativo en un año. Los excelentes ingenieros full-stack saben cómo acumular conocimientos, y los blogs de tecnología son una buena manera de registrar sus prácticas y pensamientos habituales y agregar etiquetas para facilitar revisiones futuras. Lo más interesante es que cuando continúes grabando y actualizando tu blog, los programadores de todo el mundo también te conocerán a través de tu blog.
Participe en actividades fuera de línea: a diferencia del pasado, cuando los programadores siempre se quedaban en casa, los programadores jóvenes de hoy están más dispuestos a compartir y comunicarse. Muchos sitios web también organizarán actividades fuera de línea sobre diferentes temas técnicos. En estas actividades, puede escuchar el intercambio de algunos expertos técnicos y también puede encontrar muchas personas que sienten tanta pasión por la tecnología como usted. Muchos de los miembros del equipo en los proyectos de código abierto en los que estoy trabajando actualmente se conocieron a través de estas actividades fuera de línea.
Ser un ingeniero completo no se logra de la noche a la mañana. Es necesario establecer una base técnica sólida, fortalecer las habilidades básicas y seguir aprendiendo. Creo que algún día serás como yo y sentirás la alegría de utilizar libremente la tecnología para desarrollar productos excelentes