Career Notes

Tips, advice, and guidance for changing your career.

What Companies Look for in Software Developers

Aaron Brager

on Tuesday, April 12 @ 8:22pm

Software developer positions are highly desired. Just as astronauts, Supreme Court justices, and Hogwarts professors must have a variety of skills and knowledge, software developers have a combination of technical knowledge and soft skills. This post explores the skills that many companies look for.

Familiarity With Multiple Languages

Read more...

More advice on changing careers

7 Things I Wish Someone Told Me Before I Started a CS Program

It will be difficult

All computer science programs are difficult. This is primarily because the underlying material is difficult to comprehend. Computer science encompasses philosophy, math, science, and logic. All of these can be both very abstract and very specific. Your CS program will be incredibly difficult in this respect. You will have to stretch your brain to grasp concepts that you didn’t even know existed, but you will be glad to have learned them when you’re done. You will have to wrap your mind around something as concrete as binary numbers to something as abstract as encapsulation. These small battles of understanding one particular topic at a time will help you understand the overall picture much better when you’re done. It will take you a long time to win a small battle, but this is why wars sometimes take a long time.

If you know the enemy and know yourself you need not fear the results of a hundred battles. — Sun Tzu

We will never understand the entire picture, but understanding computer science is a big piece to that puzzle.

You will fail, but you will also succeed

You will fail. You will lose some battles. You will not understand certain things. It will take you a longer time to understand certain concepts compared to some of your peers, but you might learn other concepts more quickly. Failure is an integral part of success. If you don’t fail, you can’t learn from our mistakes and push ourselves into the next stage. A sailor who ties a knot incorrectly that causes a sail to blow out does not stop sailing; that person continues to sail until that knot is tied correctly. Repeated failure leaves a more permanent mark in your mind than repeated success does. This is called progression. Success tastes much sweeter when you have repeatedly failed.

You will be working with analytical people, AKA: you will be working with nerds

This is a great thing! Nerds are a great type of people. Don’t be afraid to assimilate with your fellow nerds. Most nerds are introverted, but don’t be afraid to talk to them. Most likely, they want to talk to you as well! You might make a wonderful new friend or study partner, and these connections might be helpful down the road as you expand your career.

You will not be the smartest person in your program, but you have the ability to be better than the smartest person in some way

As is the case in most of life, you will never be the best. That doesn’t mean that you can’t be the best in a certain facet. Strive to compete with your peers in a respectable, reasonable way. You will not be the best, but you can be the best in at least one thing. Find that thing, set an example. It might be asking more questions in front of an audience, or solving a problem in a graceful manner while thoroughly explaining how you solved it. Find your talent and harness it.

The key to succeeding is to never give up

When confronted with a problem, most computer scientists will tell you that, “there’s a better solution”. The truth is, they’re often correct. For example, one could use an iterative search to search through a list, but a computer scientist would tell you you’re wasting your time. But the trick is that you can still solve any problem with brute force. Giving up is the only type of real failure that you can commit.

Your journey is your reward

Your journey starts in the marina. Your journey ultimately ends where you started. Along the way, you will experience both rough and calm seas. The reward is the wealth of experience and knowledge you gain. Your mistakes, failures and successes along the way will mold your character and build you into a tougher, more resilient person. You will also obtain a cunning ability to solve not just math and programming problems but also anything that needs more efficiency. When you are done, you won’t even care about your “merits” because you will be so excited with the new knowledge you have at your disposal to give to the world.

I work hard for the audience. It’s entertainment. I don’t need validation. — Denzel Washington

Computer science programs focus on theory over practical application

If you only learn what a CS program offers, you might graduate with very strong theoretical and analytical skills, but only minimal practical skills. To maximize your chances of getting a great job, ensure you’re also studying popular frameworks, platforms, and languages. For example, many employers expect software engineers to be familiar with modern tools like Ruby on Rails, GitHub, AngularJS, Heroku, Amazon AWS, etc. The combination of a theoretical foundation with practical skills will make you invaluable to any team.

If you’re considering a CS degree, you might want to compare it with Bloc’s Software Engineering Track which builds upon CS degree fundamentals with things like mentors with actual industry experience, an open source apprenticeship, the aforementioned technologies, and a whole community of people rooting for you every step of the way.

