Software Engineer
Software Engineer36
Applications
36
Applications
About the Job
Skills
Skills Required:
Application Development: C++
1. Fluent with advance concepts of C++, e.g., constructs, strings, pointers, arrays, arrays & pointers, double pointers, function pointers, pointers to arrays, internal storage for various datatypes, creating in memory data-structures, bit-field operators, recursions, function call and stack formation, standard file I/O library, buffered IO, etc.
2. Relational database (SQLite)
3. Standard protocol implementation (TCP/IP, Serial etc) , SSL/TLS
4. Knowledge of object-oriented concepts and programming
5. Multi-Threaded development , network sockets, design skills
6. Good design skills, familiar with SOLID principles
7. Experience with Make tools and cross compilation chains for ARM architecture.
8. Strong debugging and profiling skills (gdb, gprof)
9. Shell scripting, Python Scripting
10. Good understanding of data structures and implementation knowledge such as Stacks, queues, trees, etc.
Operating system:
1. Operating system architecture (Linux, BSD flavours)
2. Working with process, threads, memory management
3. Locking mechanism in the OS
Good to have (Operating System):
1. Networking stack knowledge
2. Networking stack programming experience will be an advantage.
3. Exposure to embedded systems interface (programming using in devmem, gpio, DMA)
Other Areas:
1. Documentation and version control
2. Unit Testing and Integration Testing
3. Open to learn and adopt frequent changes.
4. Logical Reasoning
5. Experience in mentoring juniors and technical leadership of 2 to 6 engineers
Primary Role/Scope of Job:
• Stack development for the product
• Module design, development, and testing
• Test script development and testing
• Will report to team lead
Desired skills:
• A collaborative and supportive style over a directive one.
• Remaining calm and composed in tense and stressful situations will be an asset.
• Excellent interpersonal, written and communication skills.