Challenges for a New, Young Developer - Part 2: College

Introduction

As a recent college graduate, I can still remember my college years quite well. Late nights spent finishing programming projects, cramming for final exams, and doing coursework will leave quite an impression on any student. While my degree program was quite academically intense, I did still have some time to call my own. Unfortunately for me, much of that time was spent trying to pay my way through university tuition and fees. During a time when the cost of higher education is consistently rising, there are many students that live with the looming threat of student loans and paying for school. As a newer developer, I was unable to have a smooth and steady college experience. With an hour-long commute for classes, I would sometimes be juggling full-time classes with full-time work and multiple jobs.

However, that was only the start of some of my challenges and hardships while going to school. For starters, some students that have work experience will find that most Computer Science degree programs in America seem like they are outdated or at least not entirely what employers are desiring. While many companies are in desperate need of web developers and DevOps programmers, the future developers are busy studying coursework focused on graphs, embedded or low-level systems, or calculus. This isn’t to say that these subjects are not needed—that would be far from the truth! But, perhaps, the curriculum should be looked at with more scrutiny and in concert with employers.

Challenges

This brings me to one of the first challenges as a young developer in college: the mismatch of skills and experience between studies and work. You may have heard it from others before, even: university teaches you the fundamentals on “how” to solve problems, not necessarily the modern tools or languages you will use. Suffice it to say, proponents that defend the contemporary curriculum that universities provide often argue that the ability to quickly learn new tools, technologies, and trends is taught through rigorous academic courses in the respective programs. While this could possibly be true, why not incorporate the new tools and styles into the fundamentals courses?

Let’s take a deeper dive into this. This is not an all-encompassing list, but you will likely find that most Computer Science programs have a long list of requirements that take up a majority or the 120 credits for an undergraduate degree. Most accredited universities provide courses from the following list of categories:

  • Mathematics (such as Calculus, Linear Algebra, Discrete, Statistics)
  • Lab Sciences (such as Biology, Physics, Chemistry)
  • Systems Programming (including C, UNIX/Linux usage, Assembly, Operating Systems)
  • Traditional Computer Science (formal Models & Methods, Algorithms)
  • Object Oriented Programming / Programming (Java/C++, Python, Data Structures)

Photo by Mikael Kristenson on Unsplash unsplash-logoMikael Kristenson

Now, many universities will offer courses that are beneficial to a student trying to enter the workforce. However, these courses tend to be electives and are not explicitly required. These offerings include Database programming, Web Applications programming, Software Engineering studies, Mobile Application programming, AI, Game Design, and much more. The problem with this is that, as stated prior, the Computer Science programs are typically difficult and it is fairly common for students to choose easier electives just to get an easier degree path. Of course some students are more studious and omniscient; these students would know that it would be in their best interest to supplement their degrees with useful skills. However, that is the issue—many students do not know what is best for their career nor could have the necessary amount of time to research it. While they go to school, many Computer Science students are busy cramming for exams, working long nights to get their programs to work, or struggling to understand academically-intense foundational computer science algorithms, theories, mathematics, or models.

Some might say that this is what typically determines “successful” students from “unsuccessful” students, but it should not come to that. With the rising cost of higher education, many students also work part-time/full-time, live off campus, and have many other non-school obligations to juggle. The new, young developers currently going to school, without a doubt, have a very difficult and stressful time.

Uncertainty

Picture yourself as an inexperienced developer taking classes at your local university. You’ve grown up probably being told that you’ve picked the right field—the statistics simply do not lie. However, after your sixth lecture on traversing and rotating a Binary Tree, multivariable calculus, and the time complexities of a plethora of search algorithms, you’re exhausted. You are probably finding yourself wondering, “surely I am not going to have to do this when I get a job.”

The funny thing is… you’re probably right! But, still picturing yourself as an inexperienced developer, you find yourself thinking of “when I get a job.” As one of the fastest growing career fields, there must be a winding line of employers waiting to hire. While there are many companies looking to hire, you’re probably finding that the skillset you’re learning at school is almost irrelevant in getting you the job.

