I think you're doing so much right, and I'm sorry you haven't yet achieved the results you're after. In the long run, you will. In the meantime, focus on the process and not the results. Be mindful of the results, but focus on what you can control - the process (your time and your actions). Interviewing is a set of many skills - you get better over time. You're better at it than when you started because you have more experience interviewing.

You need some information on what's not working. There's a kind of funnel:

Phone screen -> at home task/project -> onsite -> offer

Sometimes there are 2 or more phone screens. Sometimes the take home project is after the onsite. Sometimes there are multiple onsite interview. But write out a general funnel in a spreadsheet and track how you do with each company. Each company will be a row. You want to see how far to the right you are getting. You have lots of data at this point - populate the spreadsheet with it.

Why? To see where you're dropping off, and to see how you do with different kinds of roles, industries, and companies in terms of size. Are you applying to the right jobs? Are you applying within 1-4 weeks after the job is posted (rather than being 1 of 100+ applications in the pile because the posting is 4 months old)? If you aren't getting many phone screens, work on your resume format and wording, cover letters, and your digital persona (LinkedIn, blog, etc). Get honest feedback from people you know, and if you still get the same results, hire someone to improve your resume and help you write a cover letter or two that you can mimic for future applications. If you aren't getting many call backs after a phone screen, work on how you're answering questions (your narrative, behavioral answers, technical answers, describing previous work experience, your tone, etc.). Do practice interviews, and practice your answer to questions. If the process seems to stop after the take home project, practice these types of projects on your own. If you aren't getting offers after onsites, that's where you need to focus.

Especially on the phone screen and in person, when people ask if you have any questions, ask them "Do you have any concerns about my abilities or qualifications that would prevent you from selecting me for this position?" Patterns will emerge. You can address their concerns, but only if you know about them. Help communicate to your interviewer who you are and why you're hirable and will do well at the role. With this knowledge, you'll be able to anticipate these concerns and soften them with other interviewers in the future.

Apply to 5-10 jobs a day. Pick 5 if that's more realistic. 5 a day will get you a lot more feedback on what's working and what isn't than 2 a day. Put a little less work into each one if you have to - they should be personalized and good, but they don't have to be perfect.

Reach out to people who gave you a "not now" answer 4-6 months after that happens. Their needs change all the time, and your skills are constantly improving, so at some point it might work out with one.

Start a technical blog. Talk about your side projects, freelance work (if your client is ok with it), algorithms, useful dev tools - anything technical. Posts don't have to be that long or groundbreaking, but this will help you get a job. Put it on your resume, Github profile, LinkedIn, so people know it exists.

Focus on what's most likely to get you what you want, a full time job. C#, Elm, and Haskell are awesome. Focus on one for a day or two if the company you're interviewing for uses them. If you want to, dabble a little for your own learning and enjoyment, but focus your energy on things that will help lead to a full-time job in the short term. You have a lifetime to explore and learn.

Apply to gaming companies if that's what you're passionate about. Especially ones that need the skills you have most strongly now - web development. Possibly for their marketing teams (because of your former experience with publicity).

1. Map the interview process funnel. Figure out where you're dropping off, and focus on improving that area. 2. Ask people what concerns they have with you, and address them. 3. Apply to 5-10 jobs a day. Whatever the number, pick it and do it. You'll get more data which is essential to improve. 4. Reach out to employers who said "Not now" 4-6 months after because their needs may have changed and your skills have increased. 5. Start a technical blog. 6. Dabble a little less in a wide variety of technologies that aren't as applicable to the roles full time jobs you're applying to. Study them once you have it. 7. Make sure to apply to gaming companies if that's what you're passionate about.

You got this. Best of luck!