This is great advice, but you have to be more entrepreneurial, or at least have more personal initiative, to take option 2, especially in high tech.

Here's the problem - if you apply at a company that follows the standard "technical interview", you will be tested on one thing only - your coding ability at a whiteboard. Here's what can happen.

An employee at the 89%ile in writing, speaking, sales, and coding would be very valuable and rare.. However, this employee must interview with 5 people, all of whom filter out anyone who doesn't land in the top 10%ile.

Companies rarely create jobs for this sort of multifaceted worker who is top 25% in many areas but not quite top 10% in any of them. Truth is, they don't really understand what this is or why it would be valuable. A software developer might benefit tremendously from expertise in these other fields, but if you don't do really well in the whiteboard exercise, you're out. As a result, software interviews tend to filter out people who can present, write, or sell well. Those workers are still out there, of course, but I think companies reduce the probability that a developer will have these skills through the interview process - and I'm not sure they increase their probability of finding good developers appreciably, even when measured purely by coding skill.

Of course, every inefficiency contains an opportunity. My advice to companies is to look for paths to identify and hire people who can do more than one thing. My advice to individuals is this - first, get as good at the coding tests as you possibly can. But probably better is to try to enter a company through a path that doesn't go through software engineering. Trust me, they will fail you out if you can't find all permutations of a set at the whiteboard, even if you could do this quite easily given 15 minutes and stack overflow (and fully understand what you are doing).

So? Learn to code, and let that be your superpower. I know a few people who had a cs/math background and worked as analysts when they started their careers, and have learned to do quantitative analysis, programming, database design, and so forth, and they are rock stars in their fields, highly valued and often invited to speak at conferences. However, when they interview, they don't go through five hours of whiteboard exams - their interviews are actual interviews, they way almost everyone outside tech understands them. Our interviews are more or less indistinguishable from exams (except without the conventions that make exams more fair for the student, such as feedback, consistent grading, a study path, and so forth). Every now and then, when you pop your head out of the tech bubble and talk to people in other fields, you'll see that they actually shudder when they hear about what our interviews are like. Most importantly, they don't get filtered out because they haven't reviewed their textbooks from whatever they studied their second year of college book and prepared for final exams (again). Seriously, anything you can do to leave a field that forces you to do that is worth considering as an option.

Like I said, this will take more personal initiative on your part. People don't really advertise these positions, you have to show the value and build your way into it. Another "problem" is that you probably won't get the pay grade for a software developer track right away - but you may build your way up, and when you get there, you'll be unusual, invaluable, and probably have a more enjoyable job.