When I was learning front-end development I would Google this question often. When you’re teaching yourself it’s a lot more difficult to measure your own ‘readiness’. When you take a course or attend a bootcamp it’s easier to define this because there is a set start and finish. Those that are self-teaching will have to define this for themselves.
Many factors play into this state of ‘readiness’. The main factor is people's own expectations, one developer's definition of ready may be the complete polar opposite to another’s. What really matters to us is what employers think. In this article, we will attempt to produce a definition to put your mind at ease.
My own experience
I am completely self-taught with no previous relatable experience in tech. I did build my own computer many moons ago but that had little bearing on my ability to code, I’d just about heard of HTML!
It took me around 11 months to land my first position and on reflection, I felt I could have started applying for roles a little sooner than I did. I was all too focused on trying to perfect my knowledge and get to a place where I considered myself to be ‘ready’.
The truth is, you’ll probably never reach a place where you are entirely happy with your readiness. If I had waited until I felt ready, my hair would be white and I’d be collecting my pension and I’d still be asking the same question. Thankfully my hair is still (mostly) brown and I have a few more years before I can start collecting my pension. Ultimately, it's about learning just enough to land yourself a job - you'll learn so much faster once you have one.
Defining ‘ready’
If you are seriously willing to put in the time to learn, you’ll inevitably give yourself the best chances of landing a junior developer position. My definition of job-ready would look something like this:
- Thorough knowledge of HTML, CSS, and JavaScript (especially JavaScript)
- An understanding of web accessibility
- Some experience with a JavaScript framework/library
- Some understanding and experience with build tools, task runners & preprocessors
- Willingness and aptitude to learn
- Passion and enthusiasm for development
- A portfolio of projects to showcase coding ability
- Some open-source contributions (probably a nice-to-have)
Let’s have a look at each of these criteria in more detail:
Thorough knowledge of HTML, CSS, and JavaScript - especially JavaScript
You can’t cut too many corners here - this is your bread and butter. These are the core browser technologies, and this is where you will be spending your time as a front-end developer. Whatever job you take, whatever framework, templating system, or library you work with, you will be utilising these technologies - even if there is a fairly thick layer of abstraction over them.
For those that are looking to become UX-focused front-end developers you’ll probably want to centre more of your time toward the HTML, CSS side of things. For those wanting to become JavaScript focused front-end developers (now commonly termed ‘front-end engineers’), you’ll want to point your focus toward JavaScript – make sure you learn the fundamentals, as well as more advanced concepts such as closures, prototypes and inheritance, promises, etc.
Some experience with a JavaScript framework and/or library
This is probably the most contentious of all of the items on this list. It’s become very common for job descriptions to ask for proficiency or some experience with a front-end framework or library (usually, Angular, Vue, or React. Sometimes jQuery is thrown into the mix even though it’s a less opinionated utility library).
I’ve compiled some results on a random selection of 20 job adverts (for junior front-end developer positions advertised in the UK), to see what proportion place an emphasis on JavaScript frameworks as an essential prerequisite for the job.
Personally, I wouldn’t lose too much sleep over this one. As you can see there are plenty of jobs that look for JavaScript proficiency in general, rather than tied to a specific framework.
If you’ve got the basics nailed down, then by all means have a play with a framework that takes your fancy. Build a small project to show you can pick up some new tech and make something productive. Ultimately, you’re applying for junior developer positions so there shouldn’t be too much expectation on you to know a wide range of frameworks.
An understanding of web accessibility
Thankfully, more companies are now taking the accessibility of their websites more seriously. Inaccessible websites shouldn't just be the responsibility of designers. As front-end developers, it is important that we take web accessibility seriously and with the growing complexity of the front-end landscape sometimes accessibility get's left behind.
You don't need to be an expert, but showing an understanding and appreciation for web accessibility will certainly help once you start applying for positions. The chances are high that you'll be asked a question on this in an interview too.
Some experience with build tools, task runners, and preprocessors
Junior front-end developer job descriptions tend to have this listed as a nice-to-have skill. If you have a general understanding of their purpose, when you’d probably reach for one and how they generally fit into the front-end tooling landscape then this is probably enough to satisfy most employers. If you’ve already picked up a front-end framework, then you almost certainly will have used some form of build tool/bundler such as Webpack anyway.
Willingness and aptitude to learn
If you’re not willing or capable to learn new things, then you’ve definitely picked the wrong industry! Don’t panic if you think you’re a slow or ineffective learner – you can get better at this.
Remember, skills and technologies will come and go, but if you are able to learn and adapt then you’ll be extremely sought-after and your career will be more on your terms.
Passion and enthusiasm for development
You’d be surprised how many people there are working in the industry who aren't passionate or enthusiastic about what they do. If you’re in this for the money and the job opportunities alone, then it’s going to be a bumpy ride.
When the poop hits the fan and you have a deadline looming and you can’t get your code to compile or you can’t fix a release-blocking bug then you’ll hate every minute and wonder why you even got into this industry. Development is tough and it will be a lot tougher if you have no passion or enthusiasm for it.
A portfolio of projects to showcase coding ability
This is your time to impress prospective employers and let your code do the talking. You don’t necessarily need to have a dedicated portfolio site, you could just pin some of your best repositories on your GitHub profile and share that with employers.
Don’t sweat too much about code perfection, but do make sure the code you write is DRY. It should be maintainable and clean (if you can write some tests too then extra points for you!). Ultimately the proof is in the pudding, if an employer can actually see you know how to code and you can do so without potentially causing an immediate firestorm then they are more likely to give you a shot.
Some open-source contributions (probably a nice-to-have)
Although I’ve listed this as a nice-to-have, I would strongly encourage you to get involved with open source projects. Your contributions don’t have to be substantial. Even contributing documentation is a hugely worthwhile endeavor that many library authors will be grateful for.
Contributing to open source can be a scary prospect for beginner developers. Too many beginners find themselves trapped in tutorial land, spending too long passively churning out todo apps - this can be a hard trap to escape from. I’m not saying tutorials aren’t useful, it’s just that contributing to open source is pretty much as close as you’ll get to being a professional developer. Depending on what libraries/frameworks you end up contributing to, your contributions could be considered genuine work experience.
Making open source contributions will require you to have been exposed to a few important conecepts, practices, and transferable skills:
- Version control
- Working with tickets & issues
- Working with professional developers
- Creating pull requests
- Experiencing a code review process
- Setting up a local development environment
- Contributing code to a pre-existing codebase
This is essentially what you’ll be doing in a real job, so having these experiences will stand you in good stead once you begin applying for roles. It already proves that you have what it takes to write code at a useful standard.
Final thoughts
If you can tick off most of the criteria in my ‘ready’ list, then you’ll probably be set to start applying for positions. The length of time it takes to get here will be highly individualized and will depend on whether you can commit to learning full-time or part-time, so your mileage will vary. Don’t become too fixated on time and hours invested. Although there will be a correlation between time invested and progress, time spent is not always the best measure of progress. Likewise, don't fuss over every item in the list, if your learning processes are polished and you think you’re ready to start applying a little sooner than you originally envisioned then I would encourage you to go for it.
The job searching process probably warrants an article of its own but for now, just bear in mind that to many companies, entry-level really means 'senior-level experience at an entry-level salary', so don’t become too disheartened when you get rejected for positions. Persist, keep learning and you’ll eventually land a job.
Thank you for reading!
If you enjoy reading my content and want to support my work, please follow me on Twitter 😊
Top comments (4)
Thank you so much! It helps a lot when you have something to go by and to know when your ready for a front end job. Its always best to learn from others experiences and this is a good overview of Front end development.
Thanks for the feedback Devin, glad you found it useful!
Thank You for sharing your thought. :-)
You're welcome :)