Hey all,
I'm having a tough time finding a good job working with Ruby and Rails, and I was hoping some one here could maybe highlight what I may be doing wrong. There are several factors at play here, but the three main ones that I have trouble with are that (a) most of the Rails- related jobs I've found are with start-ups, (b) the ones I've found with "stable" or "established" companies usually involve tech screens that I've had a hard time passing, and (c) I don't think I want to be writing code the rest of my life, but I feel like there's a bit of a barrier between technology people and allowing them the chance to transition to technology management.
On the first point, am I being too paranoid about working for start- ups? My biggest fear, career-wise, is to go to work one morning and find the stereotypical 2001 nightmare scenario where the office is shut down, locked up, nobody has a job and the CEO is running off with a couple hundred grand in investment cash, leaving all the employees screwed. Obviously that's a reach (partially for comical purposes), but how unfounded (or realistic) is a fear like this in today's modern silicon valley environment?
Secondly, regarding tech screens: this seems to be my biggest problem. I have a strong resume, all of which is true (and I actually -didn't- pad it with anything!) and almost 9 years experience as a web applications developer, having only started using Ruby about 3 years ago, PHP/MySQL prior to that. I *know* this stuff reasonably well. The problem is that I often get thrown all kinds of strange theoretical questions out of left field. For example, "what are the different levels of database normalization?" When I heard that, I thought, "WTF, I just know normalization as making sure you have as little repeated data as possible, things are properly indexed, and that there's proper referential integrity in the DB." Another one I got: "explain polymorphism and how it's used in Rails." At the time I couldn't answer it, but like all the other strange OOP-based rhetorical questions I've been thrown, I wrote it down and looked it up.
The problem is that I can't really predict what's going to be thrown at me next. I know what I'm doing - I can write pure SQL, setting up databases/foreign keys/indexes, I can write tests using Shoulda with Factories or Blueprints, I understand Active Record very well, I've set up plenty of RESTful interfaces (I've even named the guy who "introduced" REST in his doctoral thesis in interviews), I've performed security checks on my own code, developed e-commerce applications in conjunction with FCC and PCI-DSS standards (in Ruby no less) - it's just the formalized theoretical stuff I'm weak on.
So far I've just been writing down the stuff that throws me for a loop, but obviously since I can't predict what's going to hit me next, I can't really prepare for one of these interviews by just doing a bunch and memorizing answers to whatever I miss. I always try to get the company to accept a code sample so I can show that I can actually *DO* the job instead of talk about it, but most opt for the tech screen first.
Can anyone recommend any books on OOP design that may help with these stupid tech screens? Or do you have any other recommendations on this at all? I'm really just interested on getting input on how to be both a stronger interviewer with this respect (the interpersonal interviews, etc. I'm actually very strong on), as well as a more productive and better developer. I'm specifically - right now at least - looking for a job doing Rails development, since I like it a hell of a lot more than anything I've done with PHP and those are the only two languages I know reasonably well. I just find that there seems to be a very elitist culture among employers for Rails jobs, and I've heard the phrase "not senior enough" more times than I care to count.
Finally, regarding management. Has anyone else felt like there's an invisible barrier that people just will never give them a chance to be in a leadership or management position? Every organization I've been in, this has been a problem for me - zero room for career advancement. Maybe it's just me - I'm fully willing to accept that as a reality. However, I suspect that it's more a "management" ideal where they don't want good "nerds" becoming managers because they have to replace those "nerds". I don't mean this in a derogatory sense, but I think some typical "management" people do. Does anyone else get this impression, or am I just full of it? And does anyone have any tips on how I might be able to transition out of development at the company I currently work for, and into a management role at another company? What kind of job titles or descriptions should I be looking for? I've looked for things such as "web manager" or "development manager", "development director", etc., but those types of jobs seem to be few and far between.
I know this isn't purely a Ruby or Rails related question, and I do apologize for that. However, I know that there are some experienced, knowledgeable and helpful people on this list, and I'm hoping one of you will be able to offer some advice.
Thank you!