- basic networking
- show me a hobby or project you have worked on, I'll ask you questions
- I'll likely try to teach you a command or small factoid to see how receptive you are to learning
- I'll likely query you on this factoid at the end of the interview to test your memory and comprehension
- if you haven't said "I don't know" in the interview I'll ask you a very hard question to see how you react to not knowing something (hint: getting angry or defensive is not good)
- I will try and get you to teach me something, so I can make sure you know that senior members are life learners too. This is to identify if you're one of those people who lose respect for someone not knowing something you know, as I think this is a strong negative sign
Bonus points if you have competed an end-to-end project, it doesn't have to be deployed online, but being about to talk full stack is great!
Being able to effectively use the internet to search for information is a big deal.
Honestly, it doesn't make a huge difference if they have a degree or not. Most universities don't teach much of anything that is particularly relevant to actual software development in their curricula. If the practices and technologies that are taught are only ten years out of date, that's cutting edge.
You're going to be spending 3-6 months training up a junior developer before they are at all useful anyway. You just want to find the ones that will be continue to progress at the twelve month mark.
- A personal blog
- roughly 20 personal projects that I've worked on throughout my lifetime as a hobbyist, most of which weren't very complete but demonstrated my passion
- A willingness to learn
- A good attitude
What you need more than anything are skills. Ranging from networking knowledge to having a good command on linux. In addition you have to be able to program in Python, Java, JavaScript, C. You also have to understand data structures like linked lists, queues, b-trees..., and to top it all of understand algorithm analysis to judge the efficiency of the code you write or look at.
My recommendation is to get the degree, medium to long term you will need it, and it will benefit you greatly. It seems to be popular to claim a degree is not needed for CS but if you want to do anything besides simple web apps then you will need the knowledge.
In addition you have to be able to program in Python, Java, JavaScript, C.
This is objectively false. To expect a junior developer to know all these is unrealistic, plain and simple. If you have working knowledge of one or two programming languages and have an appetite to learn you are good to go.
You also have to understand data structures like linked lists, queues, b-trees..., and to top it all of understand algorithm analysis to judge the efficiency of the code you write or look at.
For 99% of the work out there, this is also not true. This is the horse crap that is fed to everyone so that folks can ask questions that have little to no relation to day to day development. If you are doing web development, then some knowledge of database query optimization will come in handy. But I don't remember the last time I had to figure out how a linked list worked whenever I was doing any server side or front-end optimization.
I also think that an understanding of data structures is required to be able to identify the best way to deal with data in terms of processing and storage.
It is equally false to say none of what I mentioned is required. There is a broad spectrum between your statement and mine, and the truth is somewhere in between. The better prospect for a job is in the area of knowledge though I hope we can agree on that.
> This is objectively false. To expect a junior developer to know all these is unrealistic, plain and simple. If you have working knowledge of one or two programming languages and have an appetite to learn you are good to go.
Still in school, so haven't had even begun to look at jobs yet, but I know python, java, and c (and a few others), and have a basic knowledge of js. Does that give me an edge, then?
While it's true that you need to know how to judge efficient code, the bit about data structures is HR bullshit. If the only indicator about an organization's coding styles during the interview is a bunch of cargo culted questions from HackerRank, then you should think about whether you really want to work there or not.
Remember that hiring is a two way street. As much as you're offering them something, they're offering you a paycheck (among other things). Don't accept a bad deal just because their "innovative".
I am not sure what people think a basic requirement for a development job is. Being able to learn is a very low threshold in my opinion, and how do you prove that when you don't have a degree and don't know the basics? See the catch there?
Again, If someone want's to be a front end web developer what I am saying is most certainly not required. For anything else I think it holds though.
Every "job listing" I find for programming asks for a 4 year degree and years experience. Since I don't have either (on paper), I have no idea where to show myself.
Who is hiring Jr. Devs? Where?
Obviously you should have a nice balance of both, but I've found many company cultures to lean more one way or another, and the advice on this post seems to divide similarly. If you like option A I'd recommend getting a good overview of a variety of languages, data stores, and tools/frameworks so you can at least have an idea of which one you'd learn more of for a given problem. If you like option B I'd do a deep dive into algorithms and CS fundamentals with one language (C, Java, etc) and target companies that work with that language. They're also more likely to have a well defined intern/junior dev role than the fast paced shops, but a slower pace of learning/advancement.
* A good cover letter * Having worked with a version control system * Shown initiative
For me a good cover letter makes a world of a difference. Anything at all that shows you have thought about the problems that the organization you are applying to is gold and basically an guaranteed phone call.
I still see CV's and get people at phone stage that never used a version control system e.g. git. I don't care which one you used. Its just that it is my baseline for competence.
For a junior position our main aim is to have someone who is willing to grow to a senior and that requires initiative i.e. doing more than what they are told to do but seeing what needs to be done and starting on it. Being in semi-academia I also know that we can rarely keep people once they become senior level due to wage differences. Initiative can be shown in many ways, from the way you reach out to us in the pre-interview stage, to highlighting things you have started in your social live e.g. club activities etc...
So the skill set required to be employable as a junior dev is to be able to convince one hiring manager that you can do it. Then, after that, you have to learn enough to be able to actually do the work, so that you can remain employable. That's different, though. Learn what you need for the job you have. Don't worry about learning other things; learn what you need as fast as you can. You'll pick up other stuff around the edges, and that's good, but they're paying you to learn (and then do) what you need for this job.
how much, if any, white boarding do you have the interviewee do for a front end junior position? And what are you looking for - memorization of common problems/solutions? ability to think through problem? something else?
As someone who has pretty poor memorization and does poor on tests in general - this portion of interviewing gives me the most anxiety.
Our goal is to test like you work, so you have an IDE, access to Google and StackOverflow, and when we ask you to implement an algorithm (like QuickSort) we link to the Wikipedia page in the instructions.
We've found that the ability to memorize is basically useless is identifying good candidates, but the ability to implement when given proper instructions is really valuable.
Pretty much every company you've heard of uses a similar technical phone screen -> onsite with whiteboarding process. If you're not somewhat proficient at them, you're greatly limiting yourself.
Personal or commercial projects that demonstrate relevant skills. Bonus points if I can see the source.
Having a mentor really helps to prioritize your learning efforts in the right spots, both before and after getting the job.
- You must have projects in at least two programming languages with at least one programming language listed in the job posting
- at least one project to 'completion' that uses a database (sqlite counts) (MVP of MVC with DB) (preferably something remote so you have do deal with networks and latency)
- Either know how to navigate Linux command line Environment xor a Microsoft/Netbeans Style IDE
- Use of a version control system (preferably in collaborative environment)
- Depending on company culture you may also need to have reviewed algorithms and abstract data types. (you can usually skip this requirement by being hired as an intern first, and bootstrapping your employment)
- willingness to document and report work completed during a time period (as a ledger of progress)
How: Wanted to create a news aggregator, so I teamed up with a friend (backend guy) and learnt how to do frontend. 14-months later I got hired after creating some side-projects and learning enough to convince my first employer to take a chance on me.
What worked for me: Learning JavaScript, the language, instead of trying to learn shiny, new frameworks. Learning how to read source code (a more recent habit but it helped me get my second job). Showing a genuine passion for coding through getting involved in open-source communities and learning outside of work
- a portfolio website that deploys a range of recent web technologies. This demonstrates initiative, and also the fact that you can set up a web site somehow.
- some freelance work on your resume, even if it's as simple as setting up a WordPress site.
- a code sample, so have something decent ready, again showing an interest in more than basic web development. Deploying a framework other than jQuery is a plus, as long as you show some sufficient hand-coding skills.
- interest in back-end technologies is a plus even of the job doesn't require it
- in the interview, openness, honesty and drive
- and finally the coding test I give you will show if you know what you are talking about
As a junior developer where I work, we aren't expecting you to know a lot coming in. But we do expect you to have a good attitude and to want to learn. We can teach you how to write software, but we can't teach you about work ethic.
We have one developer who started 10 years ago without a college degree. He's a team lead now.
In summary: - You should want to learn from the senior developers - You should have a positive attitude - You should have a good work ethic (show up on time, help your coworkers, shouldn't act like any task is beneath your skill level)
Curiosity. Always wanting to learn more.
Growth Oriented. Constantly learning.
Humility. Knowing when to say, I don't know and ask for help.
Pride. Having a decent ego, wanting to be the best and showing it by putting in the work.
Every other thing is related to that. Are you a freelancer asked to build a website? Who cares whether it's PHP or JS, it just has to be done. Are you maintaining a PHP website? Then you need PHP to get things done.
The rest of the interview process is to filter out the smart part.