Full Stack Software Developer
Organizations don't innovate; people do.
As part of our digital transformation business, you’ll help clients unlock innovation, embrace the future, and change communities for good.
And we’ll help you stimulate new thinking, accelerate your career, and connect you to projects that really matter.
Join our team of over 600 data scientists, design thinkers, immersive digital consultants, project managers, and innovators, all working to create positive change for generations to come.
Who are we looking for?
We're on the lookout for an Intermediate Full-Stack Software Developer to join our Waterloo, Ontario office. You're a strong engineer with 5+ years of experience who enjoys solving real problems as much as writing good code. You'll build software used by engineers, scientists, and other specialists across GHD, working with them to understand what they need and turn it into solutions that work.
This role is a chance to grow beyond pure development. You'll learn to lead requirements conversations, shape solutions with subject-matter experts, and see how the software you build shapes real engineering and environmental work, while continuing to develop toward a senior level.
Hybrid work Model: Be part of the dynamic culture! Our workplace thrives on a hybrid model, combining in-office collaboration and flexibility. Join us in the office, three days a week, to contribute, connect, and excel in our vibrant environment.
Working with an energetic and high-performing team, this position offers a variety of work and will see you involved in:
- Build and ship: Design, code, test, and deploy features and applications that meet our standards for security, quality, performance, and maintainability.
- Own outcomes: Take ownership of your work from start to finish. Deliver on agreed timelines and raise risks and blockers early.
- Work through ambiguity: Turn loosely defined problems into clear, workable tasks. Know when to push ahead and when to pull in senior colleagues.
- Manage competing priorities: Contribute to several projects at the same time, managing your workload so that each one keeps progressing. When urgent production issues arise, set planned work aside to resolve them quickly, then return to your project commitments with minimal disruption.
- Shape requirements: Work with stakeholders to understand their challenges, then turn their needs into well-scoped stories with clear acceptance criteria.
- Act as a trusted partner: Work with peers, senior developers, and specialists across the business to shape and test solutions so that what we build meets real needs.
- Communicate clearly: Lead conversations that clarify requirements, surface constraints, and keep everyone aligned on progress.
- Keep improving: Stay current with best practices and emerging technology, including AI tools and workflows that change how we build software.
What you will bring to the Team:
- Strong proficiency in at least one of C#/.NET, Python, or JavaScript/TypeScript.
- Hands-on experience with a modern front-end framework (React or Vue).
- Experience with relational databases (SQL Server or PostgreSQL) and with designing and consuming RESTful APIs.
- Solid habits with Git, code reviews, and unit and integration testing.
- Strong troubleshooting skills and a willingness to dig into unfamiliar problems and domains.
- Curiosity about the problem behind the ticket and ownership of the outcome, not just the code.
- Ability to manage several projects in parallel, prioritize effectively, and switch calmly to urgent support or firefighting when needed.
- Clear written and verbal communication, and comfort working directly with non-developers.
- Practical use of AI tools across the development lifecycle, with sound judgment about how to apply them responsibly.
Nice to have
- Consulting, client-facing, or internal-product experience gathering requirements.
- CI/CD and cloud experience (Azure preferred, or AWS equivalent).
- Agile or Kanban delivery using tools such as Jira/Confluence, Azure DevOps, or GitHub, or equivalent.
- NoSQL experience (Azure Cosmos DB or MongoDB).
- Familiarity with architecture patterns (n-tier, event-driven, microservices) and secure coding standards (OAuth, JWT).
- Microsoft Power Platform (Fabric, Power Apps, Dataverse, etc.)
- Exposure to engineering, scientific, or geospatial data.
Key relationships
- Team: Collaborate with peers and senior developers, take part in code reviews, and share knowledge.
- Leads and managers: Keep them informed of progress, dependencies, and blockers.
- Stakeholders and product team: Align on priorities, test requirements, and agree on solution outcomes.
- People team: Get support for your professional development.
#LI-MC1
- The salary range for this position is: $68,850 to $111,750 CAD.
- The posted salary range represents the expected hiring range for GHD locations in its major city centres. Ranges may vary for positions in other locations. At GHD, base salary is determined by your skills, experience, qualifications, and work location. We are committed to offering competitive compensation and adhering to all relevant pay transparency legislation.
- The use of artificial intelligence (AI) in recruiting is just getting started and may be used during the process to improve efficiency and fairness. Your application may be reviewed by both AI and our hiring team. While AI supports some steps through the process, all final hiring decisions are made by humans
- This position is for an existing vacancy.
As a diverse and inclusive organization, we encourage individual achievement and recognize the strength of a diverse workforce. GHD is an equal opportunity employer. Upon request, GHD will provide reasonable accommodation for applicants with disabilities throughout the recruitment and selection process.
Required Skills
Required Languages
🇬🇧 English