
Job description
Design the architecture of a software product that solves the non-functional requirements (security, availability, performance, scalability, compatibility, etc.), design the coding patterns and guidelines of functional components, and make the technical decisions relevant to the quality of the software product. It includes selecting the technology platform (run-time); selecting and designing software architectural patterns (layered, C/S, SOA, event-driven, microservices, service broker, etc.)
; select frameworks, programming languages, and development tools; design reusable components and support subsystems that solve general functions (cross-cutting concerns); establish coding guidelines and standards; Solve the complex technical challenges of implementation.