Title: Full Stack Software Engineer
Location: San Francisco, CA
Type: Long-Term Contract
The Full Stack Software Engineer will design, develop, and document microservice and system components consisting of several objects working together to execute a business function of a larger system. Also interact with software architects and other business /technical leaders to understand subsystem and component specifications and recommend changes to facilitate efficient and effective development. The Full Stack Software Engineer will also interact with representatives of other cross functional teams to understand and/or recommend requirements and strategies for projects.
- Work with business and IT teams to understand business problems, and design, implement, and deliver an appropriate solution using Agile methodologies across larger programs.
- Develop code and test artifacts that reuse subroutines or objects, is well structured, backed by automated tests, includes sufficient comments, and is easy to maintain.
- Work independently to implement solutions on multiple platforms (DEV, QA, UAT, PROD).
- Provide technical direction, leadership, and reviews to other engineers working on the same project.
- Implement and debug front end web applications, subsystems/microservices and components.
- Participate in integrated test sessions of components and subsystems on test and production servers.
- Determine and communicate the implications of system-level decisions on subsystems and components, and help determine how best to mitigate or take advantage of these implications.
- Support management of the team’s technical infrastructure (e.g., repository, build system, testing system) under guidance from the systems engineer or another project leader.
- Participate in multiple programming paradigms, not limited to object oriented programming.
- Perform tasks efficiently and work together with teams to ensure project success.
- Follow automate-first/automate-everything philosophy.
- 5+ years of full stack experience in building highly scalable software systems.
- Bachelor’s degree in Computer Science or equivalent.
- Hands on experience with system programming, development of service/module type of applications in Java, Node.js, and mainstream scripting.
- Thorough understanding and hands-on experience in the development of all layers of enterprise applications to analyze system scalability, integration, and performance issues as well as internationalization utilizing either Unicode and/or multi-byte databases.
- Experience working on SQL Server, Stored Procedure, Kafka.
- Working knowledge of Openshift, Apigee API Integration platform.
- Experience working on container styles of programing such as Microservices, Docker, Openshift.
- Experience working across programming languages, patterns, and data structures.
- Hands-on experience with multi-threaded development covering thread sync & synchronization, locks, and database concurrency.
- Applied knowledge of object oriented programming concept (OOPS), microservices, operating system (OS) concepts and UML.
- Proficient with software architecture, design patterns, and strong demonstrated experience in building frameworks.
- Strong computer science background including distributed computing.
- Knowledge of software development tools and methodologies.
- Experience with the software development life cycle, development process flow and their tools usage.
- Knowledge of secure coding practices is a nice-to-have.
- Domain knowledge in financial service is a nice-to-have.