15 years experience coding mostly full-stack web apps. Some native C/C++ with QT framework and SQLite. I am the type of engineer who can pick up new languages and frameworks and quickly come up to speed. My passion is working on software that genuinely helps people and is delightful to use.
In my job search, I am optimizing for a good cultural fit. I enjoy working on challenging problems, but more so I love working with smart people who want to do quality work and care about the details. I understand the balance between ideal code and getting software shipped. I like working within a development process that facilitates a tight feedback loop of developing new features and getting feedback. Call it agile, call it whatever.
Thank you all for the great advice. I think the cash out of the 401K idea is really a reaction to how miserable my current position is. The culture is terrible and I want out, now. So I'm going to use my vacation time to send out a ton of resumes, practice some coding puzzles, and hack away on some code that I can provide as polished, well thought out work.
I did apply for a job at Twitter months back, but failed miserably at the two 45 minute online "coding to solve a puzzle" interviews. I was nervous, and also was opposed to that style of interviewing, and it did not do well.
I realize I need to get over it, and just accept that some shops may interview that way. It may let me know that it may not be the place for me, or open a door to a good opportunity.
The number one thing for me is culture. That the culture works for me. For any company that I am seriously considering, I will request working on a small project with the team before I accept any offer. If I had done that for my current position, I would have never come on board.
The "not allowed" refers to sharing some of the best code I've written. I find it hard to reproduce that quality of code in a 45 minute code puzzle, like the time I interview for Twitter.
I think with the market being what it is, you can probably get a great job that matches your expectations without creating a 6-month-runway-no-retirement-funds stress inducer machine for yourself. Unemployment is a great new job's worst enemy. You can always negotiate from a more comfortable position if you keep your current job.
I can't really give more specific advice with the information you've provided, but spending your retirement savings and risking your family's financial safety in order to get a nicer job seems unnecessary. You can probably engineer a solution without those risks.
I'm sure you are aware of this, but "not having time" is a relative notion.
I'm in the exact same situation. I have a kid and a wife that take up the Lion's share of my time. As well as working at a PCI compliant company that forbids me from showing my best work to anyone else. It's a struggle and a challenge, but I've explained my situation and my frustrations to my wife and we try to carve out a few hours here and there and a few more over the weekends for me to build something that I'm able to show. We thought about quitting and dipping into our savings but for now it works and we can sustain this for a bit longer.
Good luck to you, and I hope that you will reach a resolution soon.
Same here, I have three hours during the weekend that are mine to hack on projects. But beyond that I have a notebook I constantly am writing down ideas and thoughts in. During lunch time you can spend it working on problems. And then there is vacation days. How about taking a day here or there to concentrate on the projects you want to invest yourself into?
I think we hit all of your points (although "great culture" is very subjective), and our application process does not hinge on OSS/SO profile/GitHub or anything of the sort.
I don't see why you would need a github profile, etc., for those things, and if you think that improving your public image as a developer will land you a job with such a company, you may be right, but I think you are looking at the problem the wrong way. Many jobs offer the last two things in your dream job. A few jobs offer one of the first two, often at the expense of the latter. A very few jobs offer all four. How do you expect to tell that a company has all of these attributes? Unless they are a very high-profile company, you have very few data points to go on. Just like you talk yourself up during an interview, the company will talk themselves up, and often misrepresent and overstate what they have to offer.
Case in point, I'm actually in a somewhat similar situation, and am aggressively looking for an out. After returning to school to finish a degree I was hoping to take a different tack in my career. I really wanted to work on scientific applications with something more in mind than just the bottom line. I accepted a position that offered mostly remote work. They already have an established remote workforce, and it appeared to be a true meritocracy, with little management overhead or fixed structure, and lots of very bright talented people working on interesting projects. I had several interviews, including a day long in-person interview. I turned down three other very solid offers to take this job.
Fast forward a few months and the picture they painted could not be further from reality. The people in the office don't have phones, so talking to them directly always involves jumping through hoops and can take a long time to set up. People are often unwilling to talk at all and prefer to hold terse conversations over IM. Lack of management structure translates to lack of communication and support from above. Some things about the job were grossly misrepresented and there was one major outright lie that would have been a deal-breaker from the start if I'd known about it.
But the job looked perfect! I looked like a great fit to them! This is a career, don't count on a quick fix or finding nirvana in a day, or six months. A friend of mine used to say, life is the process of finding the things that don't work. If you put yourself 100% on the line hoping for a big payoff, you are more than likely not going to be happy with the result. Just look at how many startup founders on here have failed over and over before making it, and many never do. I see no reason to over-extend yourself like that for the sake of a salaried position, at least not without some really clear goal at the outset.
There is no objective measure of great culture or interesting work. I mean, what is "great culture" to you may not be the same to me. For me, I would rather work in an environment where there is a good measure of self-motivated individuals (who get shit done) with a good balance of thinking towards the future (don't experiment too much with a bunch of hipster frameworks that generate a lot of technical debt). And. I like a place that has a great work life balance. On the other hand, there are people who think that great culture means being able to write code in any language, like to work 100 hours a week and who think free food = great culture. Now, I have no problem with that attitude. It is just not my thing.
> , interesting work,
Interesting work: This is a hard problem. Again, this is dependent on you. If you are fresh out of school, everything may seem interesting to you. On the other hand, maybe you have worked on specific frameworks for a while (say building CRUD apps for a BigCo) and now feel like interesting is working on iOS stuff. Maybe you want to be a full stack engineer. Maybe you want to specialize?
> is making money
Be wary, if you are at all looking at a startup. Very few of them are profitable. Most will quote numbers about funding, IPOs etc. It makes it hard to understand what 40 million in funding actually means. Does it mean that the startup is going to succeed? What does a 100 billion valuation mean? Does it mean the company is making money?
> remote friendly.
I think every place in theory is remote friendly for the right candidates. As to whether their culture has ways of workings that make it productive for remote candidates, that is a different issue. If you are a person who is so amazing that you can do your own stuff without face time, almost every tech company will be okay with you being remote. On the other hand, if you are a person who needs to work in a team and work collaboratively, there has to be a culture where the idea that the other person may not be geographically in the same place as you is firmly fixed. E.g. there are small startups in SF where people all come into work at 11 AM and leave at 11 PM. It is a system that works well for them because they all work in sync, talk to each other in person if something needs to be resolved. I like to come to work insanely early, get stuff done, go out and switch off. Some times, I like to get quite time and work from home because I can get a tremendous amount of work done without having to deal with meetings. Again, I wouldn't fit well in the environment that I just listed.