You try to network and make connections, but it seems like the more extroverted developers always get the job. Chances are that every single developer has gone through this in their life: somebody else getting a job even though they may not be the best fit. So, what should an inexperienced developer do?

Photo by Markus Spiske on Unsplash unsplash-logoMarkus Spiske

The short answer is to never stop trying and to try harder with each passing day. With each passing day, time absolutely needs to be set aside studying industry trends and looking at job or internship opportunities. The time you spend at school is important, but one of the main reasons to go to school is to help yourself look more appealing to potential employers. If you want to stand out in a crowd of other new developers that are graduating from college soon, you need to see what is in demand in the industry.

In-demand skills change and fluctuate with the changing shifts of technology: Five years ago, the most sought after skills were different than now. In the following list, you may notice that in comparison to the previous list taught in classes, many of these topics are not required to graduate. Here are some general skills that will make you stand out as of the date for this blog post:

  • Knowledge or practical experience in DevOps enabled environments
  • Experience in all areas of a full stack (front-end, back-end);
  • Web application development (Python [Flask, Django], Java [Spring Boot, JSPs], MEAN Stack)
  • Amazon Web Services experience (specifically knowledge of core tech like EC2 & S3)
  • Database programming fundamentals (MySQL, SQL vs. NoSQL, understanding entities, rows, queries, and an ORM like Hibernate)

If you want to stand out in a crowd of other new developers that are graduating from college soon, you need to see what is in demand in the industry.

You might be asking yourself then—if I am inexperienced, how can I demonstrate that I meet these qualifications? There are several ways to do so, but they are all time consuming for those with a busy schedule. In short, if you need showing experience, you must show your knowledge by making applications. You must show that you know the fundamentals, that you know how to document your code, and that you are willing to go the extra mile.

From talking to those in the industry that oversee hiring newer developers, it is very common for them to look at applicants with no real job experience. These ‘green’ developers are always looked at, but only those that show their merit will be pursued. If you are a newer developer in college looking for a job to get you experience, here are some things that you can do:

  • An active Github profile, showing high frequency of commits to various projects over a long (1+ year) timeframe
    • Prefer to see a mixture of team repository projects and lone projects
  • A professional LinkedIn profile & resume (both of which deserve their own dedicated blog post!)
    • You should try to connect with many people of all types of industries, though other software engineer connections are preferred.
    • There are several unique, professional, and appealing resume designs online that you can find inspiration from—learn from the best!
  • Open source project(s) contribution(s) (ties into Github)
    • This will be very hard for newer developers to do, but not completely out of the ordinary or impossible… it will involve networking and communicating with the main developers that maintain the open source library or repository.

You must show that you know the fundamentals, that you know how to document your code, and that you are willing to go the extra mile.

Photo by Markus Spiske on Unsplash unsplash-logoMarkus Spiske

Closing Remarks

Unfortunately, there’s not a cookie cutter process to follow to get a job as an inexperienced developers. If you know somebody like this or are yourself new to it, chances are you will experience heartbreak. You will experience false promises, and it will be tough. It is truly difficult to hear a recruiter or HR representative promise you will get a phone call response, but not hear anything from the company ever again. You will go to interviews thinking that there’s no way you couldn’t get the job… only to learn later that somebody else got it.

To make it worse—you could be doing everything right. You could be doing things like the STAR method in your interviews to perfection (a topic for another blog post!), be an active contributor to multiple Github repositories, have the best grades in your courses, and be a hard worker. However, none of this will guarantee that you will be able to get a job as a newer developer. A combination of bad luck, bad timing, or maybe just fate can sometimes deny you a job. In the end, the most important thing for you to do if you are in this situation is to never give up and to keep improving. The field of software engineering is an extremely in-demand career path; there will always be room for people that a hard, honest workers!

It is safe to say that there is obviously a disconnect between the classroom and the workforce when it comes to software development. Unfortunately, as it stands now, up-and-coming developers must make up for the difference in their own time between tough coursework and an increasingly stressful period of their life.