Before you start looking for a job

I’ve seen a lot of questions here about how to go about finding a job after completing a course, I wanted to share some thoughts based on my experience.

Why am I writing this? Because:

  1. I’ve been where you’ve been, and I wish I knew this several years ago
  2. I interview people and decide if they join my team (I’m a Software Engineering Manager), so this is what I look for in candidates

Let’s get the most common question out of the way. Can I get a job after completing a Codecademy course? The answer is very simple. No, you can’t. Why?

  1. You don’t have enough experience
  2. There are a lot of other things you need to learn that the course most likely doesn’t cover

You can get an internship, and maybe you’ll get paid a little. If you’re very very lucky, you might be able to get an entry-level job but the biggest factor is that the company has to be willing to teach you, groom you into a decent developer. Not a lot of companies are willing to do that because it’s expensive and it takes time. In case you didn’t know this already, all companies are under tight deadlines. All the time. So if they hire someone, they need that person to be productive immediately otherise they’re losing money. Nobody likes to lose money, so you need to be productive from day 1.

Bottom line, don’t count on finding a job after completing a course. So what do you do? You need experience with the following:

  • Installing software

Yup, you need to know how to install software. Sounds dumb? Maybe, but how many of you know that after installing a specific piece of software you need to update your PATH before you can use it?? Exactly. Do you want examples of that? Install Python or the latest JDK (If you took the Python course, you might already know this. If you didn’t, surprise!). Why do I bring this up? Because I just went through this with a new hire last week. She told me she couldn’t get the app to run, after troubleshooting her laptop turns out she didn’t update the PATH. Updated the PATH, problem solved. Do I want to deal with this as your supervisor? Absolutely not, I expect you to know these things.

While we’re at it, keep your OS up to date. The last thing I want a new hire to do is spend a whole day updating their OS so they’re able to install the latest version of something.

  • Command line or Terminal

You need to be proficient, if not master the command line or terminal. A lot of what you’ll be doing will happen here.

  1. navigation
  2. file management
  3. permission management
  4. software\package management
  5. resource management
  • Software dependencies

I provide all new employees with a step by step guide of what they need to install to run the project. Most companies don’t do that, so if they want you to pull the repo and run the project, you need to know what your dependencies are.

No, this does not mean that you have to memorize things or take notes, but you have to be able to figure it out. You can’t run an Express API without Node, and you can’t start a container without Docker. Most of the time error messages are very descriptive, other times you have to google it and use a solution someone else has found. You need to be resourceful as you’ll be spending a bit of time trying to figure out why something doesn’t work.

  • Version control

You need to know how to use git, how to manage branches, and adapt to different environments. The courses are very useful and simple for beginners but after that, you need to move on quickly. Whether you’re working at a company or working on your own, you need to know how to use git and have a good branch strategy. You also need to be able to manage different environments: dev, test, stage, load, prod. What code goes where, how to identify what version is in what environment. Create a hotfix branch and deploy to prod.

  • CSS

You need to know how to make things look pretty (unless you’re a backend developer), this includes:

  1. adjusting colors
  2. alignment for text, elements, pictures
  3. responsive design
  4. animations
  5. working with third-party libraries
  6. use master CSS classes (makes the code more efficient)
  • Professional development

During an interview, I always ask what they do to stay up to date. As I’ve said in several posts, you never stop learning so what are you actively doing to stay up to date? Listening to podcasts? Which ones? Follow blogs? Which ones? RSS feeds? Which ones? Webinars, conferences, more courses?

If you’re not actively expanding your knowledge, it’s a red flag for me. And don’t just blurt out something just to provide an answer, be honest.

  • Docker

Learn how to use Docker, it’s popular because it’s extremely useful. Don’t know what it is? Go find out. I’m not giving you any links on purpose because you need to be resourceful.

