Software Engineer
Purpose of the role
The overarching purposes of the Software Engineer (SE) role are:
- To build foundational technical skills: The Software Engineer develops core software engineering capabilities through hands-on practice, learning fundamental programming concepts, testing approaches, and development workflows. This establishes the baseline competence necessary for a productive engineering career.
- To deliver defined work with growing independence: The Software Engineer successfully completes well-scoped tasks and features with appropriate guidance, progressively taking on more responsibility. This demonstrates they are becoming a reliable contributor to the team's output.
The central purpose of the Software Engineer role is to serve as the entry point for building a career at Redgate. It is the period of intensive, foundational learning where the engineer develops core technical skills, understands team dynamics, and learns how software development works in practice. The SE proves they can deliver work reliably whilst actively seeking feedback, asking questions, making necessary mistakes (and learning from them!), and accumulating the experience required to grow into a mid-level engineer.
About the role
A Software Engineer is typically new to their career or has some experience but is new to Redgate. They are focused on developing fundamental software engineering skills whilst contributing meaningfully to their team's work. Software Engineers are accountable for delivering smaller, well-defined pieces of work, often collaborating through pairing or ensemble programming to accelerate their learning.
Beyond writing code, the SE actively seeks to understand team processes, customer needs, and how their work fits into the broader product. They contribute to the team's capacity by sharing knowledge with teammates and gradually taking on more complex challenges as their skills develop.
Skills
Leadership
Leadership at this level is demonstrated through taking responsibility for one's own learning and beginning to contribute to team processes.
- Contribution to Engineering Improvement: Identifies problems with engineering team processes and investigates causes; proactively suggests minor improvements to processes or tooling; occasionally takes initiative to lead small team process improvements.
Mentorship
Mentorship at this level is focused on personal learning and collaborative growth alongside peers — actively developing skills through shared work and seeking guidance for the journey ahead. The outward focus of mentoring others becomes more prominent at the mid-level.
- Collaborative Learning: Works effectively with other engineers in pairs and while ensemble programming, both learning from others and contributing own knowledge to shared understanding.
- Knowledge Sharing: Actively shares new and existing knowledge with people on their team and occasionally with people outside their team, helping to build a culture of learning.
- Self-Directed Growth: Seeks guidance from peers to understand what to learn next, demonstrating ownership of personal development journey.
Technical Expertise
This is where fundamental knowledge is built through practical application. The SE learns core concepts by doing real work with appropriate support, and begins to develop the habits and ways of thinking that will carry forward throughout their career.
- Language Fundamentals: Understands the syntax and basic constructs of languages used on the codebases they work on, able to read and write code that follows team conventions.
- Design Patterns: Understands and follows basic design patterns and project structure without guidance, demonstrating growing ability to work independently.
- Problem-Solving: Uses appropriate data structures to solve problems, demonstrating growing ability to translate requirements into working code.
- Testing Practices: Proactively writes automated tests for all work at the appropriate level, preferring unit tests where possible but recognising when integration, system, or other types of automation are needed. Understands the different layers of testing and can choose appropriate test types based on what’s being verified and the trade-offs involved.
- Code Quality: Adheres strictly to team code standards and performs minor code cleanup and refinement within features they own to improve clarity and maintainability.
- Design Philosophy: Applies design philosophies such as POLA (Principle of Least Astonishment), KISS (Keep It Short & Simple), DRY (Don’t Repeat Yourself) as code is being written, building good habits from the start.
- Codebase Awareness: Navigates and reads unfamiliar areas of the codebase with increasing confidence. Performs minor refactoring within and beyond features they own to improve clarity, building a growing understanding of how different parts of the system fit together.
- Tooling Proficiency: Knows their IDE and can use code completion, auto formatting, and refactoring tools to write code with less effort, demonstrating efficiency in development workflow.
- AI-Assisted Development: Uses AI tools (e.g., Claude Code) to accelerate development whilst actively building foundational understanding. Ensures they understand the patterns, principles, and logic in AI-generated code before using it.
- Internal Systems: Can use internal tools (e.g., GitHub Actions, Check for Updates, etc.) as necessary, understanding how Redgate’s development ecosystem works.
Communication
Communication at this level focuses on keeping the team informed and building effective collaboration habits.
- Progress Updates: Keeps team mates abreast of progress on tasks, ensuring transparency and enabling others to help when needed.
- Technical Communication: Communicates technical blockers and solutions clearly to immediate team members and the Product Manager/Product Owner, seeking help when needed.
- Communication Channel Awareness: Uses available communication tools effectively in a hybrid working environment, choosing the right channel for the right situation (Slack, email, face-to-face, video calls) and understanding why that choice matters for clarity and responsiveness.
Emotional Intelligence
This competency focuses on building positive working relationships and demonstrating professional maturity in a collaborative environment
- Empathy: Displays empathy towards colleagues, showing consideration for others’ perspectives and circumstances.
- Positive Reinforcement: Gives unprompted positive feedback to colleagues, contributing to a supportive team culture.
- Ownership and Growth: Takes ownership of mistakes and proactively seeks feedback on both technical work and professional behaviour, demonstrating commitment to continuous improvement.
- Commitment: Able to commit to decisions even if disagreed with, demonstrating professional maturity and understanding of team dynamics.
- Collaboration: Works smoothly with adjacent roles, actively sharing context and information to support effective cross-functional teamwork.
Delivery
This is the competency of learning to deliver work reliably, where the Software Engineer gains experience in taking work from definition to completion with growing independence.
- Following Team Practices: Follows team practices to deliver software, demonstrating understanding of and adherence to established workflows and standards.
- Reliable Delivery: Successfully completes medium-sized, scoped pieces of work with increasing speed and predictability, showing growing reliability as a contributor. Requires less oversight on approach and can drive work forward effectively in collaborative settings.
- Planning Contribution: Contributes to task breakdown and estimation for features they own, demonstrating understanding of project planning and delivery risk.
- Collaborative Improvement: Uses pairing, ensemble programming, or pull requests to improve their knowledge and understanding, actively seeking feedback and learning opportunities.
- System Usage: Uses standard Redgate systems (including build tools and design systems) as appropriate, demonstrating familiarity with the development infrastructure.
- Production Support: Can independently handle simple, routine production alerts using documented playbooks. Works with Support colleagues to confirm reproductions or provide feedback on escalated issues, and assists senior engineers in investigating production problems, demonstrating growing operational capability.
Business Knowledge
This focus is on building foundational understanding of how engineering work connects to customer value and team objectives.
- Team Context: Understands team goals and objectives, able to see how their work contributes to broader team success.
- System Understanding: Understands the flow of data through the team’s primary system and its immediate dependencies, building knowledge of the technical architecture.
- Customer Awareness: Understands the needs of customers and knows the problems solved by the tools they work on, connecting their technical work to real-world value.
- Business Alignment: Makes technical decisions that align with immediate business priorities (e.g., prioritising high-priority bugs or addressing customer-critical issues), demonstrating understanding of business context.