This year I made a career change from academia to industry. I did quite a lot of interviews and applications over the first few months of 2017, and here are some notes from an applicant's point of view. I'm living in Dublin, which has its own miniature Silicon Valley tech hub, where a lot international corporates, and smaller start-ups have an office and do software and engineering development. I quite like living in Dublin, so I mostly looked here, but I did a few investigations overseas too. I ended up in a pretty cool job in Dublin working in Augmented Reality R&D but the months leading up to that application were a challenge.
I was working 12-14 hour days at my teaching job before I finished (and after...), so I didn't really have time to do this, and it made life pretty tough. Most of the tech industry is really only set up to cater for middle class people with a strong support network, who either are already employed, or have a family living locally to fall back on. These are not people who have had to work side jobs in college, and they just don't really have a wide view of society. I had to leverage all my friends and connections to make this work here (I'm from New Zealand). Here are some things you absolutely are assumed to have. If you don't have them, find some good work-arounds, or life will be exceptionally difficult:
I did this the expensive way - staying in Dublin. I worked out an extension with my landlord, and put the hurry-up on applications. Putting the hurry-up on applications is surprisingly effective. After being goofed around for months I ended up with three offers in one day, and another the day after, purely as a result of running out of time and letting them know. One had even just told me that I had to wait another month for some management sign off (this could easily have been "we just had another applicant we'd like to interview first...") - they came back to me the next day with an offer after I told them I was considering another one instead. Trying to extend my rent further could have been a huge waste of time and money.
The Internet was an enormous pain because I had just ended a contract with a previous provider and it made no sense to sign up to a new one if I might be leaving the country in under a month (they are typically >1 year contracts with a pretty hefty early-out penalty fee). I used Internet in quiet caffés and at friends' places. This didn't always work out as you end up getting a bit distracted during timed online tests and get unreliable Internet for Skype etc in caffes - next time I would just plan the early-out fee into my budget and get proper Internet at home.
Most of the companies I applied for were completely unable to cope with the idea that a candidate may not be well set up with loads of time/money/support/etc. I absolutely understand the frustration of people from other backgrounds feeling locked out of the tech world. Too many companies expected me to do whole-day or multi-day take-home assignments (or you know, it would take a day to do, but several days to brush up on stuff first) in addition to other stages. Only one type of person has the time for this. If you're applying for several at once (I was) this can add up to a lot of time, most of which will be wasted at the expense of work that actually pays your rent:
The trick here is to just not engage in these activities. There are other, more capable, companies that won't waste your time with this hogwash. It shows a lack of depth of knowledge of the people doing the interview, and too often it's just taking the opportunity to establish a power relationship with the applicant - "How much work can I get this person to do unpaid, for the privilige of applying for us?". They may actually have more respect for you if you tell them you're too busy and important and have other options! None of the four companies I got great offers from at the end asked me to do any of this stuff - they got straight to the point and got down to serious business and tech talk right away. Before I learned the hard way I wasted a lot of time on these things and it was very frustrating. Some background work and practice is of course great - but:
Don't use agencies - gigantic waste of time! The agencies in Dublin just haven't put the effort into undestanding their area, and you'll get rushed, unreliable matches and end up disappointed or flat out ignored. A lot of companies ignore CVs submitted by recruitment agencies (you can see they write this on their websites sometimes). Apply for the companies directly - they will have their own recruiters anyway to do that level of filtering! Ideally you know someone internally that will recommend you. If you don't - have a look on LinkedIn - maybe you have a second-degree connection that you can get introduced to through a friend - ask good questions about the company. You'll get better insight here than from an interview - it takes a long time to get to know if a work environment is right for you or is a bit of a stress pressure cooker. I full-on avoided one very well-known employer in particular after hearing totally negative feedback from several different people that work there. Network more! Take people out for coffee - you'll hear about their company's hirings, other companies, how the interviews are structured, what their experiences applying for other companies were, etc.
The first few interviews will always be a bit anxious - line up a few non-critical applications for practice runs. Get your nerves out. Realise that most interviewers are just as nervous and unsure. Start to turn interviews around and ask more questions than you're asked. Ask them hard questions too - this is a two way system, and you should be picky. Practice doing a few talks/whiteboard explanations of architecture or code. Do a few popular online tests - Codility seems popular with employers now. Brush up on a few languages that you don't use often - Python is nice for quick mock-ups and tests - you may have that choice. I think online tests like Codility are pretty silly - they are structured like bad Algorithms or Maths questions usually, but why not do a few to get in the frame of thinking? Discuss the questions with your friends - that might be more useful if you get asked to discuss something in a face-to-face. I had a lot of teaching experience to rely on, but if you don't - maybe hold a workshop talk on code, or try streaming some of your code online and explaining it as you go. Use prepared notes to begin with. It's an unique skill all on its own, that most programmers don't have - but its actually pretty useful on the job, as well as being commonly tested. I can see how this would be terrifying for most people - for me this was the easy bit. Do as many talks as you can. Volunteer for talks at local meet-ups.
Exude confidence, project your enthusiasm, and command respect. Most of all - take it easy!.
This was just a bunch of rambling reflections - but if you'd like I can probably give some more specific advice that I learned about CVs, typical questions to prepare for from recruiters/HR etc.