Should I Become a Software Engineer or a Junior Web Developer?

on Friday, April 1 @ 6:15pm

The software industry uses words like hacker, programmer, coder, developer, engineer, and architect to differentiate between similar-but-not-identical skill sets. These terms are poorly defined, which causes ambiguity, and their appropriate uses are still debated today:

Bloc offers two related Tracks for students who desire to learn these skills: a Full Stack Web Developer Track, and a Software Engineer Track. Since the definition of these terms can be ambiguous, let’s be explicit about what we mean. (Others may use these terms differently.)

fst-vs-set

If you graduate from the Full Stack Web Development Track, you’ll be able to develop and maintain web apps. You will learn two programming languages, how to create databases, advanced styling techniques, and more.

But there exists a class of problems not covered by this Track. As an example, consider this question: “Given a list of cities and the distances between each pair of cities, what is the shortest possible route that visits each city exactly once and returns to the origin city?” It’s called the Traveling Salesman Problem because a salesman must travel through many cities and make the best use of their time. There are many problems like this.

For example, Airbnb might want its users to create search queries like “Given a city and a list of Airbnb rentals, what is the cheapest way to rent Airbnbs for three straight months, using only Airbnbs that have a dishwasher, a washer/dryer, or both?” A junior web developer may not be prepared to write code to efficiently answer that question. A software engineer grad is armed with techniques and skills that make them capable of solving these open-ended and complex problems.

Here’s an analogy outside of software development: a Full Stack Web Development Track graduate is like a construction worker who builds bridges. Bridge-building is highly skilled labor, requiring lots of practice and knowledge of different materials, approaches, scenarios, and designs. A great bridge-builder can adapt their approach to different types of gaps, different weight requirements, etc. But ultimately this person is combining existing tools to construct something, not designing something new.

A Software Engineering Track graduate is like an architect or civil engineer. This person understands the theory behind everything – not just which metal to use where, but why: how to measure it and prove it. This person also understands at a more fundamental level how the sausage is made: what goes into the metal alloy, or how the specific curve of a support beam is important. They are uniquely qualified to design new bridges, and make more creative, iterative improvements on existing bridges.

The former will likely always be employable, at least in areas with bridges. But the latter is indispensable to society: without them, we can never evolve. Ultimately, graduates of the Software Engineering Track can solve harder problems, handle more complexity, and create more robust software.

Now that you know the difference, consider which track to enroll in.

Which Bloc Track Should I Choose?

Given your hard work and diligence, Bloc Tracks will change your career and your life. All Tracks teach professional-grade software development skills, include dedicated one-on-one mentorship from an industry expert, and come with exclusive access to Bloc’s Employer Network and Career Services team. Each Track follows the tried-and-true Bloc approach of building real software, starting with carefully sequenced and technically rigorous curriculum and transitioning to independent work at the end.

In the Full Stack Web Developer Track, you learn the critical skills for modern web development, including Ruby on Rails, JavaScript, HTML, and CSS. You practice these by creating a variety of web apps during your course. Graduates of this Track are qualified to work as junior web developers.

Here are the main differences:

fst-vs-set-chart

Compared to the Full Stack Track, the Software Engineering Track (SET) covers more advanced topics, and requires one thousand hours of additional work. Both are premium experiences designed to help you get a specific outcome: new skills and a new job. SET’s length provides its students with enough time to master the advanced skill set. Whichever direction you go, a Bloc Track will teach you to write outstanding software, improve your career, and enrich your life.

More advice on changing careers

Impostor Syndrome for n00bs

New coders, does this sound familiar? You’re finally getting the hang of programming. But then you overhear a conversation about a language you’ve never even heard of. Oh no! How could you call yourself a programmer if you’ve never even heard of Haskell? (How many programming languages are there?)

Easy, tiger. Impostor Syndrome is setting in hard. You feel like a fraud, even though your accomplishments show otherwise. Maybe you have successfully coded your first app but you feel like you’re pulling one over on the world by calling yourself a programmer. Or perhaps you enjoyed dabbling in Codecademy, but you could never actually make the switch to becoming a developer. Feeling this way is not only normal, it could actually be a signal of greatness.

Learning to program lends itself tragically well to Impostor Syndrome. There is so much to learn about programming, it’s impossible to be proficient in every aspect. Do you know how many people know everything there is to know about Ruby? Zero. Not a CS grad, not your smartest developer friend, not even the guy who created Ruby in the first place.

Rest easy, you’re not alone. No matter how experienced you are, you will always hear other developers talking about a new concept that you have never heard of. You may feel like you don’t belong in the conversation, but you do. Frame it as an opportunity to learn and become a better developer, and remember, everyone feels this way.

I can’t think of a group more prone to feeling this way than bootcamp students. The beauty of programming bootcamps is that they allow people with little to no programming experience enter and succeed in the field. Thus, if you called yourself a developer before you enrolled, you really would be an impostor.

At the most recent Bloc Career Talk, Bloc students shared their experiences with impostor syndrome. Hillary, a student in the Rails course, shares her experience:

I started as a technical analyst at a company that created a proprietary application that worked alongside SharePoint. For the first few months I imagined myself getting fired daily. Six months after starting I was promoted, and three months after that I was promoted again to a managerial position.

Hillary says she’s feeling impostor syndrome all over again as she sets out to land her first developer position, despite crushing her course and having four completed projects under her belt (way to go, Hillary!).

