Описание вакансии
Условия работы
Engineer will and/or should
- Comfortable to move from one project to another
- Able to learn and contribute quickly in the project
- Learn and use new technologies during project
- Create detailed specification based on higher level spec and requirements
- Capable of working collaboratively with stakeholder and user in creating user stories
- Actively participate in the process of design, test and development of software based on user stories.
- Give updates daily on his work (written report or pushing code to git repo) and participate in daily standup meeting
- Contribute to organization with the highest standard to deliver high quality product
- Aware that software development process is iterative in nature and always improving current implementation
- Writing design, technical and operational documentation
- Building reusable code and libraries for future use
- Produce well-designed, well-organized, testable, optimized, and documented source code
- Writing design, technical and operational documentation
- Optimization of the application for maximum speed and scalability
- Implementation of security and data protection (OWASP security principles)
- Involvement in (SDLC) Software Development Life Cycle with Agile methodology
- Practicing TDD (Test Driven Development)
- Comply with project plans and industry standards
- Collaborate with other programmers to design and implement features
- Working closely with other staff, such as Project managers, Systems analysts, Operation support and Business development team
- Work independently when required and be accountable for the software development progress
- Continuously learn and improve skills
- Benchmark and profile system performance
Requirements:
- Strong proficiency in C++, with fair knowledge of the language specification
- Strong knowledge in C++ design patterns
- Thorough knowledge of the standard library, STL containers, C++ data structures and algorithms
- Good understanding of memory management in non-garbage collected environments
- Familiarity with templating in C++
- Knowledge of the latest C++11 and C++14 standard
- Knowledge of low-level threading primitives and real-time environments
- Knowledge and experience with boost C++ library
- Familiarity with creating C API
- Implementation of automated testing platforms and unit tests (TDD)
- Proficient understanding of git
- Familiarity with continuous integration
- Experience of working in a agile team with scrum methodology
- Knowledge of event based programming in C++
- Experience with Python, Golang, RabbitMQ (message queue), Couchbase and Docker is appreciated
- Experience working with XML base standard (XSD) is appreciated
- Experience in designing and/or implementing transport protocol is appreciated
- Experience in security aspect of transport protocol is appreciated
- Knowledge of HTTP and Websocket standards is appreciated
Languages:
English - Can read and write technical documents. Intermediate level of speaking.
About projects:
1. BPM platform
Definition
BPM platform is a collection of application to help company design, manage and monitor business process. Usually company develop specific app utilizing BPM platform capabilities tailored to their requirements.
Description
You will be developing C++ base BPM platform engine based on open standard (BPMN-Business Process Model & Notation). You will involve from design to development of the BPMN execution engine following standard specification and its components (API, Storage, etc). You will actively participate in creating user stories and specify tests to confirm completion of a user story. You will use TDD. You will collaborate with other team members to integrate various BPM platform apps into one cohesive product.
Stack
We use C++, Golang, Couchbase, Redis, RabbitMQ and Docker.
Example
HR department want to create self service employee portal for leave request and sick notification. They use BPM platform to design process in BPMN format, deploy to BPM engine. Then they develop user portal which use BPM platform API to initiate a process.
2. Highspeed Transaction Gateway
Definition
With recent trend of app consumerization, companies are seeking to open their system (API or app) to target wider audience. However, companies are facing challenges such as slow legacy app that unable to handle millions of requests per second, security issues, tight coupled app that difficult to scale and many others.
Description
Highspeed Transaction Gateway is a platform that provide API gateway that secure, fast, reliable and capable of handling large volume of transaction. You will involve to designing and development of secure and reliable transport layer, Nginx server module and middlewares to handle and process large volume of request. You will design and develop API for management and monitoring functions. You will design and develop client libraries for mobile and web app. You will actively participate in creating user stories and specify tests to confirm completion of a user story. You will use TDD. You will collaborate with other team members to integrate several apps into one cohesive product.
Stack
We use Nginx, C++, Golang, Couchbase, Redis, RabbitMQ and Docker.
Example
When a Bank want to open their API the need to make sure the API layer and their backend is scalable and can handle million of requests. They also need to make sure its fast and secure. That Bank can use Highspeed Transaction Gateway as gateway to their API.
Бонусы
Flexible working hours, the ability to work from 9.00 to 18.00 from home, business trips to Jakarta, English courses if necessary.
Дополнительные инструкции
If you like our position and if you are ready to pass technical test, please send your CV with your email.
Thank you.