- a good working knowledge of the command line (up to say piping, xargs)<p>- basic networking<p>- show me a hobby or project you have worked on, I'll ask you questions<p>- I'll likely try to teach you a command or small factoid to see how receptive you are to learning<p>- I'll likely query you on this factoid at the end of the interview to test your memory and comprehension<p>- 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)<p>- 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<p>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!
A brain, and the ability and willingness to learn. None of us really know what we're doing in this industry anyway, and you're constantly on the treadmill of learning new things to keep up.<p>Being able to effectively use the internet to search for information is a big deal.<p>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.<p>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.
Someone who can talk through a problem, ask questions and think critically. I know HN hates the "consulting" type interview questions; but I find for jr devs its a great barometer of how they would react in the real world to a problem they were unfamiliar with. Ie: how much would you charge me to wash every window in the city? I don't care about the total price, I care they ask and answer the questions, well how many buildings, how long would it take to do one window, how many different building types are there. I want to see them take what looks to be an insurmountable problem, and break it down in to small manageable problems. If they can do that, they can reason about any bug or feature on a system they are not familiar with. The only "wrong" answers are if someone blurts out a number without thinking, or someone who just shrugs and goes, I have no idea how to do that.
I was hired as a junior developer, without a degree, with the following things:<p>- A personal blog<p>- 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<p>- A willingness to learn<p>- A good attitude
I am a developer without a degree and transitioned from IT into development. I am in my last year of my Undergrad in CS now.<p>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.<p>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.
(Optional: Where do I ask:) Who's hiring Jr. Devs? Because as far as being passionate to learn (and knowing some of the basics of .NET flavored development), I'd like to grow my skillset beyond that of IT Generalist.
There's a lot of great advice here which can be broken down into two categories: specialist vs generalist. A really important thing to figure out is what kind of developer you are. Which sounds better:
a. Constantly being challenged to learn new things, a rapid paced environment where lots of change and challenge are introduced
b. Organized environment where work is split up by expertise, groups have a narrow focus where they become experts in their domain and iterate to perfection<p>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.
Working in semi academia I do see these kind of applications. The following are personal opinions that work for convincing me when I am in an hiring committee.<p>* A good cover letter
* Having worked with a version control system
* Shown initiative<p>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.<p>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.<p>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...
I got hired as a junior developer (a <i>long</i> time ago) with a math and physics degree, <i>one</i> computer class on my transcript, no experience, and "mostly self-taught with respect to computers". I got hired by a manager who had a master's degree in math and was mostly self-taught with respect to computers.<p>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 <i>remain</i> 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 <i>this</i> job.
I have a question for interviewers:<p>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?<p>As someone who has pretty poor memorization and does poor on tests in general - this portion of interviewing gives me the most anxiety.
Having a good understanding of things you claim to know (even if that is not a huge set), and ability to effectively convey that understanding to someone else.<p>Personal or commercial projects that demonstrate relevant skills. Bonus points if I can see the source.<p>Having a mentor really helps to prioritize your learning efforts in the right spots, both before and after getting the job.
Without a degree you need a ledger of work, and preferably references by people you have collaborated on something on.<p>- You must have projects in at least two programming languages with at least one programming language listed in the job posting<p>- 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)<p>- Either know how to navigate Linux command line Environment xor a Microsoft/Netbeans Style IDE<p>- Use of a version control system (preferably in collaborative environment)<p>- 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)<p>- willingness to document and report work completed during a time period (as a ledger of progress)
Background: Recently started my second job (mid-level) after leaving my previous job (junior, first programming job). Switched to programming from journalism<p>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.<p>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
Know SQL. Not because you'll be needing it, but because of the bias among older developers that junior developers just glue together frameworks and libraries, and lack real problem solving knowledge. Learning SQL is probably the quickest way to diffuse that.
I have hired junior web developers, both those right out of school and those without CS degrees. I look for:<p>- 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.<p>- some freelance work on your resume, even if it's as simple as setting up a WordPress site.<p>- 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.<p>- interest in back-end technologies is a plus even of the job doesn't require it<p>- in the interview, openness, honesty and drive<p>- and finally the coding test I give you will show if you know what you are talking about
We look for junior developers who are "coachable": we can teach them the skills they lack and they will learn quickly.<p>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.<p>We have one developer who started 10 years ago without a college degree. He's a team lead now.<p>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)
Resourcefulness. Being able to get things done.<p>Curiosity. Always wanting to learn more.<p>Growth Oriented. Constantly learning.<p>Humility. Knowing when to say, I don't know and ask for help.<p>Pride. Having a decent ego, wanting to be the best and showing it by putting in the work.
Smart and gets things done.<p>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.<p>The rest of the interview process is to filter out the smart part.
First, look for companies that you'd like to work. See if the technologies that they work with are the ones you know, and start developing more skills on them. That will increase your chances of getting hired.