Have you ever wondered how the modern internet and its myriad of applications can seamlessly connect people across the globe? We have moved from raw manufacturing industries to online platforms that continue to grow and develop. Who are the innovators, the supporters and the drivers of the digital age? Let me introduce you to software engineers.
What is a Software Engineer?
By definition, a software engineer designs and creates software. This software ultimately solves real-world problems and creates tangible benefits for businesses. This ranges from creating a new digital offering and new ways of reaching customers through apps, to efficient platforms to transform an entire industry. At Polymorph, the software engineers are at the core of the teams that have produced industry-leading software for companies like OneDayOnly, Absa, Linebooker and many more.
Software engineering is a discipline that has a wide range of skill levels for its practitioners. As CTO of Polymorph, I employ software engineers from all levels with a clear understanding of the journey from junior to senior software engineer.
What is a Senior Software Engineer?
At Polymorph we believe that a software engineer has to constantly develop new skills and hone their existing skills. Every senior was a junior at some point in their career. At that time they had limited experience and required guidance to complete tasks. Tasks needed to be broken down. And it was hard to grasp the full context of a project. Advancing to an intermediate level meant that close guidance became unnecessary and the larger patterns in the architecture became apparent.
As an established senior, the engineer is capable of breaking down larger tasks for assignment; the architecture itself becomes a tool to direct tasks and effort. The senior has broad experience to assist others and knows the pitfalls and opportunities of various approaches and techniques. This comes down to hard-earned experience through working with the tools of the trade. This is not just a shallow breadth of experience but manifests as depth in skill.
This is someone who can think algorithmically, someone who dreams in databases and for whom code is just a way to express the idea of the system – that is a senior software engineer.
A Polymorph Senior Software Engineer
As CTO, I draw from my own experience as a senior software engineer to define what makes a great developer at Polymorph.
The type of engineer who works at Polymorph draws on both experience and expertise. This means they use their depth of skill in specific technologies to advance a specific project, but they also use their experience gained along the way to adapt, innovate, and remain flexible in their approach.
The depth of skill of a senior software engineer is often recognised beyond Polymorph in the tech community, certifications or speaking engagements.
At Polymorph we have always adapted our approach to the current state of the art. In addition, we constantly hone our skills with new technologies and techniques. Our current focus for expertise includes three board areas:
- Cloud-based infrastructure with a focus on AWS
- Flutter mobile development
- Angular web development
With the advent of cloud solutions and Flutter mobile development, some of our previous areas of focus have been surpassed. We are actively developing depth using these technologies that have replaced iOS and Android for mobile development and Java Spring Boot or Flask for server-side processing. The industry is progressing rapidly and it is unlikely that we would start a new project with these older technologies, simply because the new technologies allow more focus and flexibility.
When new technology surpasses Flutter and AWS, we will investigate and adapt.
This is the path that a senior software engineer has walked already. They have worked with PHP and Laravel, they have experience with Docker, they have coded in Flask, Node.js, dotNet and others. They have learnt the patterns from each and moved on to apply them elsewhere. Depth in only one technology does not necessarily make you a senior at Polymorph, it makes you an expert. It is the breadth of experience and the extent to which this has shaped your thinking that makes you a senior.
There are additional skills that often come with the journey to being a senior. We treat these as separate streams of personal development. These include tech leadership, mentoring and architecting.
Tech leadership means guiding others in building software well. You understand their tasks and how to set them up for success. You know best practices and how to avoid pitfalls and how to guide others on that journey. It involves responsibility and delegation and the ability to communicate well.
Tech mentorship is distinct from leadership. Here the focus is on the ability to transfer knowhow and teach a way of thinking. You help others gain perspective and guide problem solving.
The architectural component deals with the larger system blocks. Here the focus is on the big picture while maintaining the ability to drill down to details where needed. You think about security, scalability, adaptability, and practicality. The architecture drives the project plan and timelines but has to remain flexible as needs often change. There is no single true architecture, but rather every project has its own subtleties.
It is unfortunately commonplace in the industry for software engineers to get stuck on one technology. Previous success using a particular stack tends to mean that it will be used again and again beyond its useful life, taking the software engineer along with it. This means that the opportunity for exposure to new technologies is sometimes limited. At Polymorph we actively work against this. In order to grow as a software engineer, it is vital to get your hands on new technologies. This is the only way to get the breadth of experience after all. As an example, we are using AWS cloud technologies in multiple projects with multiple levels of experienced developers.
This approach ultimately develops our software engineers as multi-stack developers with multiple frames of reference. There is a “point of liberation” that a senior software engineer reaches. You are a senior when you have freed yourself from the technology that brought you there. At that point, any technology becomes a simple tool to be picked up or put down as needed.
At Polymorph there is an abundance of opportunities to work on new things, as well as a lot of guidance to help you do it.
A great senior software engineer at Polymorph is someone who is ultimately tech agnostic. They know a bunch of tech and can easily learn new things as required by a project, using the principles and experience they have.
In order to be an innovator, supporter, and driver in this industry, adaptability and flexibility are paramount. Combined with a passion for tech leadership, mentoring or architectural thinking, a senior software engineer at Polymorph has almost no limits for growth.
These are the people (not skills) we are looking for.