So you've established yourself as a junior developer and are ready to start looking for your first job. Maybe you just finished a bootcamp or maybe you've completed a sizable portfolio of work on your own. In either case, you want to find a job as a developer and start establishing your career in the field.
But what kind of job do you want?
The first question you'll have to answer is where in the stack you want to work: the front-end, the back-end, full-stack, etc. But there is a second question that doesn't get discussed enough, which is: what kind of company do you want to work for?
If the variables you're considering are the technology stack and where in the stack you want to work, then there are certainly a lot of different developer jobs out there. But that question will probably be answered for you based on what technologies you have experience working with. I would also argue that it's not the important question to be thinking about.
For your first full-time job as a developer, you want to work somewhere where you'll learn a lot and be supported as you learn. You want to work somewhere that will fit your learning style and provide the environment you need to learn productively.
So the question of what kind of developer job you want is even more nuanced than just the technology stack they use and where in the stack you want to work. Different kinds of companies will offer you a very different experience as a junior developer: a job at Capitol One will be very different from a job at a startup that is just leaving the founder's garage. They'll offer different opportunities and trade-offs and a different learning environment as you start your career as a developer.
A Product Company
One of the first places you might consider working is a product company. Product companies are those that are building one or a few, probably SaaS, products: Spotify, Social Tables, WeddingWire, etc.
Working as a junior developer at a product company is a really great option. The work environment will likely be pretty well structured and it will probably feel like the company is pretty stable. The dev team could range in size, but will probably have a progression for you to work through as you grow from a junior to more experienced developer.
The biggest trade-off will be in how you spend your time. You'll probably just be working on one product - albeit a big one. The benefit of this is you'll get a depth of knowledge with the product and the tech stack it's built in. The downside, is you'll work on that one product for as long as you work for that product company.
A Consulting or Contracting Firm
If you're in a big city (especially here in Washington, D.C.), you'll likely have the option of working for a consulting or contracting firm. This can be a great option for junior developers: they'll offer a lot of structure and opportunity for advancement. Additionally, consulting and contracting positions will probably be the highest paid junior developer jobs out there. However, the hours will probably be the second longest of the types of companies on this list and the work will be demanding.
A potential upside is that you'll be able to change projects pretty frequently - like every 3 to 6 months, though sometimes projects can last 12 to 18 months. That means you could have the opportunity to get experience in different kinds of technologies and types of applications if you stay with that firm for a few years.
A Marketing or Design Agency
Agencies are similar to contracting and consulting firms, but with a couple of key differences. The best part of working at an agency is that you'll have the opportunity to be creative. That can mean anything from building a beautiful landing page to an interactive new homepage for a client.
You'll also get to see a lot of projects because - and this is a possible downside - your projects will have a short life-span. You'll finish one project and then move right on to the next one. The upside to that is you can build a portfolio of great work in a short amount of time.
The final trade-off to working in an agency is clients: they can be great and they can be awful, but they are never for the faint of heart.
For our purposes, a startup is a company that has just started and is still early-stage; we're talking about a company that is just a few years old (if that), and still hasn't raised a lot of money or acquired a lot of business.
A junior developer job at a startup will probably be the lowest paid, offer the least amount of structure and support, and probably require working the longest hours. The work will be stressful and fast-paced and hanging over everyone's head is the fact that at some point in the near future the company might run out of money.
So why work at a startup?
Well, if we took four junior developers and placed one in each of the four types of companies and came back six months later, I would be willing to bet that the developer working for the startup will have written significantly more code than the other three. I would bet they've written three to four times as much code.
The work will be stressful, but the developer would be involved in big, early decisions that shape the architecture of the application they're working on. They'll have to learn really quickly and likely without a lot of support, but they'll grow more rapidly than they might working for a different type of company.
So which is best?
Each option presents trade-offs. Which one is best really depends on you and your learning style and which environment will be the best fit. Do you like fast-paced environments without a lot of structure? A startup could be a great fit. Do you want to work on creative and interactive projects? Consider an agency. Want to work on something big for a few months but then move on to something new? Sounds like you could be a good fit for consulting or contracting. Want to stick with one product and work on different parts of that one product for a few years? A product company is probably your best bet.
After graduating from General Assembly's Web Development Immersive a few years ago, I joined a startup. There were some parts of it that were honestly miserable. I would regularly work 12 hour days, sometimes more. I made half what my friends made. While I felt stressed and overworked, I also felt I was constantly learning, constantly growing, and constantly outside of my comfort zone (in a good way).
That startup did run out of money about 8 months after I started working there. After that experience, it didn't take me long to find a new job.