Participate in each stage of the Software Development Lifecycle (analyze, design, implement, test, deploy and maintain) Write clean and maintainable code using best engineering practices (unit testing, automation, source control, design patterns etc