Start Here! What To Learn Before Applying for Jobs
As I spend time working with and mentoring up-and-coming developers who are excited to launch their career, by far the most common question I receive is something like this:What skills should I learn before applying for a job?And I totally understand!The sheer quantity of languages, skills, and tools that are being used in the real world are absolutely staggering, and it can be downright overwhelming to know where to start.
A Four-Step Plan and A Promise
I started tinkering with websites back in 1995 when AOL and dialup modems were how we all got online. I've been doing this a long time! And over the 20+ years of my career, I've interviewed a lot of would-be developers who were applying for junior level positions.Based on all those interviews, and on the people who we thanked and sent packing vs the ones we thanked and hired, I'm going to map out a very precise plan for what skills you should learn before you start applying for jobs.And, with that plan, I'm also going to make you a promise. Here it is: If you EXACTLY follow the five steps I'm about to outline below, I promise that when you start applying for jobs, you will get noticed and you will get invited for interviews!I can't promise you that you'll get the jobs because how well you perform in the interview is up to you. But I can at least promise that you will attract the attention of companies looking to take a chance on a junior developer.Let's get to it! Here's the five-step plan:
Step 1: Think-Up a Web-based App You Want to Build
By far one of the biggest mistakes junior candidates make is that they don't actually CREATE anything!I can't tell you how many young would-be developers I've had sitting across the interview table who have taken a few classes but who have not actually done anything with the skills they (supposedly) learned.Once you have some job experience, then the work you did at those jobs will count as your portfolio. But when you are applying for a first-ever job as a software developer, you need to be able to say, "Look at what I built! I did this, all by myself! From scratch!"It really doesn't matter what you build. Make it a website for your favorite hobby. Make it a simple online store for a fake company that doesn't exist. It doesn't matter! But what does matter is that it has these three components:
It should have a User Interface written in HTML using CSS with some JavaScript. It does not need to be fancy or look amazing. Obviously, don't make it look sloppy and lazy. But we all know that developers are not designers, and that's okay. (Added bonus: Make the UI responsive with Bootstrap.)
It should have a database. The app should take input from the UI and save it in the database. And then it should retrieve it from the database and present it back on the UI. I would recommend either MySQL or SQL Server. They are both very similar, and if you know one, you know the other.
It should use a server-side language to tie together the UI and the database. I would stick to one of the big three: Python, Java or C#. It honestly doesn't matter which. All three are in crazy hot demand. Personally, I'm a C# guy so I'm partial. But really, it doesn't matter.
Once you have an idea of the app you want to build, then move on to the next steps. And based on those three criteria, the next three steps won't come as a surprise!
Important Tip:
As you take classes, use the skills you are learning to build your app at the same time! Do it AS you are taking the class. Using the skills you are learning and immediately adapting them to your own app will absolutely skyrocket your understanding and work to cement these skills in your long-term memory.
Step 2: Learn SQL
Starting with the database may seem backward and illogical. And I get it. It's not where most people start the learning process. And in fact, the vast majority of junior candidates I've interviewed have never taken a class in SQL, and can't even explain what a database is or how to use one. They just don't really seem to think about them.But over my career, I've come to learn that the data is the most important part of any application. You should think of it as the foundation of your app.Reminder: As you take classes on either MySQL or MS SQL Server, don't just follow along with the material provided by the class. Actively think about how to model the data for your own application and then build your database accordingly. Your goal should be to have your database for your application 100% complete by the time you finish your database classes.
Step 3: Learn a Server-Side Language
We already touched on this, but I'll say it again. It ultimately doesn't matter which language you pick. But it may be worth investing a few google searches into picking one. Do some searches like...
"What kind of companies use Python"
You'll find that Python is the preferred language for most of the Silicon Valley giants. If those kind of companies are where you want to work, then Python is a great choice. But if you like the idea of smaller and more personal companies, then C# or Java might be a better fit.
"Is C# easier to learn than Java?"
I'll actually save you the Google search. The answer is "Yes!"
"What is the most in-demand and widely used server-side language?"
That's easy. Java. But "most in demand" doesn't always translate to "the best language for you." There is still a massive demand for C# developers, and for many reasons, it's a much easier language to learn and use.
"What server-side language pays the most?"
Usually Python. But as I talked about in this Q&A post (What Language Pays the Most) money should not be the only factor you consider.
The most important thing in making a decision about which language to pick is this: Just pick one!Reminder: As you take server-side classes, immediately work to adapt what you are learning to your own application. By the time you finish your server-side courses, you should have completed the code for your own application.
Step 4: Learn Front-End Development
Unless you want to be a UI developer, you can spend the least amount of time on this step. It's okay to learn just enough to make your app presentable using HTML5, CSS3, and a little JavaScript. (And for JavaScript, I would suggest using JQuery, which is just JavaScript on steroids.)
Most "full stack" developers I know still leave the heavy UI work to designers and know just enough about front-end tools to get the job done. And so long as you know the basics, many employers will be happy to let you learn the rest on the job.
Reminder: Don't forget to build the UI for your own application as you are learning!
Alright!
By the time you've finished these four steps, you should have a working application that will be an awesome portfolio piece when you start applying for jobs! But, there are just a couple more things I would like to recommend. If you do these, I absolutely guarantee that you will impress the socks off your future hiring manager.
Bonus Tip 1: Host Your App on Azure or AWS
The cloud is pretty much everything these days. Everybody is doing it! If you can show your future employer that you took the time to learn how to migrate your app into either Azure or AWS, it will go a heck-of-a-long-ways to setting you apart from the other candidates who are applying for the same job. Bam! You win!Both services offer some free up-front credits to get you started, which should be plenty to start hosting your first, fairly simple app for free.
Bonus Tip 2: Learn a JavaScript Platform
The immense popularity and widespread use of Javascript platforms make them hard to ignore.My personal experience is these platforms are a skill that employers are willing to teach the right junior developer on the job. So long as you can demonstrate a solid core understanding of how web-based applications are constructed, and have a portfolio app which you created to prove it, you should be fine.That being said, if you want to invest a little extra and effort into building your front-end in one of these popular platforms, it will only make you stand out that much more from your competitors.The three most in-demand are, in this order:
Angular
React
Vue
Which one you pick is up to you. They are all similar in some way and different in others. And they are similar enough that if you learn one, then switching to another won't be hard at all.
Pitfalls to Avoid:
As I read posts on Reddit, or receive emails and private messages from up-and-coming developers, here are a few very common traps I see people falling into:
Becoming Distracted
There are SO many technologies and tools out there, and most of them seem sexy and cool. And you probably will hear someone say, "Oh man, people who know [skill XYZ] are KILLING it and making HUGE money!" And so you'll feel this powerful urge to stop what you are doing and run off to find a course on that technology.Don't do that! I promise you, if you stick to the plan I outlined above, you WILL get interviews, and quickly!
Thinking You Need to Know Everything
"But I don't know [skill ABC] so I'm not ready to start applying for jobs." That's an excuse I hear a ton. If you have a basic understanding of the three skills I outlined above (UI, Server-Side, and Database), and a portfolio piece to prove it, you are ready.See above about not getting distracted!
Becoming Discouraged
I can predict that at some point you are going to question yourself. You are going to think, "Maybe this isn't the right career for me. This is harder than I thought it would be."Yeah, it IS hard! And that's exactly why not everyone does it, and why developers are in such hot demand! Please, don't give up. Keep pushing. Answers and help are out there. And when you push past the roadblocks, solve the bugs, make your application work and land your first job, I promise you, the thrill (and the paycheck) will be worth it!
You Got This!
You can totally do this! And I'm here to help. I'd love to hear from you. Please, feel free to send me a note via the Contact page. I promise to respond!
Going Deeper
Take your career-launching knowledge to the next level. Here's a preview of the tips I share in my book:
How to launch a carer in this industry when you don't have a Computer Science degree. (And how to turn the lack of a CS degree into an advantage.)
Money. What you can expect to earn, and how to rapidly increase your salary after landing your first job.
How I found a job that let me work from the Caribbean for a year, and how you can too.
The pros and cons of the three most common software engineer career options
1) Entrepreneurism
2) Contracting
3) Full-time employment
How to find an employer that matches your personality, lifestyle, and career goals.
How to gain experience when you don’t have any.
How to create a killer software development resume.
Tips to ace your interview and land your first job.
How to get promoted, and what to expect when you become a manager.
After 20 years of software development, I created this website to help coach people who’d like to launch a career in this industry. I’d love to hear from you! Thanks for being here.— Casey Crookston