More than anything you need experience writing code. How do you get experience?

  1. Join a local meetup, put yourself out there. Most likely you won’t get paid, but what you need is to write code.
  2. Reach out to non-profits and offer your services for free. Non-profits are more likely to take on a beginner provided they don’t have to pay. You’ll gain experience, and it’ll look good on your resume.
  3. Most likely there is a site out there that has projects you can do or join. Can’t find one? Then make one! Do yourself a favor and make a site that provides projects for people to learn, it’s a good way to network.
  4. Get a Raspberry Pi. These units are very cheap, there are a lot of cool projects out there that you can replicate or just use your imagination and come up with your own. Add them to the site you created in the previous point while you’re at it.
  5. Don’t have a lot of imagination? Find Project Euler, that’ll keep you busy for a while.
54 Likes

This comic has been used for lots of things, applies here as well. Now stop reading this and go write some code.

18 Likes

Thanks for this! This should be stickied or something for people to come back to.

6 Likes

Thanks so much for the info! What about WordPress and things like Wix. Where do these things fit into the web dev world?

Thanks

My WordPress knowledge is limited, I used it for a personal blog that no longer exists as I didn’t want to keep paying for the domain and hosting.

In the dev world, it is a useful skill for freelancers. In a corporate setting (where you’re an employee) you’re not going to see it unless it’s a very small company or a non-profit. Why? Because it’s a cookie-cutter website builder as most of the building is a drag and drop exercise. The knowledge required is way less than someone who writes code. It is a lower cost, which means that the developer in charge of a WordPress site can’t be expected to have the same salary as a coding developer.

I don’t mean that as a bad thing, it’s just meant for people who know the basics but don’t really write code. It servers a very specific purpose. WordPress gives you templates for basic things like a personal blog or a small store, so your customer can be a bed and breakfast who wants an online presence or someone who builds crafts and wants to sell them (there are lots of other templates).

You also have a lot of plugins available, some are free and some are not. So if the bed and breakfast needs a calendar for guests to book their stay, most likely there’s a plugin for that. Install it, configure it, and you’re done. From the productivity perspective, it is simpler than coding it.

Pro #1: Your CSS knowledge needs to be very basic. All the templates are pre-built, you just need to pick one your customer likes.

Drawback #1: The templates are pre-built so you have limited access to color schemes. They are also limited, so as a freelancer you need to do some research to see who else is using that template. Are they a competitor of your customer? Do they sell something offensive to your customer? Can they be mistaken for your customer thus causing negative publicity?

Pro #2: Lots of plugins available. As I mentioned earlier, they provide lots of functionality.

Drawback #2: The plugins are continually getting updates, if you don’t keep everything up to date some of the functionality might break. As an example, I had a plugin that connected my Instagram account to the site, that plugin kept breaking and I had to reset the token to be able to see the posts on the main page.

Pro #3: Write your own plugin, potentially make some money out of it (this requires coding though…).

Drawback #3: The company or individual who made the plugin decided to stop supporting it, or delete it altogether. Now you have to find another one.

Drawback #4: You don’t have control over the code, so while you can install a lot of plugins for different things that you might need, you can’t customize it. If the bed and breakfast becomes so popular that it was purchased by the Hilton and now your WordPress website needs to connect to the Hilton’s website, then you need a custom API. I don’t know if that’s possible with WordPress, again my experience is limited.

That is why it’s more relevant for freelancers, you need to have a very good knowledge of what it can and it can’t do to determine how useful it can be for a specific client.

On the other hand, if you are a freelancer and your customer has an idea for the next ebay, or the next Amazon, be sure that you won’t be able to build that with WordPress. You need to code that, from scratch. There are plenty of frameworks and libraries that can help you, but you still need to build everything yourself.

Regarding freelancing, I gave a couple of presentations. The recording for the first one is here, waiting for @alissavigil to post the second one.

Regarding the backend, to my knowledge (I can be wrong) it’s very limited. If you need to build an API, I don’t think you can do it with WordPress. If you need to integrate with an API, not sure if it’s possible.

3 Likes

Ok thank you so much for the in depth response. It’s very handy to have advice come from professionals, nothing can replace it.

