Red de conocimientos turísticos - Información de alquiler - De programador a ingeniero de software[1]

De programador a ingeniero de software[1]

De programador a ingeniero de software [1]

Después de leer la serie de artículos sobre programadores, siento lo mismo. Como alguien que lleva 13 años desarrollando software, me gustaría dar algunos consejos a quienes ya han hecho, están a punto de hacerlo y están interesados ​​en emprender este camino.

Primero, programadores e ingenieros de software. Aunque todos son trabajos de programación, todavía existe una ligera diferencia entre alto y bajo.

La principal diferencia es que los programadores convierten programas (procesos existentes, pseudocódigo o plantillas de diseño) en código; necesitan dominar al menos un lenguaje de programación; Un ingeniero de software es la capacidad de describir el propósito en un lenguaje de programación e implementarlo. Por ejemplo, la capacidad de describir algoritmos matemáticos, lenguaje natural y modelos mentales como algoritmos de programa, procesos/clases de programa o/e inteligencia artificial, y escribirlos en código.

Para los principiantes, por supuesto, la atención se centra en el lenguaje. Si desea convertirse en un programador calificado, primero debe dominar el lenguaje. Incluyendo características de lenguaje y capacidades de implementación. Por ejemplo, utilice tanto chino como sea posible para explicar las preguntas de la entrevista, lo que requiere que el entrevistador domine la encapsulación de clases en C, la sobrecarga del constructor y la sobrecarga del operador;

Después de hacer esto durante uno o dos años, si quieres seguir comiendo este plato de arroz, debes mejorar. Lo primero es, por supuesto, tener un conocimiento profundo del idioma, especialmente del. forma de pensar en el lenguaje, la forma en que funciona el compilador y los diseños comúnmente utilizados. Tomando el polimorfismo de C como ejemplo, muchas empresas preguntarán durante las entrevistas qué es una función virtual/función virtual pura (forma de pensar). ¿Cómo implementar la sobrecarga de funciones en C (punteros de funciones y comprensión del proceso de compilación)? Implementación de interfaces/herramientas/fábricas y clases sigleton (plantillas de diseño de uso común). Otra parte importante es la gestión de la memoria.

Si puedes hacer esto basándose en un conocimiento profundo del lenguaje en sí, felicitaciones, ahora eres al menos un programador senior.

Si tienes confianza en tu idioma, el siguiente paso es pensar hacia dónde quieres llegar. ¿Es el lado de gestión (gerente de proyecto) o el lado técnico (ingeniero de software)? Ya que aquí estamos hablando de programación, no hablemos de gerentes de proyectos por ahora. En realidad, hay dos formas de convertirse en ingeniero de software. Uno es tomar el camino de ingeniero de software de sistemas o ingeniero de arquitectura; el otro es ingeniero de algoritmos.

Para amigos en China, recomiendo tomar el camino de ingeniero en arquitectura. Requiere amplio conocimiento, familiaridad con todo el sistema, capacidad para comprender y analizar rápidamente los requisitos de diseño/cliente, estimar rápidamente la carga de trabajo, los riesgos y los recursos necesarios (asumiendo una parte considerable de las tareas del director del proyecto) y proporcionar soluciones basadas en las reservas de personal técnico existente. . Por supuesto, también se requieren ciertas habilidades de expresión y redacción de documentos. Por ejemplo, cuando visité el Banco Agrícola de China en cierta provincia, hablé con la otra parte sobre el problema de conectar tarjetas bancarias y tarjetas médicas de hospital. Esa noche trabajé con el departamento de marketing y trabajé toda la noche para escribir. un plan técnico de 60 páginas. Basado en este plan, agregue un documento de oferta de 40 páginas.

En términos generales, no se necesitan más de dos o tres años para lograr una comprensión profunda de todo el sistema. Por lo tanto, el consejo para los programadores nacionales es no cambiar de trabajo con frecuencia, especialmente no cruzar industrias con frecuencia. Obtenga un conocimiento profundo del software en esta industria. Lo mejor es haber trabajado en cada departamento o módulo. Si tiene esta idea, normalmente puede hablar con el director del proyecto y normalmente le animarán a trabajar en cada departamento/módulo de esta manera.

Cuando fui al extranjero, me di cuenta de que la situación había cambiado debido a las diferencias de idioma y cultura, no tenía mucha confianza en tomar el camino de un ingeniero de sistemas. Tuve que emprender el camino del ingeniero de algoritmos.

Después de decidir tomar este camino, de repente me di cuenta de que mi habilidad matemática era demasiado pobre. Tuve que recibir clases de matemáticas avanzadas, como álgebra lineal, teoría de la probabilidad y estadística matemática. Al mismo tiempo, “Estructuras de Datos y Algoritmos”. Edición C++" Lo leí de principio a fin. Entonces finalmente conseguí un puesto.

La primera tarea en ese momento fue escribir un programa en el sistema integrado para comprimir bmp a jpg. Quizás se pregunte, hay códigos fuente en todas partes en Internet, ¿por qué tiene que escribirlo usted mismo? De hecho, esta es también la razón por la que no recomiendo que los ingenieros nacionales sigan el camino del algoritmo.

A menos que seas un maestro en matemáticas y tengas tu propio algoritmo original. De lo contrario, realmente no hay lugar para que los ingenieros de algoritmos sobrevivan en China. Pero en los países extranjeros, hay una gran diferencia. Las empresas un poco más formales básicamente tienen prohibido usar código abierto, porque el código abierto también tiene derechos de autor y algunos no se pueden comercializar. La mayoría de ellos tienen copias y esas empresas no se atreven a tocarlo. de. Debido a los requisitos de Qizuo, si usa su código, también debe revelar su código.

Por supuesto, podemos mirar esos códigos fuente abiertos y reescribirlos nosotros mismos. Pero créame, en términos generales, si no quiere simplemente hacer alguna sustitución de variables y terminar con eso, es mejor mirar el código original que la documentación del algoritmo en sí.

?