Middle Software Engineer
SAQAYA · Cairo, Egypt
Apply & track with Apply EdgeMiddle Software EngineerJoin SAQAYASAQAYA is a growing technology company with teams across the UK, Spain and Egypt. We work with leading UK organisations to build software solutions for the shipping and data analytics industries.We are looking for a Middle Software Engineer to join our engineering team and contribute to the development of reliable, scalable and maintainable applications.This is a hands-on role for an engineer who enjoys solving problems, learning new technologies and working closely with other developers. You’ll have the opportunity to work across different parts of the software development lifecycle, while being supported by experienced engineers and technical leaders.What you'll be working onAs part of the engineering team, you will:Build and maintain backend applications primarily using Python, with opportunities to work with Java and other technologies.Develop APIs, services and integrations that support business-critical applications.Work with relational and NoSQL databases, including MySQL, DynamoDB and Redshift.Build and deploy applications using AWS cloud services.Write clean, maintainable and well-tested code.Create and maintain automated tests as part of the development process.Investigate bugs, performance issues and production problems, helping to identify and implement appropriate solutions.Participate in technical discussions, code reviews and collaborative problem solving.Contribute to the design of new features and improvements to existing systems.Work as part of an Agile team, taking part in planning, refinement, retrospectives and other team activities.Contribute to improving our development processes, tooling and engineering practices.How we build softwareWe care about how we build software as much as what we build.You'll work with practices such as:Continuous Integration and Continuous DeliveryTest-Driven DevelopmentAutomated testingPair programmingCode reviewsAgile developmentContinuous improvementYou'll be encouraged to ask questions, challenge assumptions and suggest better ways of working.AI in our engineering workflowAI-assisted development is becoming an important part of how modern engineering teams work, and we actively encourage its responsible use.You'll have the opportunity to use tools such as GitHub Copilot and other AI-powered development assistants to support coding, testing, debugging and research.We're interested in engineers who are curious about how AI can improve development while still applying good engineering judgement, security practices and code-review standards.What we're looking forWe're looking for someone who has already worked in a professional software engineering environment and is comfortable taking ownership of individual features and technical tasks.You should have:Professional experience developing applications with Python.Good knowledge of software engineering fundamentals and Object-Oriented Programming.Experience working with SQL databases, particularly MySQL.Familiarity with AWS and cloud-based application development.Experience writing automated tests.Understanding of APIs, backend development and common software design principles.Experience with Git and modern software development workflows.Familiarity with CI/CD pipelines and Agile development practices.A structured approach to debugging and solving technical problems.An understanding of basic application security and secure coding practices.Good communication skills and the ability to work effectively within a development team.You don't need to know every technology we use. We value strong engineering fundamentals, curiosity and the ability to learn.Nice to haveIt would be useful if you have experience with some of the following:JavaDynamoDBAmazon RedshiftDocker and containerised applicationsMicroservicesJavaScript or TypeScriptData-intensive applications or data productsNoSQL technologiesMachine Learning or data analyticsAdditional AWS servicesExperience working with AI-assisted development toolsWhat you'll get from the roleThis role is designed for an engineer who wants to continue developing both technically and professionally.You'll work alongside experienced engineers and have opportunities to:Take increasing ownership of features and technical areas.Get involved in technical design and architectural discussions.Learn from experienced colleagues through pairing and collaboration.Contribute ideas that improve the way we build software.Develop your understanding of cloud, distributed systems and data-intensive applications.Share your own knowledge with the team as you grow.The kind of engineer we're looking for:We're not looking for someone who simply ticks every box.We're looking for someone who is curious, pragmatic and willing to take ownership. Someone who enjoys understanding how things work, isn't afraid to ask questions and takes pride in delivering quality software.You'll be a good fit if you:Enjoy solving complex problems and getting to the root cause.Care about writing software that is easy to understand and maintain.Are comfortable receiving feedback and using it to improve.Take responsibility for your work and communicate when you need support.Enjoy working collaboratively rather than in isolation.Are interested in learning new technologies and improving your engineering skills.Want to grow towards greater technical ownership over time.Your impactIn this role, success isn't just about the number of tickets you complete.You'll be expected to make a positive contribution to the team by delivering reliable software, collaborating effectively, learning continuously and helping improve the way we work.As you become more familiar with our systems and domain, you'll progressively take on more responsibility and ownership.