Software Developer/ Engineer/ Architect

Principal Software Development Engineer

Creates robust and scalable feature designs that meet customer requirements. Implements design, code and process optimizations that enable significant improvements in performance, scalability, security, reliability and maintainability. Designs and implementation take into consideration operations and serviceability issues for the feature.

  • Consistently produces high quality designs and code implementations that persist through multiple product cycles. Code produced is exemplary and considered a best practice for the organization.
  • Writes unit tests for each function for the feature that effectively exercises the code, surfaces bugs or design issues and integrates with or complements those used by Test organization. Ensures backwards compatibility of fixes across releases. Ensures that the delivered overall user experience conforms to the feature objectives
  • Schedules for feature takes all dependencies into account. Able to decompose full feature into meaningful, measurable, complete-able tasks. Able to estimate accurately the level of effort required to complete decomposed tasks. Keeps feature development on schedule despite changes. Estimates incorporate changes and provide proper mitigation for dependencies. Leads discussion in iteration planning session with respect to feature
  • Provides clear documentation of the architecture that facilitates maintainability and consistency of implementation. Drives consensus in the team and helps clarify priorities and dependencies resulting in better overall coordination. During presentations, effectively articulates the key design principles for their feature areas to the immediate team and upper management. Participates in the interview process and provides complete and effective hire/no-hire input on candidates and prospective contractors
  • Chooses the right technology, with no unnecessary abstraction layers, to implement the full feature. Communicates architectural issues in the early stages and receives buy-in on the trade-off driven changes. Does not add “un-necessary” features, which ensures no schedule delays. Identifies and analyzes design defects in the feature and puts in place practices for early detection and avoidance. Resolves technical issues that spanned multiple teams
  • Works under minimal supervision on complex projects with wide latitude for independent judgment

Significant hands-on experience architecting and developing fine-grained services using modern Java EE frameworks (Spring Boot/Spring Cloud/Spring IO etc.) ;

  • Experience in API automation framework & development using Java;
  • Proficiency with responsive design and development using Bootstrap or similar layout frameworks;
  • Extensive Experience in developing JavaScript on top of one or more of the following client-side frameworks such as Angular JS 2.0, React JS, Knockout JS, and Backbone JS;
  • Deep functional knowledge or hands on design experience with Web Services (REST, SOAP, etc.);
  • Strong architectural understanding for large scale heavily distributed and available applications, containers, Microservices, and Serverless;
  • Experience designing and developing architectures for near-real time, highly transactional, parallel/multi-threaded solutions;
  • Experience in 12-factor app architecture, design, and implementation;
  • Proven experience with a Platform as a Service (PaaS) solutions such as Pivotal Cloud Foundry;
  • Active adherence to engineering best practices including unit testing, test-driven development (TDD), continuous Integration/continuous delivery (CI/CD), pair programming, automated testing, and code reviews;
  • Strong understanding of DevOps principles with experience in each of the DevOps areas of practice (Source Control Management- GitBucket, Build - Maven, CI/CD - Jenkins, Repository Management - Artifactory, Automated Test- JUnit, Grinder, SOAPUI, JMeter)
  • Ability to fit solutions into broader enterprise context including security, single sign on, high availability, scalability, service-oriented/API governance, containers including virtualization and Microservices;
  • Extensive experience working with Container technologies e.g. Docker, Kubernetes;
  • Extensive experience working with IaaS (Microsoft Azure, Amazon Web Services etc.) ;
  • Significant experience with Message Queue technologies such as Kafka or RabbitMQ;
  • Proven understanding of OOAD, design patterns, and application development processes and practices with focus on reusability, extensibility, and performance;
  • Proficiency in one or more Relational and Non-Relational DB technologies such as MS SQL Server, MongoDB, and Postgres;
  • Passion and experience in coaching and mentoring junior and senior software engineers

Education

  • MS degree or foreign equivalent in computer science, engineering, or related field