What does it take to evolve from a bootcamp graduate or Junior Developer to a senior role like a Software Architect? Everyone says software engineering is a career of “lifelong learning,” but we’re breaking down exactly what that means during your first 10 years after bootcamp. With the help of Curtis Schlak, a Galvanize/Hack Reactor instructor with over 20 years of engineering experience, we’ll also explain what a Software Architect does on the job, how to get better at writing code, and how to become a thought leader at your company.
Software Architect is a general title. In the same way that architects design houses, buildings, and communities as urban planners; Software Architects do the same thing for software.
As a Web Developer works their way up to Senior Developer, the scope of their attention grows but remains fairly focused on specific portions of a code base. Once they become a Software Architect they start looking at the big picture: how do all the pieces fit together? Then, how do suites of applications fit together?
Modern Software Architects are: coders, designers, implementers, and leaders.
Other names for Software Architects are: Principle Developers and Staff Developers, which are high-level positions in companies like Google and Apple. At some organizations, there are dedicated software architecture groups. Software architects are essentially thought-leaders and implementation-leaders within the company with a validated vision of how the software should grow.
A Web Developer or a Fullstack Engineer works on an individual application or assigned a feature such as: implementing a Thumbs Up/Thumbs Down Widget. They’d write some frontend code, show it in a web browser or on an iOS or Android client, build the server side so that it can communicate with that, then it'll hook up to some kind of data store/database, like MongoDB or PostgreSQL.
It's a Software Architect's job to be able to figure out how all those pieces should work together, and do it in such a way that everything remains viable and maintainable. A Software Architect looks at the bigger picture, deciding how to design that Thumbs Up/Thumbs Down Widget so that it can scale up to 100 million users. Or how that one feature can influence the other parts of the system, so that when customers rate things with a thumbs-up it gets aggregated and becomes part of the "suggestion" pool for other customers, by using machine learning and deep learning.
This is influenced by the industry you work in, the time spent in that industry, and where you are geographically. A Software Architect can expect a salary between 2-3x their initial salary as a Web Developer.
Anybody involved in software design needs to understand:
We now live in a heterogenous software development environment, with the advent of cloud computing and microservices. Because of that, you can find five different programming stacks in one company – maybe one group is using GO, another using Ruby, another using Python. Software Architects have to be able to understand how all those languages and frameworks work so that they can then help the implementers in the teams pick the best choices; to be able to not only operate within their own group, but interoperate between all groups.
Software Architects are also responsible for defining the underlying shape of the infrastructure for the entire system. For example, you'll choose between Amazon SQS, Amazon SNS, Google Cloud Tasks or Microsoft Azure Q.
First 6 Months: Ramp up in your First Job! Normally, onboarding takes six months before a developer feels comfortable enough to be productive with no supervision. During these first 6 months, dive into your first job, learn to speak the language of the company, adopt the company culture, and learn about the problems that your software is solving. Recent bootcamp graduates who are in a new job are often shell-shocked; for the first six months, you may feel under water and just doing what needs to be done to stay employed!
Month 6-12: Start Contributing at Work. During the next 6 months, you'll start contributing to your team and thinking about how to make the product better. Start to specialize within your role and become an expert in the product that you work on.
Year 2-3: Branch Out and Develop Expertise. Once you have an understanding of software (programming languages, frameworks, libraries, databases, problem-solving), then you can start growing your expertise in a particular technology. Choose a language or framework that you're passionate about, then focus on the how, the why, the patterns and theory, behind it.
Year 4-6: Promotion to Senior Developer. You’ve spent enough time building software that other people have written and you’ll start to influence your team's perspective on how software should be built.
Year 7-8: Promotion to Team Lead. By year 8, you're ready to lead a team of developers. You’ll get more confidence in your role as a software engineer from promotions and title changes.
Year 9-10: Promotion to Software Architect! By Year 10, the scope of your focus widens and you’ll get to influence more of the application architecture. By now, you'll have the practical experience to know what works and what doesn't, a good amount of theory to explain why, then have the skills to articulate it to a variety of stakeholders. Modern Software Architects are coders, designers, implementers, and leaders.
Can a bootcamp grad become a Software Architect?
The path for a coding bootcamp graduate is the same as anybody else. Bootcampers have a leg up in the first few years of their career; they've gone through this intense programming experience and gotten a lot of practice that CS degree-holders don't get. Because they’re familiar with software development methodologies, they can hit the ground running and quickly become a contributor.
The more you learn, the easier it is to learn. And coding bootcampers specifically have learned how to learn. However, bootcamp graduates have a lot of practical experience, but relatively none of the theory that goes into a software engineer who eventually becomes an architect (or a manager, principle or staff developer, CTO).
Maybe a bootcamp graduate excelled at Python, PostgreSQL, or ReactNative. That's great, but it’s important to delve into the theory behind it as well. Understand the patterns being used; if you're using Django, you're probably using a model-view controller architecture – that would be a great theory to dive into. Understanding the craft, as well as the implementation of the craft, will fill in the gap for a bootcamp graduate.
Over the course of your career, the concept of “writing better code” changes with the scope of your role. As an entry-level developer, you’ll focus on small parts of an application: implementing features one at a time, getting direction from more senior members.
As you get farther along in your career and the scope of your focus widens, you’ll get to influence more of the application architecture, so the concept of writing better code takes on more meaning.
You’ll make it past the inflection point of where the tools themselves were a challenge; once you become comfortable with the language, framework, and tools, then you can start thinking about what you want to do as opposed to how you do it.
In Software Development, being a thought-leader is being able to lead a conversation about best practices. Public speaking is the number-one fear worldwide, but people can be influential in other ways, via videos, blog posts, articles, and podcasts. And you don’t have to be a thought-leader and influencer for all of society; you could do so just for your organization.
To be a thought-leader, you need practical experience to know what works and what doesn't, know a good amount of theory to explain why, then have the skills to articulate it to a variety of people, from the most junior of developers to team members who don't code.
Hack Reactor has designed these Professional Development courses for software developers. We’ve found that bootcamps prepare you for a job in software development, but that’s just the first step. We’re offering a blend of practical experience, computer science theory, and thought-provoking exercises to help developers blend their existing knowledge with new skills to become real thought-leaders.
For example, our Microservices and Orchestration course helps students go beyond the technologies and understand how to design a system that is scalable, robust, and maintainable for a microservice type of architecture. Then they learn how to take that and move it into a multi-cloud platform.
We have another course called Managing Up and Data Visualization, where you’ll learn how to communicate up to management, up to the business, then up to the c-suite.
Go to our website, check out the prerequisites for our courses, and find one that works for you.
Inside the new learning format and courses at Devmountain
How devCodeCamp prepared Air Force vet Andrew for a job at AWS
Deep dive into the UX Designer career path with Thinkful