Software Developer – Python
CN harnesses the power of information every minute of every day to make better decisions. Almost every aspect of our business relies on technology; this is why CN invests around $100 million every year on IT projects and infrastructure. And with close to 1,000 in-house employees, CN’s IT team is more than a first-class technology shop – they’re railroaders, dedicated to enabling our people to work better and to helping our trains run safely.
**WHY YOU WANT THIS JOB**
CN has begun a critical technological transformation, bringing significant innovation to the locomotives. If you are interested by challenges involving complex systems, leading-edge technologies, over the air communications, edge computing and predictive analysis you will be at the right place at the right time. Join us if you have what it takes to be a key player in designing and deploying leading-edge technology systems.
The Locomotive is a critical element of CN's operation technology solution. The creation of the organization that will evolve the mobile data center onboard the locomotives to ensure high availability and reliability to guarantee overall safety in CN's environment is of the highest importance. This role is accountable for the development and integration of the solution on board technology.
**DESCRIPTION**
This role is responsible to produce properly programmed and tested software solutions to meet defined business requirements. This involves producing physical design specifications for solution components when needed. This also involves translating detailed design specifications into executable physical code and includes programming, testing, analyzing, maintaining and documenting new and/or existing software applications.
This role may apply in either a Product Development environment or a Support environment, depending on assignment.
Key Deliverables:
* Physical design (e.g. technical designs, component and class designs)
* Test cases/scenarios and test data (when required)
* Tested and documented program code
* Batch job schedule
* Work estimates
**RESPONSIBILITIES**
* Gather requirement and produce functional design.
* Translate the functional design into a physical design, e.g. program specifications, including technical designs for both 3rd party package components and/or custom developed solution components.
* Provide, or verify, work estimates.
* Ensure optimal re-use and leveraging of existing program components versus the need for the development of new and/or customized functions.
* Write new, or modify existing, program code based on physical design and/or programming specifications. This includes documenting the program code.
* Conduct unit testing. If required, also conduct functional and integration testing, including preparation of test cases/scenarios and test data.
* Diagnose and resolve code defects. Determine whether redesign is required for proper resolution.
* Contribute to, and if required prepare, implementation plan details. Execute the implementation plan. This may include updating/setting up the batch job schedule and creating/revising the disaster recovery (DR) scripts.
* Analyze, design and produce application enhancements.
* Report progress status and issues.
* Apply, and ensure compliance with, all appropriate CN IT standards (e.g. Code quality, Security, Architecture, Project Delivery Methodology, SOX, etc.)
**REQUIREMENTS**
* Bachelor degree in computer science, information system, engineering, or equivalent related project experience.
* At least 5 years of experience in Python Back-end development.
* Proficient in Development Practices and proven methodologies (Agile, Iterative, Waterfall).
* Ability to summarize complex situations in an efficient manner.
* Ability to manage development on many projects simultaneously.
* Advocate the re-use of existing components, frameworks and libraries.
* Provide guidance and support to team members
* Understand and follow corporate processes (e.g. SDLC & SOX processes).
* Functional/technical proficiency with large full life cycle projects with Back-End development.
* Experience with development technologies and tools (JEE/Java, Open source e.g. Apache, Eclipse).
*CN is an employment equity employer and we encourage all qualified candidates to apply. We thank all applicants for their interest, however, only candidates under consideration will be contacted. Please monitor your email on a regular basis, as communication is primarily made through email. *