Lets first understand exactly what a role is. According to the macOS Dictionary it is "the function or part played by a person or thing". The distinction here is that a role is not a person or their title.
It is something a person takes on. For our discussion the role itself is a categorization of work that is to be performed or acted by a person. This means that a person could take on multiple roles potentially. As you can see below the roles of Staff Engineer & Engineering Manager are both played by our Partners.
The following are a breakdown of the Engineering roles at Uptech Studio.
- Tech Lead
- Staff Engineer (played by Partner)
- Engineering Manager (played by Partner)
No matter what role(s) a person is playing it is crucial that they are client focused. We are all responsible for understanding the client's business needs and helping to ensure we're always doing what's best for them.
For example critically thinking about feature requests and how those impact the user and presenting alternatives that may not be quite as effective, but much less costly in terms of development. This type of thinking and conversation is crucial to have with clients to make sure together we are doing what is best for their business at their current lifecycle stage.
We expect everyone within Engineering at Uptech Studio to be able to mentally step back from their technical tasks and critically think about the client's business.
The following are expectations we have of people playing the role of Senior Developer. These are intended to be used as a guiding light for the long term direction developers should be heading as they grow to play a Senior Developer within Uptech Studio.
- client focused
- deep experience in specific platform/tech stack with broad experience in other areas (T shaped employee)
- understanding of engineering processes and practices
- having a good understanding of how we do engineering here at Uptech Studio, agile processes, git processes, etc.
- have sound understanding and usage of application architecture
- architecting a solution within the scope of a framework
- architecting a solution outside the scope of a framework
- identifying framework architectural concepts and boundaries and where to apply framework architecture vs outside scoped architecture
- break down problem space
- ability to understand & collaborate with the Tech Lead around the system architecture, application architecture and further breakdown various libraries, components, services, etc.
- drive tasks/components/etc.
- identifying broken down components, unknowns, etc. and being the driving force to get them prioritized and resolved to aid in accomplishing the primary goal
Tech Leads have all the same expectations of a Senior Developer in addition to the following. Tech Leads high level focuses are around Architecture, Foundation, Mentorship, Development, and Process management.
- more client interactions because they are generally a Squad Representative
- run tech meetings
- primary point of contact for engineering questions & interactions
- working with Product to do planning for Roadmap and tasks
- architect, problem solve, etc.
- drive the technical side of achieving the client's goal
- breaking down the problem space at each of the levels
- monitoring progress
- removing road blocks for team mates
- course correcting
- have sound understanding and usage of infrastructure (AWS, terraform, kubernetes)
- have sound understanding and usage of backend & front-end development
Due to the current size of Uptech Studio there are a number of roles, Staff Engineer & Engineering Manager, that are strictly played by our Engineering Partners, Drew De Ponte & Claude Ciocan. It is possible that as the company continues to grow we may decide to have other people take on these roles. However, for the moment they are handled by the Engineering Partners.
Staff Engineers are intended to be a resource shared across the organization to help with standardization, best practices, mentorship, and contribution. Staff Engineers are expected to have all the same expectations of a Tech Lead in addition to the following.
- shared across the engineering organization
- advising tech leads and developers
- advising on architecture
- advising on Uptech Studio process
- advising on development process/tooling
- advising on coding best practices
- helps on specific tasks
The Engineering Manager role is responsible for being direct managers of the Developers & Tech Leads from an HR standpoint. We believe in servant leadership and the idea of trying to understand peoples interests so that we can find their best fit and growth path within Uptech Studio. This involves working to try to align people with projects that would most interest them or aid in their growth in specific areas of interest. We have found that when people are aligned with their interests they tend to do their best work.