I've been talking to a lot of aspiring developers lately about their biggest struggles with getting their first jobs.
In those conversations, I've heard a lot about people struggling with the mental side of learning to code and leveraging that knowledge into a job.
- How do I know when I've learned enough?
- I'm struggling with the confidence to know that I'm ready
Our minds are complicated beasts, and mindset struggles like these are very common.
Rather than give a concrete answer to these questions, I want to talk about shifting the way you view web development itself, as well as the process of launching and building a career in a way that will potentially make the questions themselves irrelevant.
One, because I don't think there is a concrete straightforward answer to this. Mindset issues are tough because we all have our own experiences, personality traits, and biases that lead us to believe certain things.
And two, because shifting the way you view the development industry and the job-hunting process will have far-reaching positive side-effects to the way you go about launching and growing your career.
For some people, these questions are stemming from a confidence issue of not feeling ready enough, for others they are coming from a place of just genuinely not knowing when the right time to start looking for jobs is.
I think for most it's probably a combination of both, which then feed off of each other and can cause all kinds of doubt and anxiety to creep in.
Add in getting rejected or ghosted by employers, and you have a recipe for immense frustration.
So what can we do about this? Let's talk about a few mental shifts and then get into some of the practical things you can do to address these issues.
Rejection is inevitable on the road to your first job. There are certain things that are just outside of our control.
Two people may follow the exact same process to get hired and for one person it may take a week and for another, it may take 6 months.
Don't waste energy focusing on the things that are outside of your control, instead focus on the parts you can control, stick to them consistently, and make that your measure of success.
For example, you cannot control exactly who will read your resume, what their biases are, what kind of mood they are in, who else has already applied to the job, what order they see your resume in, and countless other little things that all go into effect in a hiring process.
But you can control maximizing your online presence so as many people see you as possible, you can control optimizing that presence and your resume to give yourself the best chance of standing out, you can create a compelling portfolio so when someone comes across it, you convince them of your skills.
Getting a job is this balancing act between luck and action. Yes, luck plays a factor in almost everything, but you can drastically influence the amount of luck that comes your way by taking action on smart strategies.
Nobody has achieved mastery of coding. As soon as you think you have, you stop learning. Embrace being a lifelong learner.
Not only is this the way to make sure you continue improving and continue learning, but it's the most impressive attitude to have for potential employers, especially at entry-level jobs.
Employers will of course expect some level of technical skill, and having experience can definitely help demonstrate that.
But every single employer I've talked to has said that for a junior dev, personality traits like enthusiasm and being willing and eager to learn and be coached are as important, if not more so, than technical skill.
Embrace your newness by becoming a lifelong learner. Whenever you feel inadequate in your code, remember a few things.
Everyone (and I mean everyone) feels that way sometimes, even people who have been doing it for years.
I've been coding in JS for 6 years professionally, not a ton of time but a decent amount, and I still have to Google stuff every day, and still feel totally inadequate when I read and watch some tutorials and courses online.
Know that those polished tutorials you watch and read and courses came with tons of preparation, frustration, Googling error messages, asking questions, and self-doubt.
Imposter syndrome is a sign that you know you still have a lot to learn. Temper that self-doubt with the confidence that comes from putting in the work and meet in the middle at humility. As long as you are honest and continually working on improving, you're good and you are not an imposter.
So when you think that you don't know enough to start applying for jobs or are trying to wait for that magic moment when you feel confident enough to do a certain thing, know that it will likely never come.
You have to take action before you feel ready in order to develop confidence, more on this below.
A lot of people see the road to landing a job as a step-by-step progression where each stage is separate and one can only be started one the previous stage is finished:
- Learn to code
- Start applying
- Get a job
I think this is where a lot of the "how do I know if I know enough?" questions stem from.
But let's look at this a little differently. Instead of viewing this process as a set of separate stages, look at it all as one continuous process that you are always working through.
So instead of learning and then applying until you find a job, you should be learning, building your portfolio, writing content, networking, and applying all at the same time, continuously.
That sounds like doing too many things at once, but each of these things can work together and help the others.
Here's what I mean.
Going through tutorials is great, but you are really only learning when you build something on your own, building something on your own also allows you to build up an effective portfolio that will stand out to employers.
Writing about what you are building not only helps you be more intentional in what you are learning and doing, it can also help cement what you are learning into your brain, and it adds another valuable signal to your online presence.
Finally, connecting with others and showing them what you are working on can provide helpful feedback on your work while also growing your visibility.
These things can all be done together as part of a system of daily and weekly actions that you complete. For an example of how to set up this system, refer to an article I recently wrote for FreeCodeCamp, How to Get a Job as a Professional Developer in 2021.
The main thing I want you to understand is that getting hired is not usually as simple as hitting a point of being "ready" or knowing "enough" and then starting to apply.
It's a continuous process of learning, building, and networking so that more and more people can find you and be impressed when they do.
Sending in applications is a part of this, but it is only a part and should be coupled with consistently learning, building, and networking.
But how can I start applying for jobs and networking if I am just getting started?
Applying for jobs and networking are not necessarily the same thing. You can be reaching out to people in the industry, building relationships immediately, even when all you are learning is HTML and CSS.
Building a network and online presence is something you should start doing immediately, as soon as you start learning.
Commit to writing one post per week going over what you are currently working on. Go over it from the perspective of someone teaching it.
Reach out to one new person each day introducing yourself. See Reach Out by Molly Beck for more information on how to do this right.
Then, I would start applying to jobs once you have a portfolio of one or two complete projects that solve real, unique problems.
What I mean is make something that does not yet exist and that you did not make by following a tutorial or course.
This thing should solve a real problem that you or someone else has, and it should be complete and usable.
Having complete projects shows that you are capable of building something from start to finish and that you understand the development cycle as a whole.
Finally, confidence is not something that you can achieve by just thinking differently.
Confidence is earned by repeatedly showing up and doing the work.
This is harder in the beginning because we have to take leaps of faith and take action without the confidence present.
But over time, as you continue to learn, continue to build, and continue to meet more people, your confidence will grow naturally.
Don't get me wrong, you will still occasionally struggle with imposter syndrome, we all do, but it will begin to happen less and less the more you do great work and get feedback on that great work so that you can continue to improve.
The only way you could be an imposter is if you do one of two extremes.
You flat out lie about your experience and abilities. But this is easily avoided by creating real things and pointing to them, letting your work and writing do the skill-demonstration for you.
The other way is if you get overconfident and think that you have little or nothing left to learn. Ironically, if you feel like you are an imposter, that's a big sign on its own that you are not because you are aware of how much you still have left to learn.
Mastering the mental side of becoming a developer is not something that will happen overnight, and it's not something that will happen without taking action.
Confidence comes from consistent action towards your goals. The best actions to take are building things that solve real problems, writing about those things, and building a network of people that can bring you opportunities.
If you would like a detailed, step-by-step walkthrough of exactly how to go about setting up an online presence, building real things, and networking, along with a community of myself and other developers to support and mentor you along the way, I think you'll like my course and mentoring group, Lever.
You can also follow me on Twitter for more tips and advice on building a successful dev career.