Go forth, and conquer!

7 Things I Wish Someone Told Me Before I Started a CS Program
Why Apprenticeships Are on the Rise

Ask any VP of Engineering or CTO, and they’ll tell you hiring talented developers is getting harder. Meanwhile, ask one of the millions of underemployed millennials, and they’ll say they are willing to learn, but can’t get their foot in the door. Apprenticeship was once a commonplace feature of the American economy, but for the last 30 years it has been in decline. Apprenticeships are the critical link to closing the skills gap for employers and reducing unemployment for millennials.

To understand why apprenticeships can bridge the gap, let’s take a look at the marketplace for technical talent.

Traditional Universities are Failing Us

traditional-uni

First, the gap between supply and demand for technical talent is widening. On the supply side of the marketplace for technical talent, we have universities. According to the Department of Labor, 400,000 new CS grads will enter the workforce between 2010 and 2020. In that same period, nearly 1.4 million new tech jobs will be created. That’s a shortage – a skills gap of – 1 million more jobs than graduates.

Second, even those students graduating in computer science, aren’t prepared for careers in software engineering. Universities care about helping students become job-ready. But that isn’t their singular goal. Many also seek to teach a liberal arts education and to publish ground-breaking research. Because of this, there is no singular focus on one goal. As a result, students graduate ill-prepared for industry. According to Brad Neese, director of Apprenticeship Carolina, employers are seeing “a real lack of applicability in terms of skill level” from college graduates.

For example, top tier university computer science curricula often include courses in advanced math, physics, compilers, and operating systems. When we surveyed engineers at top companies like Twitter, Facebook, Google, and Amazon, they told us they used less than 25% of their university education in their career. According to Rob Gonzales, co-founder of Salsify, “many ‘core’ CS courses really aren’t that critical for becoming very productive engineers. I’ve never had to write a compiler or operating system in my career, and the last time I thought about finite automata was 2001 when I was studying them myself.”

Meanwhile, few universities teach essential skills a software engineer will use every day. According to Mo Kudeki, a Software Engineer at Twitter, “Although I went to a top Computer Science program, there are software engineering topics that we never covered that are crucial to being a great engineer, like how to methodically debug something, and how to give and receive a good code review.”

All of these factors combined result in a tremendous mismatch between the skills with which American students graduate and the skills needed by employers.

Employers are Hungry But Ill-Equipped to Train

chalkboard

While employers are hungry to recruit great talent, their appetite for growing that talent themselves has been declining for the past decade. According to Lauren Weber of the WSJ, apprenticeships in the US have declined over 30% from 2003 to 2013.

Furthermore, even those companies that want to provision such training may be unable to do so. Training programs require experienced instructors. According to Gonzales, “you must have someone to manage the program full time, including doing daily coaching, code reviews, design sessions, planning sessions, one-on-ones, communication outside of the group to gather requirements, etc. This person should be respected throughout the organization, as getting the program started and effective is going to be a bumpy road that will draw on company resources even beyond the coach.”

Unfortunately, the shortage of technical talent has left most companies without the bench strength to fill existing headcount and also train a large pool of junior developers. According to Marcy Capron, the founder and CEO of Chicago-based Polymathic: “Companies don’t have an infrastructure for ongoing learning. We really need a guide to mentoring junior devs. Hourly consulting firms can’t afford it because you can’t bill mentoring to the client.

We’re Seeing Renewed Investment and Innovation in Technical Skills Training

pair-programming

So with universities failing us, and employers hungry but unable to grow their own talent, a new breed of apprenticeship-like programs have leveraged technology to deliver better outcomes, more affordably than ever before. Computer science bootcamps put students through compressed programs to prepare them for coding jobs. These bootcamp programs have found traction with employers and graduates alike. The first coding bootcamp was founded just four years ago, but Course Report estimates that over 150 bootcamps graduated more than 16,000 alumni in 2015 – a combined estimated market of $180M, up from $0 in 2011.

According to Western Governors University President Bob Mendenhall in the Washington Post “Neither accreditation nor regulation has caught up with the power of technology to impact both the quality and cost and accessibility of higher education.” And last month, Udacity raised $105 Million bringing their valuation to $1 billion, Dev Bootcamp was acquired by Kaplan, and Bloc recently announced a year-long Software Engineering Track, which includes a three month apprenticeship, before students start the job search. And now a slew of specialized apprenticeship programs are emerging.

