Senior Software Developer, Team Lead
Toronto / Canada Remote
Our client is a global leader in IoT and connected transportation and certified “Great Place to Work.”
The Senior Software Developer, Team Lead assists with the day-to-day operation, coaching and mentorship of various software development teams leveraging expert knowledge in front and back end programming languages. This position will design, build, and maintain efficient, reusable, reliable code to develop high throughput, performance critical, scalable applications.
This position will be leading a team of people programming in Angular, Node.js, Typescript, and SQL queries to process information. This position will use C++, Python and possibly Rust, for building Optimization algorithms which solve NP hard problems such as VRP (Vehicle Routing) and TSP (Travelling Salesman).
Duties and Responsibilities
-
Direct and design software development projects; develop and implement efficient, clean code with assigned team that satisfies customer requirements.
-
Manage team with regards to task assignments, work arrangements and other Software Development Department expectations.
-
Ensure work progress stays on schedule and update stakeholders on project status.
-
Oversee the activities and performance of direct reports.
-
Collaborate with other development teams on design and implementation of features spanning multiple products/modules.
-
Perform Test-Driven and Security-Driven Development.
-
Conduct comprehensive testing and code reviews to ensure that industry coding standards are followed.
-
Participate in development of prototypes, minimum viable products, and PoCs.
-
Appropriately document system design and architecture such that it is easy to understand, maintain and extend.
-
Help to establish objectives and design functional, cohesive code to translate customer needs into technical action.
-
Translate application storyboards into functional applications.
-
Analyze call stacks, trace files, debug logs or performance data to troubleshoot and identify the root cause of bugs, fix defects and identify areas for improvement.
-
Ensure the functionality, performance, scalability, reliability and realistic implementation schedules for projects.
Qualifications and Skills
-
8+ years experience as a Software Developer using object-oriented programming to build scalable applications.
-
Experience with C++ is a must have.
-
Experience with Python, Google Compute Engine and Google BigQuery is a plus.
-
Experience with SQL Server and Postgres database design, optimization and writing queries.
-
Expertise designing, building and supporting scalable systems in a production environment.
-
Expertise optimizing SQL databases and designing supportable schemas.
-
Expertise managing code in git and resolving merge conflicts and renaming branches.
-
Expert understanding of object-oriented programming (the SOLID principles of design), with understanding of building a cloud deployed scalable application.
-
Experience with any modern frameworks such as React, Angular, Vue.js is essential.
-
Experience with responsive layout design is a plus.
-
Experience working in NodeJS/Typescript environments is a plus.
-
Knowledge of Javascript based languages – or similar projects - derived from working on software of significant size and scope (either front-end or back-end).Experience programming in JavaScript Typescript, ES6, CSS and HTML.
-
Exposure to Kafka, message queues or message brokers.
-
Leadership experience in a team-oriented workplace.
-
Success with coaching and development of employees.
-
Linux development and deployment of microservices with Kubernetes/Docker.
-
Must have the flexibility to adapt to growing technology and market demands.
-
Strong analytical skills with the ability to problem solve to well-judged decisions.
-
Strong project management skills; able to identify needs, develop effective solutions and manage projects through to completion.
-
Highly organized, task-oriented and solution-driven with a strong team orientation.
-
Strong verbal and written communication skills.
-
Resourceful, flexible and adaptable.
-
Able to work well under pressure and respond to multiple fast changing priorities.
-
Entrepreneurial mindset and comfortable in a flat organization.