¿Cómo es pasar de un rol de ingeniería de software a un rol de arquitecto de software?

He hecho esta transición recientemente y puedo evaluar objetivamente las diferencias entre ingenieros y arquitectos. Primero profundizaré en lo que un arquitecto debería ser capaz de hacer.

El arquitecto necesita diseñar el sistema para que estos atributos de calidad sean los mejores.

CALIDADES DE DISEÑO

Integridad conceptual:

Decidir sobre el estilo de codificación, denominación variable.

Ejemplo : simple es mejor que complejo. La legibilidad cuenta. Si la implementación es difícil de explicar, es una mala idea … Para más información, visite Zen of Python.

Mantenibilidad :

El sistema debe sufrir cambios (componentes, arreglos, funcionalidad) con facilidad.

Ejemplo : Un buen ejemplo es la diferencia entre un acoplamiento apretado y sin apretar. Para obtener más información, consulte esta publicación en StackOverflow

Reusabilidad :

Capacidad para que los componentes y subsistemas sean adecuados para su uso en otras aplicaciones y en otros escenarios.

Ejemplo : Parte de la lógica empresarial se puede dividir en subsistemas separados que pueden interactuar entre sí a través de las API REST.

CALIDADES DE TIEMPO DE EJECUCIÓN

Disponibilidad :

La disponibilidad define la proporción de tiempo que el sistema es funcional y funciona.

Ejemplo : configuración de alta disponibilidad de GitHubs, replicación de los principales almacenes de datos. Si se interrumpe un servicio, la instancia de réplica se puede activar y conmutar por error en cinco minutos.

Interoperabilidad :

La capacidad de un sistema para funcionar con éxito mediante la comunicación de información con terceros.

Ejemplo : servicios REST o estándares web semánticos como RDF u OWL.

Capacidad de administración :

Qué fácil es para los administradores del sistema administrar la aplicación.

Ejemplo : para evitar la configuración específica de la plataforma, se podría considerar la virtualización con Docker o Vagrant.

Rendimiento :

Capacidad de respuesta del sistema.

Ejemplo : esta es un área tan amplia que abarca desde los principios de diseño de la base de datos hasta el estilo de codificación, un ejemplo sería:

SELECT COUNT (*) FROM image_thumbs; -> 8391.118 ms
SELECCIONE reltuples DESDE pg_class WHERE relname = ‘image_thumbs’; -> 112.018 ms

Fiabilidad

Capacidad de un sistema para permanecer operativo en el tiempo.

Ejemplo : Un ejemplo de una mala confiabilidad es un sistema que comienza a retrasarse durante un período de tiempo razonable.

Escalabilidad :

Aumento de la carga sin un impacto en el rendimiento del sistema o la capacidad de ampliarse fácilmente.

Ejemplos : Algunos buenos principios para mantener la escalabilidad incluyen el almacenamiento en caché, la comunicación asincrónica o las aplicaciones sin estado.

Seguridad :

Prevenir acciones maliciosas o accidentales.

Ejemplos : también un área muy amplia, algunos ejemplos pueden incluir no guardar información de la tarjeta de crédito o tener claves de seguridad solo en las variables de entorno.

CALIDADES DEL SISTEMA

Capacidad de soporte :

Proporcione información útil para identificar y resolver problemas.

Ejemplos : uso de herramientas de monitoreo o herramientas de depuración como TCat o Google Chrome DevTools.

Testabilidad :

Qué fácil es crear criterios de prueba para el sistema y sus componentes.

Ejemplos : Esto puede sonar contra-intuitivo, pero el enfoque propuesto es primero escribir la prueba unitaria y luego comenzar a codificar los trabajos. La abstracción del problema es mucho más clara y también se tiene una idea de cómo se utilizará el componente.

CALIDAD DEL USUARIO

Usabilidad:

Buena experiencia general del usuario (requisitos del usuario, localización, diseño intuitivo).

Ejemplo : Principios de Google Material Design que sintetiza los principios clásicos del buen diseño con la innovación y la posibilidad de la tecnología y la ciencia.

Los ingenieros de software deben cumplir con estas reglas dadas por los arquitectos.

Fuentes:

Capítulo 16: Atributos de calidad

Django de alto rendimiento: Peter Baumgartner, Yann Malet: 9781508748120: Amazon.com: Libros

¿Qué es el “acoplamiento flojo”? Por favor proporcione ejemplos

PEP 20 – El zen de Python

Configuración de alta disponibilidad

Patrones de diseño (o técnicas) para la escalabilidad

Introducción – Diseño de materiales – Pautas de diseño de Google

En una palabra, es como convertirse en un hombre de niño. Enorme transición. Todo depende de su base, conocimiento, habilidades, habilidades de diseño y experiencias, y si tiene las habilidades correctas, está listo para el éxito. Como ingeniero de software, usted escribe un módulo como un módulo de función o un informe o una interfaz o 2-3 cambios aquí y allá, pero como arquitecto mira desde la torre de vigilancia. eres como el director de orquesta, sabes cómo esas pequeñas piezas juegan y hacen que esa gran magia suceda, tomas las decisiones de diseño, seleccionas los marcos, los componentes tecnológicos, lo guías y lo posees. Tu eres el maestro.

More Interesting

¿El dinero será un problema para mí en la India si sigo la física teórica después de mi Btech en Ingeniería?

Armado con solo $ 5K, sin experiencia, sin contactos y sin un lugar para vivir a su llegada, ¿cómo puede uno triunfar en la actuación en Hollywood?

Si las telecomunicaciones mundiales son tan poderosas, ¿qué hace que vivir en los EE. UU. Sea tan estereotípicamente valioso para el éxito?

¿JRF obtiene una posición de organización reputada?

¿Puedo ser seleccionado como un oficial de IAS si completé mi maestría con 68% y un bajo porcentaje en mi segundo PUC (43%)?

Quiero hacer MS en las mejores instituciones de EE. UU. Como MIT / Stanford / UCB. ¿Puede alguien darme sugerencias constructivas sobre cómo lograr este objetivo?

¿Cuáles son las mejores ciudades del mundo para practicar snowboard durante todo el año y trabajar como ingeniero de software?

Como estudiante de tiempo completo, ¿cómo puedo ganar $ 100 en línea por mes?

¿Qué opina de la opinión de que los trabajadores, especialmente los trabajadores jóvenes, tienen pocas o ninguna oportunidad?

¿Tiene 23 años demasiado para unirse al ejército y luego ir a la universidad?

¿Por qué los entrevistadores suelen dar problemas de codificación que pueden no tener nada que ver con el trabajo diario?

¿A qué universidades debo postular?

Tengo que enfrentar una entrevista sobre el desarrollo de aplicaciones de Android, y no sé mucho de Core Java. Si tengo que descifrar la entrevista, ¿cuáles son las cosas más importantes en Java y Android que se preguntan principalmente?

Lending Club, en su sitio web, anuncia que una inversión de $ 100,000 en notas de grado B de 36 meses puede producir $ 3,035 en pagos mensuales de intereses y principal. ¿Qué porción de los $ 3,035 son intereses?

¿Trabajar en una empresa de alta tecnología me ayudaría a construir mi propia empresa de tecnología?