I will most definitely look into your presentation tomorrow as I am done working for today. That sounds like a great resource

Ya my main goal for now is to become a freelancer. So maybe this will be covered in your presentation, but if not, I was wondering do you even need to know to code for freelancing, because as it sounds, wordpress is more common for small businesses and freelance situations. Unless you are freelancing for a big company maybe.

Second I was even thinking working remotely is better then working as a freelancer because you get benefits and can work remotely. In the future a goal of mine might be working remotely for an American company while living in Europe but I don’t know if that’s possible.

Also ever since starting down this path there’s always been that topic of college vs no college. I am 20 with one year of college done. I am majoring in computer science. Is their a usefulness of a college degree in the web dev field? Let’s say I want to pivot into software dev at some point, maybe then it’s more useful? I have lots of smaller questions like this but don’t want to ask everything at once.

So maybe when you have time you can answer some of these questions, that would be greatly helpful and I would be very grateful.

Thanks,

Andrej

Do you have to know how to code? No, but that limits the type of clients you can take on. If someone wants a mobile app to go with their site, WordPress won’t let you do that. Also, big companies don’t hire freelancers, your clients will be limited to individuals or small companies. That means that the income you may receive is smaller because they will have smaller budgets. Can you make a living out of that? As I said in the presentation, if you want to be a freelancer coding is important but it’s the least of your problems.

Not a lot of American companies allow you to work outside the US, for security reasons. Even if you are American.

College is useful, but usually not for the reason people think of. I currently don’t use any of the things I learned in college, but it helped me develop an inquisitive an analytical mind. It shapes you for the future, and you might learn a thing or two. Also, some companies have a degree as a requirement for jobs, if you don’t have one then they won’t look at your resume.

I don’t mean to be rude, but if you don’t understand how a Computer Science major can be useful for your future given your interests, goals, and ambitions then you need to talk to the school counselor. You don’t want to spend time and money on something you don’t know how you’re going to benefit from.

If you want to be a freelancer, I suggest a double major in business and computer science. Then, you need to learn how to code. As a freelancer, you’re running a business where you’re your own boss. You need to balance assets and liabilities, develop business plans and marketing strategies, network with people and if you’re successful, hire people to work for you. It is not as easy as people think.

Is the double major required? No. Does it make your life easier? Absolutely. It minimizes mistakes while maximizing your budget and your strengths. It sets you up for success.

2 Likes

Ok thank you so much for the response!

So far I have built a list of things I need to learn. It goes like this:

-Digital Marketing
-Codeacademy/FCC courses
-Look for projects on freelance sites (I am beginner-intermideate level in terms of web dev coding languages… I learned html, css, javascript, and am learning python)
-Work on my own projects
-College
-Build my website for a beat store I am making / for my personal portfolio website… would wordpress be able to make a beat website where I need people to be able to download beats and listen to them?
-Wordpress
-Learn installing software properly
-Learn command line in depth (already know basics)
-Learn about software depencies
-Version control
-Docker
-web design

My main goal is to become a freelance web developer but looking at the job postings on upwork has left me very confused as to what to actually learn. I have been thinking that I should just follow codeacademy and freecodecamp curriculum, but again, after looking at the job postings, I see lots of skills I have never heard of.

Also the issue of wordpress vs handcoding is really confusing me, as I dont see the point of being a web developer if people can make their own websites these days really easily. My uncle runs a business and his website was made by him with wordpress.

How do I learn to build a website from scratch is their any good websites or videos on this? I would not know where to start coding or how to start.

Is my list of things to learn smart for my goal of becoming a freelance developer?

Again the upwork postings have left me really confused as to what to learn. Most of the skills are not stuff I find on FCC or Codeacademy but Ill have to look deeper. Also the skills seem to change drastically from job to job, so how do you specialize in one field while freelancing.

Is it smart to get a broad base of knowledge or should you focus yourself on one skill? I feel the latter is better, but it is proving hard to do.

I have more questions but cant think of them at this time.

If you have time to answer this I would be very grateful.

