Camino de avance tecnológico de I + D de Android Architects: las tecnologías y habilidades sociales que deben dominarse en diferentes etapas

Prefacio

La I + D móvil está de moda, y cada vez más personas están comenzando a aprender sobre el desarrollo de Android. Sin embargo, muchas personas sienten que es fácil empezar y difícil crecer, están bastante confundidas sobre el futuro, no saben cómo mejorar sus habilidades y qué hay que agregar a la siguiente etapa. El mercado también habla principalmente de gráficos de conocimiento, carece de un sistema y un sentido de ritmo de crecimiento, por lo que compila un camino avanzado para I + D de Android, espero que pueda ser útil para todos.

En este artículo, solo hablamos de tecnología, no de habilidades blandas.

Aquí divido el león de asedio en cuatro etapas: primaria, intermedia, avanzada y senior, y establezco requisitos para I + D y capacidades de diseño, uso de herramientas, principios del sistema y arquitectura.

primario

Mi definición del león de asedio de I + D principal es dominar los conocimientos básicos de Android y poder completar una función de forma independiente. La mayoría de las personas en este nivel pueden alcanzarlo rápidamente leyendo algunos libros de información y luego realizando ejercicios de proyectos.

Las habilidades requeridas son:

1. Comprenda el conocimiento de los cuatro componentes principales de Android y tenga una comprensión profunda del ciclo de vida relacionado; también debe dominar la Aplicación, el Fragmento y la Intención.
2. Comprenda los atributos y el uso del diseño y los controles básicos de Android. Los diseños comunes incluyen LinearLayout \ RelativeLayout \ ConstraintLayout, etc., y los controles incluyen TextView \ ImageView \ RecyclerView \ ScrollView, etc.
3. Tener un conocimiento básico del uso y acceso a los recursos de Android, y comprender los principios de adaptación de Android para diferentes países, idiomas, pantallas y API.
4. Dominar el uso de los servicios y herramientas del sistema Android y tener un conocimiento básico del acceso a la red y las operaciones de la base de datos.
5. Familiarizado con herramientas de I + D, como IDE, simulador, agente de red, registro, etc.

intermedio

Se necesita un poco de esfuerzo para alcanzar el nivel intermedio, y necesita saber más. Puede modelar la biblioteca de código abierto para construir ruedas para la práctica. Los ingenieros intermedios deben dominar el desarrollo de funciones. Las habilidades requeridas son:

1. Familiarizado con los principios básicos de diseño de SOLID y domina 23 modos de diseño.
2. Tener un conocimiento profundo de las características del lenguaje de desarrollo de java / kotlin, como reflexión, proxy dinámico, apt, etc.
3. Tener un conocimiento básico de la arquitectura de Android y un conocimiento profundo de la estructura de apk y los principios de empaquetado.
4. Tener un conocimiento básico de las características de cada versión de Android, como el diseño MD, la administración de permisos, el modo dormido, etc.
5. Familiarizado con varias herramientas de depuración de I + D, como git, gradle, mat, layout inspector, etc.
6. Domine el principio de Handler \ AsyncTask y familiarícese con el desarrollo de subprocesos múltiples.
7. Tener una comprensión preliminar del principio de dibujo de páginas y poder realizar un control personalizado complejo.
8. Ser capaz de dominar el uso de bibliotecas de código abierto, como bibliotecas de imágenes (Glide \ Fresco), bibliotecas de red (Volley \ okhttp \ Retrofit), herramientas (Dagger \ RxJava \ EventBus), etc.
9. Familiarícese con los métodos comunes de optimización de imágenes y evite escribir código con pérdidas de memoria.

avanzado

Si alcanza el nivel intermedio, felicidades, puede manejar la mayoría de las situaciones. Pero si desea ir más allá, debe tener un conocimiento profundo de los principios operativos del sistema Android, de modo que pueda convertirse en un arquitecto en el lado de Android.

1. Comprenda las funciones avanzadas de Java, como JUC, grupo de subprocesos, NIO \ BIO, etc .; domine el conocimiento de la máquina virtual jvm, como el modelo de memoria, el principio GC, el mecanismo de carga de clases, el modelo de subprocesos, etc.
2. Tener un conocimiento profundo del entorno operativo de Android, comprender el mecanismo de la caja de arena de Android, comprender los principios de la comunicación AIDL y Binder, y comprender los principios de inicio de aplicaciones y actividades.
3. Comprender el principio de reparación en caliente y las ventajas y desventajas de las soluciones de los principales fabricantes.
4. Tener un conocimiento profundo de la distribución de eventos de Android, centrándose en el mecanismo de eventos táctiles.
5. Comprensión profunda de los principios de dibujo de Android, comprensión de VSYNC y mecanismos de superficie y principios de ventanas.
6. Comprensión profunda de los principios de animación de Android, incluida la animación de interpolación y la animación de atributos.
7. Tener un conocimiento básico del mecanismo de seguridad de Android y comprender los principios de seguridad de Android.
8. Entender profundamente la idea del paradigma de diseño al final, como mvc \ mvp \ mvvm \ clean-arch, etc.
9. Comprender la evolución de la arquitectura, tener una buena idea de las capas y la división, dominar la modularización, el complemento, la implementación dinámica, etc.
10. Sea sensible a las nuevas tecnologías, comprenda las características dinámicas de la arquitectura de próxima generación, etc.

