I'm the head of engineering for a growing company. I've been involved in development for about twenty years. I've hired a number of young inexperienced developers. I consider many of them to be the best hires I've ever made.

This is my advice to you.

1) Unless it's handed to you, don't focus on freelance. You're young and inexperienced. Even if you have the best of intentions, if you take on a solo project, you're not even going to be aware of the mistakes you're making, and rather than learning from them and improving, you will likely turn bad practices into bad habits. Right now you need to learn. You need to find a small team that you can join as an intern or Jr. Developer. You need to be in an environment where people around you can accelerate your education. Forget pride. Forget expectations. Embrace the ability to learn and grow by making professional mistakes in an environment where others will point out those mistakes and the team will carry much of your weight while you gain experience.

2) When networking and interviewing, don't sell yourself on what you know. In the grand scheme, you don't know much, and you can't win by competing on something that you lack. When I hire Jr. Developers, I don't really care what they know or, on the surface, what they've done. I'm not hiring them for experience or knowledge. I'm hiring them for their passion and their thirst for knowledge. I'm making a gamble that the investment that I make into that person is going to pay back 10 times. What matters to me is how willing that person is to admit their weaknesses and to jump at the opportunity to learn. Market yourself accordingly. Focus on networking through whatever local meetups you can find. Ask (or beg) experienced developers in your area to meet you for coffee so that you can pick their brain or ask advice. Always be inquisitive. Do personal projects to challenge yourself. Find the things at the very edge of your ability or comprehension, and challenge yourself to find what lays just beyond. Repeat.

3) Show that you're committed. Many people disagree with the traditional education system, especially in CS. But, the one thing that it shows is that if you commit yourself to something that you will see it through. That said, I don't have a CS degree and a rarely give a shit about a degree for anyone I'm hiring, but, you need to find some way to demonstrate that commitment. As I said, I'm going to invest heavily into you. The last thing in the world that I want is someone that three months in suddenly feels like they no longer care, or, worse yet, are now beyond the role.

4) On areas where you are knowledgeable, speak your mind. No one wants to hire a limp fish. When I invest in helping you to grow, I'm going to look to you to help the next young developer grow. That requires someone that is willing to stick up for what they think is the right way to do a thing. But, this specific piece of advice comes with two important caveats. First, don't boastfully preach on areas where you are not informed. It's called bull-shitting, and those around you will know. And second, however strongly you hold a belief, always remember that as we grow our beliefs will evolve. Don't close yourself off from different ideas or opinions.

One of the best developers that I ever hired broke down in the middle of a technical interview. We were hammering him about some somewhat advanced Javascript concepts and he couldn't provide answers. He was visibly upset and frustrated and clearly felt by the end of the interview that he wouldn't be hearing back from us. Before he left, he told me, "You know, I'm sorry that I got upset. I'm frustrated that I can't answer these questions. But most of all, I'm frustrated that I'm not at a place where I can learn to answer these questions." That was one of the most honest and impactful things I've heard from any candidate and I knew on the spot that he was the right hire. In the last three years that he's been on my team, he has gone from limited experience outside of HTML and Javascript, to production quality Ruby, Objective C, and Java development.

That's what I look for in an inexperienced developer.