I spent the first three years of my career at a small agency/consulting firm. We did a combination of standard application development and technical management consulting work. We had problems with code quality decline in older projects, issues with pushing out solutions quickly, and we had very poor feedback loops into our software.
We tried to write quality software and did plenty of testing. The biggest gap was that we sold cloud native architectures to our clients, but we never actually ran cloud native software ourselves.
One the companies strengths was that our Project Managers would interface with your Product Owners and business analysts to make sure we were building the right software for clients. And because our clients were bureaucratic cable companies we needed a lot of Project Managers to work with the clients’ bureaucracies. So we ran all the latest Scaled Agile frameworks and helped train our clients to use them.
I moved to one of the biggest tech companies recently and here we also have problems with code quality in older projects, but this company has much better feedback loops and takes a little more time on developing and vetting solutions.
Its funny that we spent a lot of time at my last job building continuous delivery pipelines for our clients, but I still never got to work with one. Here at BigTech we have full CD to production despite running one of the biggest websites in the world.
On the process side, Project Managers don’t exist at all. And there is a lot less ‘Agile’ process on my team. Engineering design is handled with more formal design documents and design review meetings. Designs are written in documents instead of being hashed out on whiteboards during a meeting and only partially documented after that.
A lot of people feel that they are underpaid or that their job sucks. But when I tell friends to update their resumes and start applying to jobs they dig in their heels. If you are not applying you don’t have options and don’t have any leverage to get a bigger cut of the money your employer spends on salaries. As Software Engineers we are constantly bombarded by job opportunities on Linkedin and other job boards. If you want to be lazy you could just respond to one of the recruiters that contacts you each week. I have gotten most of my interviews by cold applying on jobs boards. All you need is a good resume and a slightly customized cover letter. It takes me 15-30 minutes to apply to each job, including the time I spend customizing the cover letter. My resume is usually the same for each position because I apply to similar jobs.
How to pick which jobs to apply for.
When I am looking for jobs, I don’t just apply to anything that my credentials line up with. I am looking for particular companies in particular business sectors, that are using technology that can help me move my career forward. For instance in my last job search, I applied to local Denver startups that used technology that I am interested in. I did not apply to any companies that use Nodejs or C#/.NET as their primary stack because I don’t want to do more work with Nodejs and C#. I mainly applied to companies that had existing Ruby on Rails monoliths that needed to break them up and move them into the cloud. I also targeted companies based on their size and product type. My targets were companies with 50-200 software engineers and with software based products.
Where to find jobs.
I find jobs through the Linkedin, Glassdoor, stackoverflow and buildincolorado jobs boards. I search for ‘software engineer’ and the city I live in as my query. Then I go through around a hundred listings noting the jobs that look interesting and align with my tech stack. I make a list of jobs to apply to and once it hits around 10 in length I will spend an afternoon applying to jobs.