¿Cómo se convierten los programadores en desarrolladores independientes?
Desarrolladores generales
Desarrolladores calificados, ingenieros de desarrollo senior y líderes de equipos técnicos
p>Experto técnico, arquitecto, gerente de primera línea
Científico, arquitecto jefe (senior), jefe del departamento de I + D
En el artículo de hoy, discutiremos el desarrollo general Cómo las personas se convierten en desarrolladores cualificados.
Primero definamos el nivel de habilidad que un desarrollador común debe alcanzar y luego introduzcamos qué debe mejorar antes de poder pasar a la siguiente etapa.
El nivel de capacidad de los desarrolladores comunes
Veamos una imagen que menciono a menudo: una imagen de la etapa de crecimiento de la tecnología:
Los desarrolladores comunes están en el tercer etapa Una etapa de crecimiento: la mejora de habilidades especiales.
La etapa de mejora de habilidades especiales es la etapa primaria. Para hacer las cosas bien, primero debes tener algunas habilidades básicas. Por ejemplo, un lenguaje de programación (Java/C++/Python/JavaScript, etc.), un IDE (Visual Studio/Qt Creator/Android Studio/Eclipse/web storm, etc.). ) y un marco tecnológico (Netty/Qt/SSH/MyBatis/AngularJS, etc.). ).
Lo más importante en esta etapa es mejorar tus habilidades especiales para que puedas conseguir rápidamente cosas que otros te asignen y demostrar tu valor.
En esta etapa se deben cumplir al menos los siguientes estándares:
Ser capaz de comprender y completar tareas de hoja descompuestas por otros.
Capaz de completar de forma independiente el desarrollo de un módulo funcional.
Tomemos como ejemplo a los desarrolladores front-end. En esta etapa, debe poder convertir el prototipo de página en la interfaz de usuario en una página web real que pueda ejecutarse y manipularse. Por ejemplo, la página de inicio de sesión, como la página de visualización de detalles del producto, debe poder realizar saltos visuales de página y lógica empresarial.
Tomemos como ejemplo a los desarrolladores de aplicaciones de Android. En esta etapa, debe poder manejar funciones como el inicio de sesión y el pago. Tomemos como ejemplo la función de inicio de sesión de la aplicación. Debe poder utilizar diseños y componentes específicos para implementar una interfaz de inicio de sesión adaptable, y también debe poder aprender a utilizar SDK de cuentas de terceros, como WeChat y Weibo, para implementar el inicio de sesión de cuentas de terceros.
Puede resultarle difícil diseñar un conjunto completo de funciones de inicio de sesión (incluido el cifrado de contraseña, el inicio de sesión único, el uso de cookies, el código de verificación, la recuperación de contraseña, el inicio de sesión de terceros, la sincronización multiterminal, autenticación de roles, almacenamiento de datos de usuario, etc.), pero cuando un desarrollador capacitado o un desarrollador senior completa el diseño y le asigna una pequeña función, usted debería poder comprender el diseño e implementarlo, y poder integrarlo con todo el sistema de inicio de sesión. y trabajar normalmente.
Cuando puedas manejar estas cosas, tu nivel de habilidad específico será al menos este:
Construye inteligentemente el entorno de desarrollo y prueba requerido.
Estar familiarizado con la sintaxis básica de los lenguajes de programación, tener un mapa de conocimiento del lenguaje, estar familiarizado con las funciones básicas del lenguaje en sí y comprender las funciones avanzadas del lenguaje.
Se puede llamar a la API del marco tecnológico existente para implementar funciones específicas.
Puedes elegir el grupo apropiado entre varios grupos de API que implementan la misma funcionalidad.
Ser capaz de utilizar hábilmente el entorno de desarrollo y diversas herramientas auxiliares para la depuración.
Puede resolver errores de software que son fáciles de reproducir y tienen una lógica simple.
Poder aprender de forma independiente la API básica de un nuevo marco y completar la implementación básica de una función consultando la DEMO.
Mi resumen puede estar incompleto o tener errores, corríjalo o agréguelo en el área de mensajes.
Pienso en un ejemplo a mi alrededor que coincide con el tema que estamos tratando.
Una vez estaba charlando con mi amigo G. Me dijo que X, un programador que realizaba desarrollo front-end en su departamento, había estado usando jQuery para implementar varias páginas. El código era redundante y la estructura estaba desordenada. . Después de que salió Vue.js, G quería usarlo en la nueva versión, por lo que hizo arreglos para que X aprendiera Vue.js y le pidió que consultara las funciones y el diseño de una o dos páginas de los productos de la compañía, simplificara el diseñe y utilice la función de solicitud de datos asincrónica para crear dos páginas. Observe el efecto.
Como resultado, una semana después, solo puede codificar e implementar funciones de segmentación específicas bajo la guía y disposición de otros.
Si desea avanzar, primero debe alcanzar el nivel descrito en la lista anterior (ese es el requisito básico) y luego estudiar y mejorar de manera específica de acuerdo con los requisitos de capacidad de los desarrolladores capacitados. y entrar de manera constante en la siguiente etapa.
La diferencia clave entre ordinario y experto.
En comparación con el gráfico de la etapa de crecimiento tecnológico anterior, los desarrolladores capacitados se encuentran en la etapa intermedia y tienen su propio sistema de habilidades.
Para entender el concepto de tener tu propio sistema de habilidades, veamos primero dos conjuntos de conceptos:
Conocimiento, sistema de conocimientos
Habilidades y habilidad sistema
p>En pocas palabras, el conocimiento es información que puede desencadenar cambios, y las habilidades son una combinación de una serie de pensamientos y acciones que utilizan el conocimiento para resolver problemas. Pero no es fácil de entender. Tomemos un ejemplo del campo del desarrollo de software. Las funciones virtuales en C++ son un punto de conocimiento. Es una técnica para utilizar las características de funciones virtuales para definir interfaces de módulos e implementar la carga dinámica de módulos.
A continuación, para facilitar la escritura, ya no distingo entre conocimiento y habilidades, sino que equiparo directamente conocimiento con habilidades, e incluso uso la palabra conocimiento para reemplazar habilidades. Distinga según el contexto al leer.
La relación entre conocimiento y sistema de conocimiento, habilidades y sistema de habilidades es como la relación entre árboles y bosque, como la relación entre el cuchillo, las tijeras, el destornillador y la navaja suiza sobre la navaja suiza.
Por ejemplo, deberíamos poder entender qué es un "sistema".
El llamado sistema de conocimiento es una combinación de varios conocimientos interrelacionados que pueden usarse para resolver problemas en escenarios específicos.
Bien, ahora es mucho más fácil mirar hacia atrás y ver la diferencia entre los desarrolladores comunes y los desarrolladores expertos.
Los desarrolladores comunes tienen varios conocimientos discretos porque continúan completando tareas, continúan trabajando en proyectos y están expuestos y utilizan varios "puntos de conocimiento", pero este conocimiento rara vez está relacionado con ese conocimiento. El conocimiento que posee está disperso, como se muestra en la siguiente figura:
Cuando sus puntos de conocimiento no están relacionados, le resulta difícil pensar sistemáticamente y obtener soluciones cuando encuentra problemas.
Los desarrolladores expertos han pasado por el proceso de clasificación e integración de puntos de conocimiento y han conectado puntos de conocimiento dispersos alrededor de un escenario de aplicación para formar un sistema de conocimiento. Como en la imagen a continuación:
Cuando tiene un sistema de conocimiento, cuando encuentra problemas relacionados con los escenarios correspondientes a su sistema de conocimiento, puede encontrar rápidamente el conocimiento relevante, analizar el problema sistemáticamente y finalmente resolverlo. problema.
Verá, la existencia de un sistema de conocimiento conduce a una diferencia muy importante entre los desarrolladores capacitados y los desarrolladores comunes: los desarrolladores capacitados pueden ser responsables de forma independiente del diseño y desarrollo de un módulo o subsistema, y tienen la capacidad Para analizar y resolver problemas, la capacidad de descomponer capacidades y tareas puede asignar tareas a desarrolladores comunes.
Dirección de formación avanzada
Bueno, desde una perspectiva técnica, la diferencia entre desarrolladores comunes y desarrolladores calificados es que el conocimiento de los desarrolladores comunes no es sistemático, mientras que el conocimiento de los desarrolladores calificados sí lo es. No sistemático. Construyó un sistema de conocimiento relacionado con escenarios de aplicación.
De esta manera, si los desarrolladores comunes y corrientes quieren avanzar, la dirección es clara: construir su propio sistema de conocimiento.
Entonces, ¿cómo construir un sistema de conocimiento? Primero consulte mi otro artículo: Cree un gráfico de conocimiento para hacerse más valioso. Si tengo la oportunidad en el futuro, reconstruiré un nuevo artículo y hablaré sobre el tema de la construcción de un sistema de conocimiento.