¿Qué tipo de programador se necesita para vehículos de nueva energía?
Todos sabemos que la capacidad de aprendizaje es importante, entonces, ¿de dónde viene la capacidad de aprendizaje? Además de leer libros y escuchar conferencias, ¿cómo aprender y crecer en la práctica?
Weibo me dio una idea aproximada antes. ¿Qué es la capacidad? Actitud ante los problemas, e ideas y métodos para afrontarlos.
Hablemos primero de actitud.
Ocasionalmente, su servidor encontrará un error 501, que puede no ser alto (Zhihu también ha experimentado esto muchas veces). Muchos programadores, sí, muchos, fingen no verlo, no les importa o culpan a problemas de personalidad. Esta es una cuestión de actitud.
Más tarde, debido a una gran carga u otras razones, de repente ocurrieron errores 501 con frecuencia. En lugar de investigar las razones subyacentes, ponemos varias excusas, como un mal proveedor de servicios IDC, una mala marca de servidor, un mal sistema operativo, una mala base de datos, una mala CDN, una mala condición de la red, un mal servidor web o incluso contactarnos directamente, dijo el jefe. ¡somos DDOS! (Sí, ayudé a su jefe a encontrar varios expertos en seguridad para consultar y finalmente descubrí que no se trataba de DDOS en absoluto, pero los programadores eran terribles).
Esta es la actitud, impactante, si se Puede comprender el problema. Sea sensible y sepa que es lo suficientemente sensible ante cualquier pequeño problema o problema, y tendrá la base para un crecimiento rápido. La sensibilidad ante el tema es importante. Muchos errores no fatales en el rendimiento o la lógica del programa no se pueden descubrir si no eres lo suficientemente inteligente, pero una vez que ingresas a una escena especial, estallarán repentinamente. Si fueras más exigente, reducirías el riesgo de esta crisis.
La segunda actitud es la actitud de resolución de problemas. Algunas personas confían en que sus soluciones son infalibles, pero otras encontrarán otro camino. Por ejemplo, si dices que mi servidor necesita refuerzo de seguridad, hay que hacerlo de forma correcta y lo más rigurosa y completa posible, pero ¿es necesario cifrar la contraseña cuando la guardas en tu base de datos? Y agregar sal al azar es solo para evitar que las personas tomen la biblioteca en caso de que haya lagunas. El espectáculo también. Algunos demonios de servidor escritos en el pasado terminarían inexplicablemente si hubiera errores. Por supuesto, este error debe localizarse y corregirse, pero al mismo tiempo, se debe escribir un cron para verificar el estado de este proceso demonio, y se reanudará automáticamente una vez finalizado. Esta es una preparación de segunda mano. Incluso si no quieres ejecutarlo, aún tienes que prepararte. Preparar preguntas con dos o incluso tres manos es también una cualidad clave de los buenos programadores y arquitectos.
La tercera actitud se basa en la comunicación y la comprensión. Si un producto u operación presenta una demanda poco confiable, una respuesta de una sola frase es ciertamente interesante y prestigiosa. Sin embargo, ¿ha comunicado y analizado cuidadosamente en qué necesidades reales se basa esta demanda? ¿Existe una forma más razonable de lograr esta demanda real? "Esto no se puede hacer, el coste de realización es demasiado alto" no es la actitud comunicativa correcta. Además, los mejores productos a menudo logran cosas que la gente originalmente pensaba que eran imposibles de lograr.
Con esta actitud, hay una base para el progreso continuo. Aquí hay algunas ideas y métodos.
Un buen programador y un programador mediocre no se pueden distinguir entre sí si sólo se fijan en la velocidad de codificación. Tal vez todos puedan escribir muchas líneas de código al día, pero después de encontrar un problema, habrá una gran diferencia en la eficiencia de resolución de un programador mediocre y un programador excelente. La llamada eficiencia de la solución no es más que analizar, posicionar y pensar en errores.
El más básico es mirar los registros de ejecución, varios registros, registros del servidor web, registros de bases de datos, registros de consultas lentas, registros binlog, registros de errores de php, etc. Hay muchas personas en Internet que hacen conjeturas descabelladas y ni siquiera leen los registros cuando algo sale mal. Hay muchas personas que leen los registros de forma poco cuidadosa y de forma incompleta. Puedes estudiar el registro con atención, ha superado el de muchas personas.
2. Pruebas de módulos y análisis de puntos de interrupción. Un mal hábito de los programadores es escribir mucho código y luego ejecutarlo. No saben cómo escribir módulo tras módulo para realizar pruebas. Si algo sale mal, no saben cómo establecer puntos de interrupción, reducir el alcance y analizarlo paso a paso. El análisis del punto de interrupción es muy simple. Inserte varias salidas intermedias a lo largo del código para observar qué enlace tiene el problema u observe la sobrecarga del sistema de cada enlace, lo cual es muy importante para la depuración y optimización del rendimiento. Los expertos probablemente piensen que esto es algo del ABC, pero la mayoría de los programadores que he conocido no tienen este hábito.
3. Comprender y buscar información sobre errores Hay una variedad de información técnica rica y preguntas y respuestas técnicas en los motores de búsqueda.
Los mensajes de error y los mensajes de error que encuentre generalmente se pueden encontrar en línea. Por supuesto, después de buscar, debes pensar detenidamente en tu situación y comprenderla al dedillo, en lugar de tratarla como a un gato. De lo contrario, puede que tengas suerte esta vez pero no sepas qué pasó la próxima vez.
En cuarto lugar, resuma y resuma constantemente, sea bueno resumiendo y ordenando un problema, un tipo de problema y diferentes tipos de problemas, y reflexione constantemente sobre sus propios problemas. Incluso si vuelve a mirar el código libre de errores después de un tiempo, todavía encontrará muchas ideas incorrectas e irrazonables, así como muchos puntos de optimización. Si cree que su código siempre es excelente e impecable, entonces está estancado y no progresa.
En cuanto a inducción y resumen, déjame contarte un caso.
Antes teníamos un sistema con un número muy elevado de solicitudes y una carga muy elevada, manejado por un buen responsable técnico. Enumeró varios planes de actualización, todos los cuales fueron confiables y se implementaron con buenos resultados. Luego, cuando hicimos un seguimiento del informe, dijo que había realizado varias mejoras y que el efecto general era bueno, y luego lo critiqué.
¿Qué critiqué? Realiza las actualizaciones juntos y luego observa los efectos juntos, por lo que no tiene ningún dato sobre el efecto real de cada solución y qué tan útil es para las actualizaciones. Por lo tanto, desconoce el valor y la importancia de cada plan de actualización específico. Resolviste el problema correctamente, pero no lo resumiste cuidadosamente. Tus ganancias son limitadas. No se puede decir que esté mal actualizar juntos, pero la evaluación del efecto debe realizarse por separado. Estos datos son muy valiosos. La acumulación de conocimiento no es algo que se procesa, sino algo que se ordena.
Probablemente sea eso.
Una última vez.
¿Qué es la capacidad?
Actitud ante los problemas
Cosas y métodos para afrontar los problemas
Esto es habilidad
Tantos me gusta, gracias, lo haré agregue algunos más La idea es un desarrollo específico de los métodos anteriores.
Suplemento 1: Sé bueno haciendo preguntas. La respuesta que puedas obtener depende de la pregunta que hagas.
Cuando tengas una pregunta, debes saber dónde preguntar y qué preguntar.
Una de mis preguntas habituales en los exámenes es esta.
Actualmente la base de datos se encuentra cerrada. Soy camarero. No sé por qué. Eres un excelente analista. Ahora déjame responder. Me haces una pregunta, responderé un indicador y luego veré si puedes localizar el problema. (Por supuesto, responderé todos los indicadores de datos basándose en preguntas hipotéticas). Por ejemplo, me pregunta cuántas conexiones de bases de datos hay, cuánta presión de E/S del sistema hay o por qué el registro de consultas es lento, etc. Las personas que son buenas para hacer preguntas pueden obtener respuestas rápidamente, mientras que las personas que no son buenas para hacer preguntas adivinarán un montón de posibilidades y finalmente no obtendrán nada.
Existe un caso real e interesante. Hay una empresa hermana (la noticia salió hace algún tiempo, se vendió por unos mil millones de dólares). Al principio, la base de datos del servidor no era lo suficientemente potente y habría algunos problemas al cargar. Por favor déjame sentir tu pulso. Cuando miré el servidor Windows y el servidor SQL (no adivinen, fue hace unos años, debería cambiarse ahora), dije que no sabía cómo hacerlo, y luego la gente se entusiasmó tanto y dijo: era un experto. No tuve más remedio que hacer de tripas corazón y ni siquiera sabía cómo realizar las operaciones básicas. Simplemente me senté allí y hice preguntas. Al principio dijeron que no era así. Yo digo que no deberías sacar conclusiones precipitadas a ciegas. Si sabes la conclusión, no me preguntes. Preguntaré sobre qué indicadores y registros estoy preguntando y ellos verificarán los datos en el acto. Haré que uno de ellos me lo muestre, lo revise y le pediré a uno de sus ingenieros. Resultó ser completamente diferente a su idea original. De hecho, la clave es hacer preguntas. En primer lugar, no hicieron las preguntas correctas. Haga las preguntas correctas y rápidamente descubrirán por sí solos el motivo.
Suplemento 2: Ser bueno a la hora de definir el alcance y acotar el alcance del problema.
El análisis de punto de interrupción mencionado anteriormente es un método de análisis muy común, pero en muchos escenarios, ni siquiera sabes qué programa tiene el problema. Ser bueno para definir el alcance del problema también es una especie de. Capacidad de resumen y clasificación.
Una vez hice una prueba clásica en un grupo técnico. ¿Todavía recuerdas una pregunta de entrevista clásica mencionada en Weibo? "Qué sucede entre ingresar la URL en el navegador y abrir la página web" es un tema cognitivo integral clásico. Realice una prueba de escenario más práctica basada en este tema (de hecho, el 90% de los webmasters y operadores de juegos se han encontrado con este escenario). "Actualmente hay usuarios reportando sitios web o tarjetas de juego. ¿Cómo analizar los motivos y pasos prioritarios actuales?".
Como resultado, en este grupo, sólo mi aprendiz (a quien enseñé en 2009) dio la respuesta completamente correcta. El primer paso en la priorización es observar la cantidad de personas en línea y la cantidad actual de visitas, comparar el historial, obtener el impacto actual del problema, determinar las prioridades posteriores y limitar el alcance del análisis. (Esta es una cuestión de conciencia) La idea del análisis se divide en tres partes: front-end, capa de red y servidor. Por supuesto, estas tres partes pueden entrar en muchos detalles, pero al menos primero podemos dividir el problema en tres partes y luego eliminar rápidamente algunas de ellas basándose en algunos métodos de análisis obvios, y luego refinar gradualmente el problema, mientras que la mayoría La gente simplemente piensa desde una parte y habla de muchos detalles locales. No existe un plan completo, por lo que esta es la brecha.
Piensa en esto primero: tos, tos.
Reimpreso de Zhihu Cao Zheng.