Description
The Junior Software Engineer contributes to the design, development, maintenance, and enhancement of high-performance, scalable, service-oriented applications. This entry-to-mid-level role focuses on writing clean, efficient, and maintainable code while collaborating with teams and customers to deliver customer-centric products. The engineer participates in analyzing requirements, implementing features, troubleshooting issues, and staying current with technologies. Emphasis is placed on secure coding practices, understanding fundamental security principles, and contributing to secure application development in a distributed agile environment with continuous integration.
Key Duties and Responsibilities
Analyze, maintain, and enhance existing software applications to ensure reliability, performance, and security.
Design and develop high-volume, high-performance, high-availability, service-oriented applications.
Translate customer requirements into technical designs and implement robust, secure product features.
Write clean, reusable, testable, and efficient code for customer products across backend, frontend, and mobile platforms.
Manage day-to-day technical challenges, identify risks or issues in development activities, and communicate them effectively to the project manager.
Prioritize tasks and manage workload across multiple projects simultaneously.
Participate in code reviews, unit testing, and integration testing to maintain code quality.
Remain current on emerging technologies, frameworks, vendor packages, and security best practices; evaluate and recommend improvements as needed.
Communicate effectively with customers and cross-functional teams to establish technical alignment and gather feedback.
Apply fundamental security principles in development, including secure coding practices, input validation, and protection against common vulnerabilities.
Fundamentals in Security (to be incorporated into daily development practices)
Awareness of the OWASP Top 10 web application security risks and how to mitigate them (e.g., injection prevention, broken authentication, sensitive data exposure, XML external entities, broken access control, security misconfiguration, cross-site scripting (XSS), insecure deserialization, using components with known vulnerabilities, insufficient logging & monitoring).
Basic secure coding practices: proper input validation/sanitization, output encoding, secure session management, error handling without leaking sensitive information, and use of prepared statements/parameterized queries to prevent SQL injection.
Understanding authentication and authorization mechanisms (e.g., using Spring Security for role-based access control, JWT/OAuth basics).
Secure handling of sensitive data (encryption in transit via HTTPS, proper storage practices, avoiding hard-coded credentials).
Knowledge of common vulnerabilities in APIs (e.g., rate limiting, proper CORS configuration, avoiding insecure direct object references).
Basic threat awareness: recognizing potential risks during design and development, such as data exposure or unauthorized access.
Required Technical Skill Set
Core Java and advanced Java (J2EE)
Spring ecosystem (Spring MVC, Spring Boot, Spring Security)
Play Framework for Java
RESTful APIs, Web Services (REST and SOAP)
API design and implementation
SQL and relational database management
NoSQL databases (MongoDB)
Mobile/cross-platform development (Flutter, React Native, Native Android/iOS)
Frontend technologies (React)
Secure coding fundamentals and basic application security practices