Ayuda: ¿Debería aprender a programar?
¡Cualidades que deben poseer los programadores!
Programador es un trabajo técnico que juega un papel muy importante en el desarrollo de TI, desde el establecimiento de protocolos de comunicación de hardware subyacentes, hasta el procesamiento de la capa de transmisión de datos, la construcción de sistemas operativos y bases de datos. plataformas Desde la construcción de varias plataformas de marketing de datos en la capa de aplicación hasta la construcción de varias plataformas de marketing de datos, los programadores desempeñan un papel fundamental en ello y han hecho enormes contribuciones al desarrollo de la industria de TI.
Hay muchas personas en China que dominan la codificación, pero hay muchos malentendidos en la industria del software de China, especialmente en el desarrollo de aplicaciones de red, es difícil formar fuerzas de desarrollo de software y capacidades de productos a gran escala. No sólo está muy por detrás de Estados Unidos, en comparación con la India, sino que es bastante inferior. Estos problemas no radican en el coeficiente intelectual y el arduo trabajo de los programadores chinos, ni en el nivel de inversión estatal y privada en el desarrollo, pero en gran medida existen algunos malentendidos ideológicos sobre la tecnología, el desarrollo de programas y el diseño de proyectos. han llevado a la industria del software a una capacidad de producción insuficiente y a la falta de capacidades de desarrollo de sistemas de reutilización a gran escala y a gran escala. Se puede decir que cambiar los malentendidos es un paso importante para resolver las limitaciones causadas por el modelo de taller pequeño y el modelo de héroe individual. la industria del software.
Hay muchos niños en China, tienen 18,9 o 21,2 años y han escrito mucho código a través del autoestudio. Algunos de sus códigos están muy bien escritos y algunos de los detalles técnicos. Son bastante sobresalientes y muy interesantes. Tienen espíritu de investigación, pero están influenciados por algunos conocimientos y opiniones equivocados, y carecen de una comprensión general del sistema y del programa. Estas personas, dijo muy bien un amigo en línea, en realidad lo son. Solo algunos fanáticos de la codificación, y no están calificados para ser llamados programadores, pero hasta donde yo sé, muchos CTO de pequeñas empresas de Internet son fanáticos de la codificación. Ganan salarios aterradores y trabajan en proyectos aterradores, y el final del proyecto es. suele dar miedo.
Cualidades básicas de un programador:
Las cualidades que debe poseer un programador verdaderamente calificado, o un programador que realmente pueda completar algún trabajo de código.
1: Espíritu de equipo y capacidad de colaboración
Tomar esto como una cualidad básica no deja de ser importante, al contrario, es lo más básico e importante que deben tener los programadores. base para establecerse y establecer una vida. Cualquiera que llame solitarios a los programadores de alto nivel está diciendo tonterías. El poder de cualquier individuo es limitado. Incluso un genio como Linus necesita formar un equipo fuerte para crear milagros. el espíritu de colaboración entre los maestros. Los Llaneros Solitarios pueden ganar dinero con un pequeño software y una pequeña fortuna, pero una vez que ingresan a los equipos de I + D de algunos sistemas grandes y entran en tareas de comercialización y desarrollo de productos, las personas que carecen de esta cualidad quedan completamente descalificadas.
2: Hábitos de documentación
Cualquiera que diga que los programadores de alto nivel nunca escriben documentos es definitivamente un niño ingenuo. La buena documentación es un vínculo muy importante en el proceso formal de investigación y desarrollo. Como programador de código, es normal dedicar el 30% de su tiempo de trabajo a escribir documentación técnica, pero como programador senior y analista de sistemas, esta proporción es mucho mayor. Sin documentación, un sistema de software carece de vitalidad y encontrará grandes problemas en futuras soluciones de problemas, actualizaciones y reutilización de módulos.
3: Hábitos de escritura de código estandarizados y estandarizados
Como las reglas de algunas empresas de software extranjeras conocidas, la denominación variable del código, el comentario formato dentro del código, e incluso La longitud de la sangría de las líneas anidadas y el número de líneas en blanco entre funciones están claramente definidos. Los buenos hábitos de escritura no solo ayudan con el trasplante de código y la corrección de errores, sino que también facilitan la colaboración entre diferentes personal técnico. Algunos fanáticos de la codificación afirman que nadie más puede entender el código escrito por programadores de alto nivel. Este tipo de clamor solo demuestra que ellos mismos no son dignos de llamarse programadores. El código tiene buena legibilidad, lo cual es un requisito de calidad básico para los programadores. Si observamos toda la construcción de Linux, sin hábitos de codificación estandarizados y estandarizados, la colaboración global en I + D es absolutamente inimaginable.
4: Capacidad de comprensión de requisitos
Los programadores necesitan comprender los requisitos de un módulo. Muchos niños tienden a centrarse solo en un requisito funcional cuando escriben programas. Ponen indicadores de rendimiento. Todo se reduce al hardware, el sistema operativo y el entorno de desarrollo, mientras ignoran las consideraciones de rendimiento del propio código. Alguien dijo una vez que escribir un programa de intercambio publicitario es muy simple. Millones o incluso decenas de millones de visitas. ¿Cómo lograr los indicadores de rendimiento? Para un programador así, si le da el sistema de DeepBlue, no podrá lograr las capacidades de acceso paralelo de Taichi Chain. Entre los indicadores de requisitos de rendimiento, la estabilidad, las capacidades de soporte de acceso y la seguridad son importantes. Como programador, debe evaluar el entorno en el que operará el módulo en el sistema, la presión de carga a la que estará sujeto y diversos potenciales. peligros y posibilidades de ataques maliciosos. En este sentido, un programador maduro necesita al menos 2 o 3 años de experiencia en desarrollo y seguimiento de proyectos para poder adquirir experiencia.
5: Reutilizabilidad, capacidad de pensamiento modular
A menudo se escucha que algunos programadores tienen este tipo de quejas después de escribir programas durante varios años. Un trabajador calificado tiene que escribir código sin ideas nuevas todos los días. Este es en realidad el mayor desperdicio de talentos de software chinos. Algunas tareas repetitivas se han convertido en el trabajo principal de los programadores calificados, y en realidad son completamente evitables.
El diseño de reutilización y el pensamiento modular requieren que los programadores piensen más al completar cualquier módulo funcional o función, y no se limiten a simplemente completar la tarea actual. si el módulo puede existir sin este sistema y si se puede hacer referencia a él directamente en otros sistemas y entornos de aplicaciones simplemente modificando los parámetros. Esto puede evitar en gran medida el trabajo de desarrollo repetitivo si las unidades de investigación y desarrollo de software y los grupos de trabajo pueden tener en cuenta estos problemas. En cada proceso de desarrollo, los programadores no perderán demasiado tiempo en trabajos repetitivos y tendrán más tiempo y energía para dedicar al trabajo de código innovador.
Algunos buenos códigos de módulos de programas, incluso si fueron escritos en la década de 1970, son muy adecuados cuando se colocan en algunos sistemas como módulos funcionales. Pero ahora creo que lo sorprendente es que. Muchas pequeñas empresas suelen reescribir el código completo tan pronto como se actualiza o mejora su software, y la mayor parte del trabajo repetitivo es una pérdida innecesaria de tiempo y energía.
6: Hábitos de prueba
En cuanto a cierto desarrollo comercial y formal, los ingenieros de pruebas a tiempo completo son indispensables, pero eso no significa que haya programadores. no es necesario realizar autopruebas si cuentan con ingenieros de pruebas a tiempo completo como proyecto, desarrollo de software, una característica muy importante es que cuanto antes se descubra el problema, menor será el costo de resolverlo. fragmento de código y cada paso Una vez completadas las pruebas cuidadosas de los submódulos, se pueden descubrir y resolver algunos problemas potenciales lo antes posible, lo que tendrá la mayor garantía para la eficiencia y confiabilidad de la construcción general del sistema.
El trabajo de prueba en realidad necesita considerar dos aspectos. Por un lado, es la prueba de llamadas normales, que consiste en ver si el programa puede completar funciones básicas en llamadas normales. Esta es la tarea de prueba más básica. Desafortunadamente, en muchas empresas se ha convertido en la única tarea de prueba, pero en realidad está lejos de ser la prueba de llamadas anormales, como las pruebas de estabilidad bajo cargas de alta presión. y posibles entradas anormales del usuario, pruebas del impacto del módulo en caso de falla parcial del sistema general, pruebas de la estabilidad del módulo cuando solicitudes anormales frecuentes bloquean recursos, etc. Por supuesto, los programadores no necesitan realizar pruebas tan completas en cada parte de su código, pero los programadores deben comprender claramente el estado de sus tareas de código en el proyecto general y los diversos requisitos de rendimiento, llevar a cabo pruebas relevantes de manera específica e identificar y Resolver problemas lo antes posible requiere las habilidades de comprensión de los requisitos mencionados anteriormente.
7: La capacidad de aprender y resumir
Los programadores son una profesión donde los talentos pueden fácilmente eliminarse y quedarse atrás, porque una tecnología sólo puede usarse en Liderar dentro de tres o dos años, si los programadores quieren ganarse la vida, deben realizar un seguimiento constante de las nuevas tecnologías y aprender nuevas habilidades.
Ser bueno aprendiendo es una motivación necesaria para avanzar en cualquier profesión. Para los programadores, este requisito es aún mayor.
Pero también es necesario encontrar el objetivo adecuado para aprender. Algunos pequeños fanáticos de la codificación también hablan de su capacidad de aprendizaje. Aprendieron asp, php y jsp por un tiempo. Usan esto como capital para presumir y lo persiguen a ciegas. cosas y sustantivos superficiales, no comprenden los protocolos de transmisión de comunicaciones al crear programas de red y no comprenden el procesamiento de vectores de interrupción al crear aplicaciones. Dicho personal técnico, no importa cuántos de los llamados nuevos lenguajes domine, nunca será cualitativo. mejorar.
Ser bueno para resumir también es una manifestación de la capacidad de aprendizaje. Cada vez que completa una tarea de investigación y desarrollo o un fragmento de código, debe realizar un seguimiento intencionado del estado de la solicitud. Comentarios del programa y de los usuarios, resuma en cualquier momento, encuentre sus propias deficiencias y mejore gradualmente de esta manera, un programador puede crecer.
Aunque un programador que no tiene capacidad de crecer parezca un maestro, se recomienda no elegirlo, porque pronto se quedará atrás.
Se debe decir que las personas que tienen todas las cualidades anteriores son programadores calificados. Tenga en cuenta que las cualidades anteriores no están determinadas por el coeficiente intelectual ni por algunos libros de texto universitarios. Lo que se puede aprender aquí es que los programadores sólo necesitan comprender su propio trabajo, que es una cuestión de conciencia.
Entonces, como programador senior, o incluso analista de sistemas, es decir, diseñador de un proyecto de programa, además de tener todas las cualidades anteriores, también debes tener Las siguientes cualidades:
Primero, capacidad de análisis de requisitos
Para los programadores, comprender los requisitos puede completar el código calificado, pero para proyectos de I + D, organizaciones y gerentes no solo Tienen que entender las necesidades del cliente, pero la mayoría de las veces tienen que formular algunas de sus propias necesidades. ¿Por qué dices eso?
En términos generales, a la hora de realizar tareas de I+D, puede ser una demanda planteada por los clientes, o puede ser una demanda planteada por el departamento de marketing y marketing. En este momento, para el departamento de I+D, qué. En términos generales, ven que los requisitos son solo algunos requisitos funcionales, o más formales, es posible obtener una vista completa del usuario, pero esto no es suficiente, porque los clientes tienen más factores no técnicos; Puede resultarles difícil presentar requisitos de desempeño específicos completos, claros o profesionales, pero para los organizadores y planificadores de proyectos, deben poder comprender claramente la existencia de estos requisitos y presentarlos de manera adecuada al completar el informe de análisis de requisitos. Al mismo tiempo, deben quedar reflejados plena y claramente en las instrucciones de diseño para facilitar a los programadores el código sin perder estos principios.
Los programadores deben comprender correctamente el entorno en el que se encuentran las necesidades del usuario y realizar un análisis específico de las necesidades. Por ejemplo, si el mismo software se lanza mediante alquiler y licencia de ASP, los requisitos de rendimiento pueden ser diferentes. Hay una diferencia. El primero enfatiza mejores capacidades de soporte y estabilidad, mientras que el segundo puede enfatizar la universalidad en varias plataformas y la simplicidad de instalación y uso.
En segundo lugar, los métodos de diseño de proyectos y las capacidades de procesamiento de procesos
Los programadores deben poder dominar no menos de dos o tres métodos de diseño de proyectos (como Top- (definir métodos de diseño, como la creación rápida de prototipos, etc.) y ser capaz de seleccionar métodos de diseño apropiados para el diseño general del proyecto en función de las necesidades del proyecto y la asignación de recursos. La selección inadecuada de métodos de diseño retrasará el ciclo de I+D, desperdiciará recursos de I+D e incluso afectará los resultados de I+D.
Un programador también necesita dedicar mucho tiempo al diseño y procesamiento de diagramas de flujo. Necesita hacer diagramas de flujo de datos para establecer un diccionario de datos. Necesita procesar diagramas de flujo lógicos para formar un conjunto; flujo de procesamiento del sistema. Un sistema con problemas de proceso no se convertirá en un buen sistema por muy bonito que sea el código y por exquisito que sea cada módulo. Por supuesto, hacer un buen trabajo de análisis de procesos y elegir un buen método de diseño de proyectos requiere una comprensión suficiente de las capacidades de análisis de la demanda.
En tercer lugar, reutilizar el diseño y las capacidades de descomposición modular.
Esto parece ser una vieja melodía nuevamente, y la calidad básica no se ha explicado antes.
Como programador que participa en tareas de módulos, debe considerar la reutilización de los módulos funcionales específicos que enfrenta. Como analista de sistemas, los problemas que debe enfrentar son mucho más complejos que los del sistema general. descomponerse en muchos módulos funcionales reutilizables y funciones de acuerdo con una capacidad de análisis modular, y se forma un requisito de diseño independiente para cada módulo. Por ejemplo, tomemos la producción de automóviles. Al principio, cada automóvil se instalaba de forma independiente y cada componente se hacía a medida, pero luego, con la llegada de la producción en masa mecanizada, una fábrica de automóviles comenzó a producir automóviles a través de líneas de ensamblaje. Los componentes independientes comenzaron a tener un cierto grado de reutilización y, posteriormente, la estandarización se convirtió en una tendencia importante. Las piezas de automóviles de diferentes modelos, marcas e incluso diferentes fabricantes también se pueden reemplazar y actualizar fácilmente. En este momento, se maximiza la eficiencia de la producción de automóviles. Lo mismo ocurre con la ingeniería de software en una industria de software madura, en algunos proyectos y sistemas relacionados, se pueden reemplazar diferentes componentes a voluntad, por ejemplo, en muchos software de escritorio de Microsoft, en muchos módulos de operación (como abrir archivos y guardar). archivos, etc.) etc.) son el mismo conjunto de módulos funcionales que se reutilizan, y estas interfaces se proporcionan a los desarrolladores de aplicaciones de escritorio a través de algunas bibliotecas de clases para una fácil conexión. Esta es una evidencia obvia del diseño de módulos reutilizables.
Descomponer un sistema de aplicación grande y complejo en una serie de combinaciones de módulos relativamente independientes y altamente reutilizables que pueden completar la conexión de datos basándose en solo unos pocos parámetros. Las tareas más importantes como programador senior y analista de sistemas. Los métodos de diseño de proyectos adecuados y los diagramas de flujo claros son garantías importantes para lograr este objetivo.
Cuarto, capacidad de evaluación general del proyecto
Como diseñador de sistemas, debe poder partir de la situación general y tener una comprensión clara del proyecto. en su conjunto, como si la asignación de recursos es razonable y está vigente, por ejemplo, si el cronograma del proyecto puede maximizar la eficiencia sin dejar de completar el proyecto a tiempo. Evaluar la carga de trabajo del proyecto general y de cada módulo, evaluar los recursos necesarios para el proyecto y evaluar las dificultades que puede encontrar el proyecto requieren mucha acumulación de experiencia. En otras palabras, este es un estado que solo se puede lograr mediante. resumen y acumulación continuos. En Occidente, algunos líderes en diseño de sistemas de software son muy mayores, como 4, 50 o incluso más. Son mucho menos activos que los jóvenes en la codificación, pero en términos de evaluación de proyectos, han estado trabajando durante décadas. La acumulación de experiencia es la riqueza más importante y valiosa. China carece de esa generación de programadores. La razón principal no es que falten programadores de esa época, sino que los programadores de esa época son básicamente producidos por unidades de investigación y no por desarrollo de software productizado profesional. Experiencia en I+D de productos.
En quinto lugar, capacidades de organización y gestión del equipo.
Completar un proyecto requiere los esfuerzos concertados del equipo. Como diseñador de proyectos o gerente de I+D, usted debe poder maximizar el uso del equipo. La fortaleza general de la gestión técnica se diferencia de la gestión general de personal por su carácter profesional, porque en ella se diseñan algunos indicadores y factores técnicos.
La primera es la cuantificación del trabajo. Sin cuantificación, es difícil realizar evaluaciones de desempeño adecuadas y la cuantificación del programa no se puede calcular simplemente por el número de líneas de código. Se requiere gestión técnica. Las personas deben poder evaluar verdaderamente la complejidad y la carga de trabajo de un módulo.
El segundo es el ajuste del modelo de colaboración en equipo. En términos generales, la colaboración en el desarrollo de programas generalmente se divide en grupos. Los grupos tienen el método del programador principal y el método democrático. De acuerdo con la brecha de nivel de capacidad entre los programadores y las necesidades de investigación y desarrollo del proyecto, elija un método de formación de equipo apropiado y combine estrechamente las responsabilidades y tareas de los miembros para maximizar la eficiencia del equipo.
Es posible que una persona con altas habilidades de codificación no pueda convertirse en un director de I+D de proyectos cualificado. La falta de capacidad en esta área a menudo se pasa por alto.
En resumen, se puede ver que como responsable de I + D y diseñador de proyectos, las cualidades y habilidades requeridas no son la capacidad de escribir códigos de programas. En general, en este caso, cuando un programador alcanza esta calidad a través de resumen y mejora continua, su capacidad de escritura de código ya es bastante extraordinaria, pero preste atención a la relación causal aquí. Un diseñador de proyectos de alto nivel generalmente ya tiene una persona. Muy buen codificador, pero eso no significa que un programador con muy buen código pueda estar calificado para el trabajo de diseño de proyectos. El problema aquí no es una cuestión de coeficiente intelectual y libros de texto, sino de que un programador acumule experiencia y mejore gradualmente. No me di cuenta de en qué debería estar pensando cuando estaba trabajando en el proyecto, no descubrí conscientemente la organización y el diseño de reutilización del proyecto, y no tenía hábitos de documentación y resumen regulares. Para cambiarlos, todavía faltan nuestros diseñadores de proyectos calificados.
Una última cosa que agregar, ¿cuál es el proceso de diseño para el desarrollo de un proyecto de software? Tomemos, por ejemplo, los métodos de diseño estándar habituales.
El primer paso es la investigación de mercado. La tecnología y el mercado deben combinarse para obtener el mayor valor.
El segundo paso es el análisis de la demanda. Esta etapa requiere tres cosas: vista del usuario, diccionario de datos y manual de operación del usuario. La vista de usuario es el estilo de página que pueden ver los usuarios del software (incluidos los usuarios finales y los usuarios administrativos), que contiene muchos procesos y condiciones operativos. El diccionario de datos es algo que especifica la relación lógica de los datos y los organiza. Una vez que se completa el diccionario de datos, se completa más de la mitad del diseño de la base de datos. El manual de operación del usuario es un manual de instrucciones que especifica los procedimientos operativos. Tenga en cuenta que el proceso de operación del usuario y la vista del usuario están determinados por los requisitos, por lo que deben completarse antes del diseño del software. Completar estos proporciona restricciones y pautas para el desarrollo del programa. Desafortunadamente, muchas empresas no hacen esto. Si no se distingue el orden, a menudo habrá una desconexión entre el trabajo de desarrollo y las necesidades reales.
Para el análisis de requisitos, además del trabajo anterior, el autor cree que, como diseñador de proyectos, se debe realizar una especificación completa de los requisitos de desempeño para el proyecto, porque a menudo los requisitos de desempeño solo pueden ser entendidos por personas que Comprender la tecnología, que requiere expertos técnicos y requisitos. Las partes (clientes o departamentos de marketing de la empresa) pueden tener una comunicación y comprensión reales.
El tercer paso es el diseño del esquema, que inicialmente divide los módulos funcionales del sistema y proporciona procesos de I+D y requisitos de recursos razonables. Como método rápido de creación de prototipos, puede ingresar a la etapa de codificación después de completar el diseño del esquema. Este método generalmente se usa porque las tareas de I + D involucradas pertenecen a un campo nuevo y el supervisor técnico no puede dar instrucciones de diseño claras y detalladas al principio, pero lo hace. No significa que las instrucciones de diseño detalladas sean La especificación del diseño no es importante. De hecho, después de que el método de creación rápida de prototipos completa el código del prototipo, según los resultados de la evaluación y el resumen de las lecciones aprendidas, se deben volver a realizar los pasos de diseño detallados. .
El cuarto paso es el diseño detallado, que es un nivel importante que pone a prueba el pensamiento de diseño de los expertos técnicos. Las instrucciones de diseño detalladas deben proporcionar los módulos específicos a los codificadores de la manera más clara (estructura de caja negra). Maximizar la modularidad general del sistema; una buena especificación de diseño detallada puede reducir la complejidad de la codificación al mínimo. De hecho, estrictamente hablando, la especificación de diseño detallada debe definir cada parámetro de cada función proporcionada, desde el análisis de requisitos hasta el esquema. Desde el diseño hasta la finalización de las especificaciones de diseño detalladas, se debe decir que un proyecto de software está a medio completar. En otras palabras, cuando un sistema de software grande está a mitad de camino, todavía no se ha iniciado una línea de código. Aquellos que simplemente entienden a los programadores de software como escritores de códigos han cometido un error fundamental.
El quinto paso es la codificación. En un proceso de I+D estandarizado, el trabajo de codificación no excederá la mitad de todo el proceso del proyecto, normalmente 1/3 del tiempo. Como dice el refrán, si el proceso de diseño se completa bien, la eficiencia de la codificación mejorará enormemente. La coordinación del progreso y la colaboración entre diferentes módulos durante la codificación son las más cuidadosas. Tal vez un problema con un módulo pequeño pueda afectar el progreso general. , lo que obligó a muchos programadores a dejar de trabajar y esperar. Este problema ha ocurrido en muchos procesos de investigación y desarrollo.
La comunicación mutua y las soluciones de emergencia al codificar son muy importantes. Para los programadores, los errores siempre existirán y usted debe enfrentar este problema para siempre. ¿Alguna vez el famoso Microsoft no ha publicado un parche durante tres meses consecutivos? ¡Nunca!
El sexto paso es la prueba
Hay muchos tipos de pruebas: según el método de ejecución de la prueba, se pueden dividir en pruebas internas y pruebas externas. Según el alcance de la prueba, se puede dividir en prueba de módulo y depuración conjunta general, según el rango de entrada de la prueba; dividido en pruebas de cobertura total y pruebas de muestreo. Lo anterior es fácil de entender y no es necesario explicarlo.
En resumen, las pruebas también son un paso muy importante en el desarrollo de un proyecto. Para un software grande, las pruebas externas de 3 meses a 1 año son normales, porque siempre habrá imprevistos. existen problemas. Después de completar la prueba, completar la aceptación y completar algunos documentos de ayuda finales, el proyecto general ha llegado a su fin. Por supuesto, serán necesarias actualizaciones, reparaciones, etc. en el futuro, siempre y cuando no intentes hacer trampa con dinero. A través de transacciones únicas, debe seguir el seguimiento del estado del funcionamiento del software y continuar parcheando y actualizando hasta que este software se elimine por completo. Establecer una base profesional sólida y aprender lenguajes de programación: C, C++, Java, Perl, Python. Participar en actividades fuera del aula. Participar en concursos de programación. proyectos fuente (no olvides participar en Google Summer of Code -Google Summer of Code)
.