Individual Contributor
These are the different positions on the development team and what distinguishes them from each other.
Software Developer
Traits
- Productive in at least one area such as Front-end, Back-end, Mobile, CMS, or other.
- Can work with minimal supervision. Nobody wants to be micromanaged or do the micromanaging.
- Communicate with clients effectively. Clients can be daunting, but we need to present ourselves in a way that carries crispness and excellence that people have come to expect from Tallwave.
It should be noted that this is explicitly not a “Junior” role. We don’t really do that kind of thing here. Even our interns are expected to be able to deliver some results and know a thing or two.
Day to day examples
A Software Developer will participate in Sprint planning and provide feedback about stories.
They’ll take on a task filed in an issue tracker, code it up and submit a PR, and write good documentation around it (if necessary).
They’ll be responsible for implementing features within a large project, or an entire project of smaller scope. They’ll also file great bug reports when encountered.
Senior Software Developer
Traits
- Productive in at least two areas, ideally in more.
- Deep understanding of one area.
- Doesn’t require supervision.
- Mentors less experienced developers.
- Can serve as a Subject Matter Expert in sales calls.
- Can propose ideas, discuss, and disagree properly with clients, including stakeholders.
- Capable of public speaking and spreading the Good Word from time to time. This one especially is not a hard & fast rule because a lot of people fear this more than dying.
Day to Day Examples
A Senior Developer can run Sprint planning and grooming meetings.
They can also run a Storycarding or Feature Diagramming session, and write Technical Requirements Docs.
They’ll be coding a lot, and expected to have well factored results. This code should have intelligently written tests to go along with it.
A Senior Developer will be responsible for medium to large projects and be able to help distribute work within those projects.
Solutions Architect
Traits
- Can lead a team of developers. This is different from management.
- Can pick up a new technology and be productive fairly quickly
- Does a lot of non-coding stuff such as:
- Requirements gathering
- Customer management
- Sales support
- Manages clients, coaches them, and gets them on board with the Goal for the engagement.
- Makes their practice better.
- Demonstrates excellence in:
- Team dynamics
- Planning and estimating
- Breaking down complex features and helping more inexperienced developers to understand them
Day to Day Examples
A Solutions Architect will have a high degree of ownership in their stack. They’ll be able to help write out plans for how work should be done and set goals for a group to work towards.
SA’s mentor more inexperienced developers more often. This could be answering questions, pair programming, or running code reviews. They’ll help Software Developers grow to Seniors and Seniors to Solutions Architects.
They have more conversations with clients. Per the description, SA’s will be presenting project plans to clients, getting their buy-in, and working with the PM team to keep them apprised every step of the way.
Senior Solutions Architect?
This is still being determined. We are not quite there yet as a company for this to be a need that should be fully fleshed out.
We can say that whatever role this is will be much more highly consultative. The knowledge that this individual has is incredibly useful and will be of great importance to our clients. They’ll be able to tackle problems like “design a resilient micro-service architecture on AWS that can handle a few million sessions per month and can scale way beyond that.” without breaking a sweat.