En este punto, ya está bien versado en el desarrollo de la terminal de Android, capaz de enfrentar todo tipo de situaciones y alcanzar el reino de los colores inmutables antes del deslizamiento de tierra. Si desea seguir adelante, debe atravesar la pila de tecnología y considerar los problemas desde un nivel arquitectónico superior.

Mayor

En el nivel superior, la pila de tecnología ya no es un obstáculo. Capaz de ver problemas desde un nivel superior, comprender el diseño de todo el sistema y existir como arquitecto de sistemas.

1. Comprender las ideas de microservicios y SOA, y tener cierta comprensión del desarrollo de back-end.
2. Comprender las herramientas e ideas de desarrollo de front-end y conocer los marcos de desarrollo como vue react.
3. Comprensión profunda de las tecnologías entre terminales, como phonegap, weex / RN flutter, aplicación rápida de programas pequeños, etc.

para resumir:

Espero que puedan comparar el mapa de conocimientos anterior para verificar las deficiencias de los demás y compensar las omisiones, y seguir avanzando en el camino de la tecnología. Cualquier pregunta y sugerencia son bienvenidas para discutirlas juntos.

Camino del arquitecto de Android

En lo anterior, discutimos los indicadores técnicos duros de convertirse en arquitecto de sistemas. Pero convertirse en un arquitecto calificado requiere no solo competencia en tecnología, sino también más poder blando para discutir cosas dentro y fuera del código.

Antes de hablar de poder blando, analicemos las responsabilidades de los arquitectos. Entienda personalmente que los arquitectos del equipo no solo escriben código, diseñan y optimizan la arquitectura, sino que también necesitan informar la planificación técnica al jefe, predicar al equipo, crear una atmósfera técnica, mejorar el nivel técnico general del equipo, construir la influencia técnica del equipo, y ser responsable de reclutar a más personas. Las personas se unen al equipo y así sucesivamente.

Por lo tanto, un arquitecto calificado necesita al menos las siguientes tres capacidades:

Observación

Para ser un buen arquitecto, uno debe tener habilidades de observación meticulosas y ser bueno para descubrir problemas en el código, puntos que se pueden optimizar y oportunidades futuras. La mayoría de los estudiantes de desarrollo suelen estar ocupados desarrollando varios requisitos y no prestan mucha atención a la arquitectura técnica, que a menudo se corrompe lentamente en la iteración de requisitos.

En muchos casos, somos como ranas en agua tibia y no sentimos los problemas. Por lo tanto, se necesita el rol de arquitecto para mirar la arquitectura desde una perspectiva independiente y encontrar problemas en el código. Qué requisitos se optimizan, qué bibliotecas base se pueden actualizar, dónde existen problemas de rendimiento y qué áreas restringen la eficiencia de I + D. La perspectiva independiente del arquitecto no significa que usted no necesite entender el negocio, al contrario, el arquitecto es el I + D que necesita estar cerca del negocio y entender los entresijos del negocio y los planes de desarrollo futuros. y formular una arquitectura que se adapte al desarrollo empresarial.

También es necesario permanecer sensible a la tecnología, comprender el desarrollo de tecnologías de vanguardia en la comunidad, aprovechar las oportunidades de ellas e implementarlas en investigación y desarrollo para mantener la naturaleza avanzada de la tecnología del equipo.

Capacidad de resumen abstracto

No todos los problemas deben resolverse, no todos los problemas deben resolverse ahora.

Algunas personas a menudo afirman en broma que el arquitecto es un ingeniero de PPT y que el PPT debe ser una habilidad indispensable para el arquitecto. Lo que hay detrás es el pensamiento minucioso del arquitecto. Si un ingeniero solo ve un problema tras otro y se enfoca solo en un punto, entonces nunca será posible convertirse en arquitecto.

Un verdadero arquitecto puede observar y analizar problemas desde el nivel general del sistema, resumir y resumir y generar un ppt . Mire el problema desde un nivel más alto y más lejano, luego desglose el problema capa por capa y resuelva el problema de manera rítmica. Informar el valor del equipo técnico a la cima, sincronizar el desarrollo futuro a la base, publicitar los logros técnicos externamente y crear una sensación de logro técnico internamente.

Habilidades de comunicación

La impresión que dan nuestros programadores al mundo exterior es a menudo introvertida y reticente. De hecho, los programadores son el grupo más aburrido que he visto en mi vida :) ¿Por qué los programadores dejan esta impresión en los demás?

Probablemente porque los programadores son los mejores para tratar con máquinas, y las máquinas son las más lógicas. La lógica inevitablemente devolverá salidas específicas para entradas específicas, dando a las personas una experiencia determinista. Cuando se trata de personas, es necesario tener en cuenta varios factores, como ocasiones, emociones, posiciones, género e incluso políticas raciales, habrá varias situaciones inesperadas.