Thanks,

Andrej

WordPress was made for people like your uncle, he’s not a developer and was able to make a simple website he needed. Keyword simple. The templates that WordPress offers have the functionality he needs. If you want to make something like this, you can’t do that with WordPress, you need to write it from scratch. The APIs for overdrive are complex, and the searcing mechanism rivals that of Google. Searching their catalog efficiently is very complicated (hundreds of thousands of records by several keywords), WordPress will not be able to do such a thing. Overdrive has their own developers, I used to test that site, the library sites, the mobile apps, and the marketplace where libraries manage their collections. This is not something a freelancer would normally do, but it is something they should be able to do. I don’t have details on your project, so it’s hard to say if it can be done with WordPress.

Codecademy has a career path for web development, I haven’t explored it but it sounds like they teach you what you’re looking for. If you haven’t watched the freelancing recording, this is something you need to know: different projects have different requirements. Just because you know Javascript doesn’t mean that everything can or should be done with Javascript. As a freelancer, you have to learn many different languages and technologies. Want another resource? Go to the angular website and follow the tutorial for the tour of heroes app, that is an example of building something from scratch.

You said you know HTML and Javascript, you need to build on those skills. I said build, not master. Mastering a language is not a realistic goal. Once you have enough experience with Javascript, learn something else. The job postings will give you a guide on what is popular and what skills people are looking for. Don’t know what it is? Figure it out, Google is your friend. As I’ve said before, you need to be resourceful. Most of the problems I resolve on a daily basis come from Google searches, someone has run into the problem before. I’ve only had 1 instance where I could not find an answer and it took me a week to figure it out on my own, I did it by analyzing the problem and looking for solutions for something similar.

Don’t know what to learn first? Read this post.

Your ultimate goal is to have a broad base of knowledge, you just have to learn 1 thing at a time. I always get the impression that people are in a hurry, I need to know this so I can get a job. It takes time, I’ve been doing this for almost 12 years and I constantly feel that I don’t know enough. Can you take on little projects as you learn? Of course, but it will be a few years before you can be able to make a living from being a freelancer.

If you specialize in something it should be a subject like finance or digital media or transportation, you should not specialize in a language or technology because it narrows your opportunities.

6 Likes

thanks a ton…sir. for sharing a good information.

1 Like

Thanks so much, my dude. I’ve been wondering about how to plan my next steps after completing the courses.

Thank you for all the information!

1 Like

Do you think that more people get freelancing jobs after some hands on work at a real job or before getting a real job?

Some people say before and some people say you need to work somewhere before you freelance in order to gain knowledge

Thanks

…but how many of you know that after installing a specific piece of software you need to update your PATH before you can use it??

Does anyone have a link to resource which explains how to update the PATH via the command line? I don’t entirely understand when I might encounter this problem. For example, I recently installed NodeJS and I’m able to use it just fine, but I don’t recall having to update the PATH to do so.

Any input would be appreciated! :slight_smile:

I have 0 clue on how to use the command line, but on Windows, if you go to start and type in “edit the” this pops up
image
And if you click on it you see this
image
Click Environment Variables


And you see that. Go to system variables and select “Path”. Click “Edit…”
image
And you see this, click on “New” and paste the link to an application you have installed.
So an example would be pasting C:/Home/folder/my_app.exe.
Hit ok then hit it one more time and boom! Added to your path.

Maybe it automatically updated your PATH for you?

This is a Great read.

I'm on my 8th day and I found this was very useful.

Regards,

Billy

1 Like

Here’s a great primer on Docker btw for anyone who’s interested.

1 Like

OH SNAP!!! turns out there’s a discourse to be had here: Pick your fighter Kubernetes v. Docker GO!

Your insights as a Software Engineering Manager are invaluable, and it’s awesome that you’re sharing them here. I remember when I first started out, I was eager to jump into the job market right after finishing my courses. But reality hit hard - without experience, it’s like trying to swim without ever getting in the water. It’s a tough balance for them between investing in potential and meeting deadlines.