Software Engineer - Co-op
- Full-time
- Job Location: On site
Company Description
At IFS you will work in a growing, global enterprise software company built upon committed and empowered colleagues who come to work knowing they are making a difference. We work everyday with customers who continue to challenge their markets and competitors. As a challenger ourselves, we partner with our customers to guide them through their digital transformations and extract the most value out of our software solutions. We take pride in ensuring that our employees are able to achieve the company goals as well as develop their career. We believe empowered autonomy, committed colleagues and being part of a winning team are the keys to our success and what makes us great! We are #ForTheChallengers and if that resonates with you, we would love to hear from you!
Job Description
The Software Engineer contributes to the success of our business by applying their skills and experience to the design and development of fit-for-purpose user focused enterprise-grade software. By considering usability, maintainability, testability, security, as well as performance concerns - the software developer continuously seeks to expand both product and technical domain while actively seeking to support effective high-quality delivery of software within a cross-functional Agile and Lean delivery team. You will seek to translate knowledge and experience into the context of work life within Product Development at IFS. Working within their team, their role is to learn as much as possible from their peers and colleagues all while seeking to make positive contributions to the team's deliverables.
Qualifications
Please note we are currently recruiting 3rd and 4th year students with at least 1 co-op term completed for January 2022 in the Ottawa region.
Essential Duties and Responsibilities
All Software Engineers within R&D at IFS strive to build their core craft and fundamentally have the same essential duties and responsibilities on our teams. The Software Engineer's capability is a lens applied based on overall knowledge and skills that the team member has been able to acquire over time. Please see Knowledge and Skills section to better understand this lens. That said, the Duties and Responsibilities for all Software Engineers include:
Technically design and develop fit for purpose software based on user focused product based and technical requirements:
- Ensuring usability, maintainability, testability, security and performance - Using sound and established engineering/architectural practices and principles
- Evaluating and suggesting alternative solutions - Defining technical test flows and ensuring appropriate test coverage via unit and integration testing
- Ability to review, understand, learn from and make improvement suggestions on code
- Test, debug, review and maintain enterprise scale software solutions by qualifying, locating and resolving software flaws.
Contribute to team-based activities related to product/solution management:
- Active contributor to planning activities and estimation
- Performing technical and design analysis
- Assisting in defining future direction and vision for domains/concepts
- Seeking customer satisfaction and solution fit
- Emphasizing knowledge sharing and supporting peers and colleagues
- Seeking continuous improvement of team, product, and processes using an Agile and Lean mindset
Knowledge and Skills
Ownership, Quality and Effort: Accurately evaluates risk and assesses scope of larger and more complex systems. Communicates priorities with the right stakeholders within Product Development "at the right level" - adapting the message so that it is relevant and well understood. Is able to break down and estimate effort on tasks effectively and accurately for larger and more complex work (e.g. 3-4 months) with their team by taking into account the capacity and capabilities of their team. Able to produce high quality, production ready implementations - regardless of complexity - in an accurate and reasonable amount of time. Assesses and evaluates quality of work delivered by peers accurately. Takes appropriate corrective actions to ensure quality on the team.
Problem Solving and Design: Can solve problems that require craft mastery - this experience "hard won" through demonstrated first hand experience with the technology. Regularly advises and mentors others with effective problem solving on complex problems. Consistently applies good practice relative to their craft on a individual (personal practice), team (mentorship and support), and Product Development level (advocacy and leadership).
Communication and Sphere of Influence: Is a model of open, honest, and constructive communication. Is both a high performing team member and team builder - meeting the team "where they are" and nurturing positive continuous improvement on the team. Supporting and mentoring (teaching) other team members as needed with respect to their craft. Noted "go to person" on the team based on their skills and ability to express their craft with ease. Able to grasp client needs quickly across various domains (breadth and depth) while being focused on our ability to deliver value to these clients.
Capabilities and Learning: Completely self-directed and skilled at learning. Is an "early adopter" and active contributor and leader of new technology and process adoption as appropriate. Supports, nurtures, and evangelizes knowledge and expertise with others. Recognized and reliable "go to person" within their craft.
Education and Experience
- College Diploma or University Degree with a specialization in software development and engineering and/or relevant experience
- Skilled with Java (along with good design patterns)
- Experienced with JavaScript, HTML5, JSON
- Experienced with J2EE and RESTful web services
- Experienced with SQL or relational databases
Nice to Haves
- Experience with AngularJS or NodeJS
- Experience with Oracle (PL/SQL or other Oracle technologies)
- Working knowledge of oData web services
- Advanced debugging/analytical skills (memory management, performance, concurrency)