La codificación es solo una pequeña parte del trabajo, y las otras partes deben completarse en colaboración con varios equipos. PK necesita con el lado comercial, comunicar ideas con el jefe, comunicarse con el equipo sobre la estrategia de implementación, comunicarse con los departamentos fraternos, comunicarse con los clientes, etc. Las buenas habilidades de comunicación son el factor clave para asegurar que la arquitectura sea reconocida y pueda implementarse. La comunicación efectiva con los miembros del equipo, responder preguntas para todos y discutir temas técnicos juntos también son una buena manera de asegurar que el arquitecto esté integrado en el equipo.

para resumir:

Los anteriores son solo algunos aspectos en los que puedo pensar por el momento en mi nivel actual. Comparado con el poder duro, el poder blando suele parecer más ilusorio. Solo resumiendo constantemente, pensando más, comunicándonos más y haciendo más ejercicio podremos mejorar efectivamente el poder blando.

Al final

No hace falta decir que creo que todos tenemos un consenso: no importa cuál sea la industria, la persona más poderosa es definitivamente la persona al final de la pirámide. Por lo tanto, si quieres ser un gran programador, debes ponerte más alto, convertirte en un experto técnico no es una cuestión de la noche a la mañana, requiere precipitación de tiempo y acumulación técnica.

Con respecto a este punto, cuando establecí la dirección de Android en ese momento, comencé a ordenar mi camino de crecimiento, incluido cómo aprender la tecnología de manera sistemática, que se enumeró con gran detalle.

El primero es el mapa mental de aprendizaje de desarrollo de Android súper detallado , porque la imagen es demasiado grande, por lo que solo puse el contenido del directorio secundario, más detallado, puede enviarme un mensaje privado para obtener el código QR de WeChat para ver .

A continuación, ¡necesitamos clasificar el conocimiento y mejorar nuestras reservas! (Recursos de aprendizaje de siete temas de Android Mobile Architect)

  • Habilidades esenciales para arquitectos: genéricos Java en profundidad + anotaciones en lenguaje simple + programación concurrente + transmisión y serialización de datos + principios de la máquina virtual Java + reflexión y carga de clases + proxy dinámico + E / S eficiente

  • IU avanzada de Android y código fuente de FrameWork: promoción de IU avanzada + análisis del kernel de Framework + kernel de componentes de Android + persistencia de datos

  • Ajuste de rendimiento general de 360 °: ideas de diseño y optimización de la calidad del código + optimización del rendimiento del programa + optimización de la eficiencia del desarrollo

  • Interpretación de ideas de diseño de marcos de código abierto: diseño de reparación en caliente + interpretación del marco de complementos + diseño del marco de componentes + marco de carga de imágenes + diseño del marco de acceso a la red + diseño del marco de programación adaptable RXJava + diseño de la arquitectura IOC + componente de arquitectura de Android Jetpack

  • Desarrollo del módulo NDK: sistema de conocimiento básico NDK + procesamiento de imágenes subyacentes + desarrollo de audio y video

  • Mini programa WeChat: Introducción al mini programa + Desarrollo de interfaz de usuario + Operación de API + Acoplamiento de WeChat

  • Desarrollo híbrido y Flutter: Html5 project combat + Flutter advanced

Una vez que se han resuelto los conocimientos, es necesario comprobar los puntos que faltan, por lo que para estos puntos de conocimiento he preparado muchos libros electrónicos y notas a la mano. Estas notas proporcionan un resumen perfecto de cada punto de conocimiento.

Luego aprenda sistemáticamente a través del código fuente

Siempre que sea un programador, ya sea Java o Android, si no lee el código fuente y solo mira la documentación de la API, se quedará en la piel. Esto no es bueno para el establecimiento y la integridad de nuestro sistema de conocimiento y la mejora de la tecnología de combate actual.

Quien realmente puede ejercitar la capacidad es leer el código fuente directamente, no solo leyendo el código fuente de los principales sistemas, sino también incluyendo varias excelentes bibliotecas de código abierto.

"486 páginas de análisis refinado del código fuente relacionado con el desarrollo de Android súper completo"

Prepárese para las preguntas de la entrevista de la gran fábrica para aumentar la tasa de aprobación de la gran fábrica.

Después de medio año, compilé el análisis de preguntas de entrevistas de Android más completo del mercado.

1. Puede examinar directamente los puntos de conocimiento necesarios a través del índice del catálogo para comprobar los puntos que faltan.
2. El número de estrellas de cinco puntas indica la frecuencia de las entrevistas y representa un índice de recomendación importante

"Colección de entrevistas de desarrollo de Android de 379 páginas"

El contenido anterior  se ha incluido en el proyecto de código abierto: [ github ] , puede obtenerlo usted mismo.

Supongo que te gusta

Origin blog.csdn.net/weixin_44339238/article/details/112385034
Recomendado
Clasificación