Okay, so there’s a name for this rotten feeling. Now what? As with many struggles, your first step is to recognize the issue. It’s only overwhelming and soul-crushing if you believe you’re the outsider. Think you really are the only person that feels this way? Try voicing your misgivings about your developer skills to a community of developers—I’d bet a lot of 1’s and 0’s that you’ll hear many others feel the same.

Once you realize that it’s a common struggle among beginners in any subject, the problem shifts from an internal judgment of yourself (“I’m just not a programmer”) to an opportunity to expand your skillset (“I have a lot that I can continue to learn”). The key to persisting through this forest of self-doubt, hopelessness, and anxiety is to accept what you don’t know, and challenge yourself to master it.

Then you can focus on progressing in your work to prove to yourself that you’re no impostor. If you’re facing an overwhelming problem, which is likely what led to all those “impostory” feelings in the first place, break it into tiny steps. Whether this is fixing a bug, writing an app, or getting to the end of your foundations, it will feel more manageable if you break the problem into pieces and celebrate the small wins.

At Bloc, students can connect and commiserate with fellow students on this topic and others in our Student Slack Community. During our Career Talks, students also get to fire their burning career switch questions at our captive Director of Student Outcomes, Courtland Alves.

This blog post is based on the recently hosted Bloc Career Talk covering Impostor Syndrome. Career Talks are bi-weekly seminars that facilitate discussion among Bloc students about the career search process.

Note: I struggled the entire way while writing this. Who am I to think I’m a writer? #impostorsyndrome

Impostor Syndrome for n00bs
How to Succeed in an Online Coding Program

Learning online is hard

As online education proliferates (read: online coding programs), its proponents and detractors develop increasingly stronger opinions on its effectiveness. Proponents tout online education’s low cost, accessibility, and flexibility. Students can learn anywhere, according to their schedule, and usually at a reduced expense. Detractors, on the other hand, cite high dropout rates and a lack of effectiveness. While both sides of this debate are correct, there is a strategy for succeeding in an online program.

Create a dedicated home office, and make it awesome

A dedicated home office doesn’t require a large investment. As an online student you’ll work from home most of the time. You must find a space that’s quiet, clean, and allows for ergonomic amenities. 100 square feet should be plenty of space to create an office. You can find high-quality office furniture at IKEA, or buy used from a site like craigslist. Consider using a standing desk, or treat yourself to an ergonomic desk chair. Better yet, you can buy a sitting desk and build a modular standing desk, so you can stand or sit.

After your desk and chair are positioned, build the rest of the office around them. Hang pictures or paintings and buy a small bookshelf to fill with inspirational books. Save your money for perhaps the most expensive things, like a computer and monitor. It’s essential that you have a capable computer, and I recommend splurging on a large monitor. You’ll need to have multiple windows open from time to time, and a large monitor provides the real estate to do this.

Finally, if you live with other people, ask them to respect your office space. A clean, organized, and comfortable office will set you on the right path for succeeding in an online program.

Immerse yourself

When you take an in-person program, immersion in the topic is inherent. You’re physically near your classmates which means that you’re likely to discuss the program and share knowledge. As an online student, immersion is not necessarily inherent – you have to force the issue. Your program will probably have a community – forums, chat rooms and mail lists – and while those are good places to hang out, you shouldn’t stop there. Subscribe to blogs and podcasts and find people to follow on Twitter. Get to know the lingo of your topic of study, and some of its key figures. It doesn’t matter if you understand everything right away, it’s important to become comfortable with the “language” you’re learning.

Study every day

In-person programs impose a routine of study because you have to go to class at specific times. Online programs offer more flexibility, so you have to manufacture a routine. Without a consistent and disciplined routine of study, you will not succeed in an online program. Whether you spend 15 minutes or 8 hours studying, you must study every single day. Create a habit for yourself. How long it takes to form a habit depends on the person, but you’ll know once you develop it because it will feel wrong not to study. Make sure that your study time is scheduled when you are at your mental best, and not when you’re tired or easily distracted. Find a method that helps you get into a relaxed zone, and make sure you schedule your study time around it.

Find meetups

The fact that you don’t have a classroom doesn’t mean you should avoid people and in-person interaction. An online program offers many benefits over an in-person program, but interaction in real life is something it can not offer. Fortunately, there are many options for meeting people in real life for many different areas of interest.

For example, if you’re studying to become a Rails web developer, there is almost certainly a Ruby or Rails meetup in your area. Join the meetup group, discuss your program with others, tell them what you’re working on and what you’re having trouble with. You’ll learn a lot from these experiences, and often in ways that are hard to duplicate virtually.

Rebase iteratively, and celebrate

No matter how great your virtual community is or how many meetups you attend, as an online student you’ll spend most of your time alone. It’s easy to forget how much you’ve learned when nobody is there to remind you. You must make it a habit to remind yourself. At the end of every day, you should rebase. That is, think about what you know, compared to the prior day. Think about the problem you’ve been toiling over, and that you finally solved. Even though these may seem like small wins, celebrate them! Treat yourself to a beer, order a pizza, or do something to spoil yourself for every little win.

Celebrating your wins is as important as embracing your struggles. If you focus too much on either, you’ll derail your progress. Develop a balanced mindset for both, and you’ll create momentum to capitalize on your wins, and grit to push you through struggles.

Will an online program work for you?

It certainly can, but whether it does or not ultimately depends on your commitment, consistency, and discipline. The strategy outlined in this blog will ensure that you succeed in your program, but you have to embrace every part. If you do, an online program will provide you with a quality education, at a reduced cost, and on your own schedule.

How to Succeed in an Online Coding Program