Tips, advice, and guidance for changing your career.
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.
We had the chance to catch up with Rails Web Development alum Jack Pope, on what life has been like post-Bloc. Originally from Connecticut, Pope recently moved to New York after accepting a job as a web developer at Tsu, a social media company.
Before enrolling in Bloc, Jack was a photographer and internet marketer. As he got involved with the more technical aspects of his job as a marketer, Jack’s interest in web development was piqued. Although he had some experience with HTML and CSS, he found himself wanting more.
Determined to learn, Jack looked into on-site coding bootcamps in his area. While applying, he kept running into the same dilemma: the upcoming cohorts weren’t starting for another 4-5 months. He refused to wait that long; his mind was set, and he wanted to start programming immediately.
Jack found Bloc, an online alternative to the on-premise programming schools that allowed him to start almost immediately. According to Jack, “Bloc’s just way more practical.” He gave his 2-week notice, and started his course at Bloc.
After completing Bloc’s 12-week Rails Web Development course, he started freelancing and adding projects to his Bloc-built portfolio. “I definitely learned a lot at Bloc and it was a great foundation, but the extra time to work on real projects after Bloc was really important.” Equipped with Bloc’s 12-week course and eight additional months of freelance work, Jack was ready to get a web developer job. He started his job hunt in September, and accepted his offer at Tsu in December.
For Jack, the job hunt was tough but crucial for learning. As expected, there were many rejections before he found the job he wanted. When asked about what he learned from his job search post-Bloc, Jack said, “The interviews you go in for and get rejected from are still really useful. I wouldn’t have passed the interview for this job had it not been for the previous interviews I went through. In each interview, I picked up a different skill and learned how to answer questions in a better way. Even the ones you end up not wanting or getting rejected from are worth having because they’ll help you prepare for the right interview and right job.”
So, what’s Jack up to now? As a Connecticut transplant in New York, Jack is busy working at Tsu, eating all of New York’s delicious food, and exploring the city he now calls home.
If you are looking for a similar career change, check out our Software Engineering Track.
Sign up for one of our upcoming online info sessions to learn more.
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.
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.
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.
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.
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.
When starting a new career, you want to give yourself every advantage. If that career is in software development, then learning computer science fundamentals is that extra bit of oomph you bring to each interview. Most bootcamps eschew these fundamentals for more pragmatic skills. But as these bootcamp grads expand the talent pool, recruiters start to see a lot of the same credentials.
To help our students stand out, we’ve included Software Engineering Principles in our new CS-degree replacing program: the Software Engineering Track. We included the following topics after consulting with some of the best engineering companies in the world, including Twitter and Google. Read on to learn why these four skill-sets are critical to every software engineer.
The Data Structures section challenges students to build and apply hash maps, linked lists, stacks, queues, trees, and graphs. Interviewers test for knowledge of data structures because these constructs are the most commonly employed tools in software development. We dissect these structures to reveal how they work, and thus provide students the insight necessary to optimize their use.
Some data structures perform better than others, and each applies to specific scenarios. Using the wrong data structure can hinder performance, and relying on an unsuitable data structure can lead to illegible code and wasted effort. In one example, students build two versions of a favorite film organizer, each powered by a different data structure. This project demonstrates how choosing the right structure improves performance and utility.
Algorithms act upon data to sort, calculate, or otherwise manipulate information into a desired form. For example, given a set of 10,000 numbers, return the five smallest. We can devise infinite ways to perform this work, and each way represents a unique algorithm.
Students study known algorithms as well as their complexity to understand the performance cost of each. Complexity analysis goes further to assess the value of any piece of code: both the number of operations required as well as memory consumed. This is a critical skill to have, chiefly for those students hired by firms that work with large data sets. The cost of a small oversight is minimal when operating on 12 pieces of data, but enormous with 12 million.
Databases provide the storage backbone for nearly all applications. Frameworks such as Rails help abstract the database from the developer with Object-Relational Mapping (ORM). While beneficial to the seasoned coder, these abstractions can hinder a beginner’s understanding of how modern software reads and writes persistent data.
During the Databases section of the Software Engineering phase, we instruct in the Structured Query Language, more commonly known as SQL. We use SQL to build an ORM by creating tables, inserting data, accessing rows, and performing other common framework operations. Students will also learn how to support object associations and protect their databases from malicious injections.
For companies like Facebook, their database structure is critical. Facebook users across the globe access millions of data elements every second; a poor query or mal-designed schema can translate to countless dollars lost every day.
With a working understanding of Rails, data structures, algorithms, complexity, and databases, students will build a new framework. The Software Engineering phase requires this because it removes the last metaphoric road block that separates an amateur from a professional.
After completing this project, students are no longer mere users of a framework, they are its marshals. They understand how frameworks operate and need not assume how Rails brings their applications to life. This section empowers the idea that nothing is beyond a student’s understanding.
Comprehending framework design is critical, especially for employees at GitHub. GitHub once ran on a forked version of Rails which they modified to suit their product’s needs. Without the requisite knowledge, creating and maintaining a custom framework is extremely difficult.
At their core, Bloc’s Software Engineering Principles address the gaps of knowledge between a web developer and a software engineer. By dismissing the “magic” of software, students acknowledge that beneath every shortcut and library, more code exists. Students armed with this knowledge are more valuable to future employers, coworkers, and projects.
If you’re considering a career as a software engineer, then you may have heard how difficult it is to learn. But the right mindset can give you a significant advantage when learning and working in the industry. Software engineers who embody these seven character traits are valuable employees and productive contributors.
It’s what killed the cat, apparently, but that cat was a rock-solid engineer. Great engineers take responsibility for learning and exploration. They do not depend on their superiors to give them explicit direction for a new challenge – their curiosity guides them to reach their own conclusions.
At my first job as an engineer, I worked on an Android game. In the middle of working on a new feature, I noticed that some background tasks consumed an inordinate amount of time. After some investigation, I discovered that we relied on an Android API that took 50% longer on average to complete when compared to a simpler Java counterpart. I reported my findings and as a result, we swapped one for the other in all cases.
An engineer who seeks out new information and investigates the product may discover something new in the process. More importantly, the more versatile an engineer, the more valuable they become. Learn to serve your curiosities and feed them with research and experimentation.
All engineers require mental stamina. As a new engineer, you won’t solve the most challenging problems during your first attempts. In fact, you may have to spend days, weeks, or longer looking for a solution before finding one that meets both business and product requirements.
If you give up readily, you may not find yourself working on anything interesting, or anything at all. Engineers love solving problems and most refuse to give up until they work them out. Grit is what keeps engineers from throwing in the towel.
In 2014, the popular blogging platform, Medium, encountered a problem rendering underlines in Chrome. The author, Marcin Wichary, states that what was thought to be a one-night project turned into a month-long effort. After brainstorming seven approaches, the team settled on one and Marcin implemented it. Fixing something as seemingly trivial as a proper underline required incredible tenacity and the product is better for it.
This one is a no-brainer, but if you want to be a part of a functional team, you must communicate. If you’re shy or quiet, that’s fine. You can make up for shyness by communicating effectively in writing.
At Bloc, we rely on asynchronous communication – one out of every six employees works remotely. We use email, Slack, and GitHub to facilitate feedback and discussion. In these messages, we try to use as few words as possible and get to the point fast. This keeps our co-workers focused and eager to read and respond.
Your team needs to know what you’re working on and if they frequently ask for clarification, they may stop asking altogether. By communicating frequently and in brief but descriptive messages, your team will look forward to speaking with, and hearing from you.
Despite being another predictable member of this collection, attention to detail is vital for engineers and thus worthy of mention. If an employee at McDonalds applies two ounces of special sauce to your Big Mac instead of two and a half, will you notice?
As a software engineer, if you mistype even one line of code, it can crash an entire application. Details comprise software, and companies hire engineers to craft those details well. If you are someone that looks solely at the big picture, you have to learn to zoom in.
At Bloc, our students rely on our custom curriculum to learn the software trade. If we mistype a line of code or introduce a grammatical error, the student’s ability to learn the subject is significantly affected. We use grammar tools like spell check, linters, and Grammarly to draw attention to pain points.
Some call this, “thinking outside of the box,” but saying that would be yet another cliché and this post has reached its limit of those. When solving challenging engineering problems, the best solutions often come from adopting a new perspective.
If everyone took a crack at a problem from the same angle, they would ultimately arrive at a similar solution. But a diverse team whose approach varies among its members will generate more ideas and non-conventional solutions. You and your team will benefit if you broaden your ability to see things that others overlook.
To allow team members to share new ideas and solutions, we occasionally hold hack day events at Bloc. These hack days, like hackathons at Facebook, permit anyone in the company to work on anything. Thus, people who rarely interact with an aspect of the Bloc product can build new features or solutions that the dedicated team had not yet thought of. For example, our hack days helped us design a new payment flow, student portfolios, a student glossary for recruiters, and so much more.
Engineers collaborate, even when managers assign a task to just one engineer on the team. Team members review each other’s code before deploying it to production, and during these reviews, they may criticize or recommend significant changes to code written by their colleagues.
Engineers open to receiving critiques and feedback receive more support from their teammates, and the engineers that receive more support make bigger contributions to the product. More importantly, the product suffers if an engineer deploys code without revising it to meet the expectations of their peers. A good engineer is modest and willing to consider a different approach suggested by their team.
At Bloc, we have a thorough review process both on the engineering and curriculum side. Before we published this blog post, it received editing passes from two individuals that looked for quality content and prose. I was responsible for accepting modifications and including content suggested by my peers; the post is better for it.
It’s common for some engineers to isolate themselves and work without consulting their teammates. The industry refers to this proclivity as Lone Wolf Syndrome. Lone Wolves, much like the animals after which we’ve named them, do not survive for long. Wolves hunt in packs, and engineers must collaborate.
To be a productive engineer: seek help when needed, express yourself when overwhelmed, offer to help when you see peers struggle, and in general, engage with the group. No one on your team is excited when one person goes off and returns with unwanted or otherwise broken code. Acting as part of the team builds better relationships and trust among your co-workers.
If you believe that your personality is set in stone or that you’ve grown fixed in your ways, we recommend you read this article from Psychology Today. Those who study the mind believe that personality is flexible and with concerted effort, anyone can alter their disposition.