Employees are also more open to non-traditional university education than ever before. According to a 2014 survey by Glassdoor, 72 percent of employees said they value specialized training over earning a degree. What’s more, 63 percent of respondents said they believe that nontraditional ways of learning new skills — such as certificate programs, bootcamps, webinars and massive open online courses — could help them earn a bigger paycheck. This growth for nontraditional skills training may be coming at the expense of graduate programs, with more than half (53%) of employees saying a graduate degree is no longer necessary to be offered a high-paying job.

What Should We Expect to See in 2016?

As apprentice-like programs cross the chasm from early adopters to early majority, we may see see savvy millennials foregoing the traditional 4-year campus experience in favor of a leaner hybrid, pairing community college with a technical apprenticeship that gets them into the workforce and learning on the job earlier and with less debt.

With the hype around coding bootcamps reaching it’s zenith, we may see these programs coming full-circle, as they begin adding-back curriculum covering the computer science theory that they once eschewed.

Why Apprenticeships Are on the Rise
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
Lies, Damned Lies, and Statistics: Coding Bootcamps and the Authenticity of Placement Rates

Authenticity

We’ve never formalized our core values at Bloc, but if you surveyed our employees you would probably see authenticity in the top three most cited responses — followed closely by swag and Batman. We’ll focus on authenticity today.

Authenticity is a word that we use very specifically, and we don’t use it to mean the same thing as honesty or transparency. The easiest way I’ve found to articulate the difference is to explain it in the context of someone asking a question:

  • Honesty is truthfully answering the question someone asked.
  • Authenticity is truthfully answering the question someone intended to ask.
  • Transparency is a bulk CSV export of your data.

Here’s an example: when we raised our Series A investment last year, a few of my friends asked me if I was now a millionaire.

An honest answer would be yes. On paper, if we had hypothetically raised a round with a post-money valuation over $5M and I owned at least 20% of the company I would have 20% x $5M = $1M ownership in a privately valued company and could technically be considered a millionaire.

The authentic answer would be no, not even close. The question my friends intended to ask was “do you have a million dollars of liquid cash that you can spend to buy me a Tesla Model S?” And the answer to that question is decidedly “no”, unless Elon would accept Bloc equity as cash.

... And Statistics

The developer bootcamp industry has an obsession with something called “the placement rate number.” It’s meant to measure a program’s efficacy by quantifying the percentage of graduates who successfully start careers as developers.

Bloc is one of few programs that has never advertised a placement rate. Prospective students are eager to ask us for this statistic, and I don’t necessarily blame them given how appealing it is to use a simple benchmark to compare programs. We don’t publish a placement rate though, as we believe it would potentially conflict with our commitment to authenticity, not because we lack confidence in the efficacy of our program.

When a prospective student asks us “what is your placement rate?” we could honestly say anywhere between 0-100% depending on how we qualify our answer. We could, today, say that 99% of our students find jobs after they graduate from Bloc in a way that is both technically honest and legally defensible, but not authentic or ethical. It’s not very difficult to game that statistic.

splorks

99% of our “splorkdents” find “globs” within 90 days of “schmanuating”. – Credit: SMBC Comics.

The truly authentic answer has nothing to do with statistics though. The question our students intend to ask is closer to “Does your program work?” or more specifically “Will your program work for me?” We’ve found a better way to answer that question: our Software Engineering Track comes with a tuition reimbursement policy for students who are unable to find new careers in software development after graduating, and now our students don’t have to worry about landing on the wrong side of a program’s 90% placement rate.

When there are programs with less than 20 grads touting a 100% placement rate and dozens of hidden qualifications, that number devolves from a transparent industry benchmark to a disingenuous marketing prop. While we look for authentic and quantifiable ways to evaluate program quality, I’ll encourage students to dig deeper: ask about the curriculum, background and experience of instructors, tuition and opportunity costs, and the hidden qualifications of these placement rate numbers.

Lies, Damned Lies, and Statistics: Coding Bootcamps and the Authenticity of Placement Rates