Looking for some input on career advancement w/ Rails

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!

Hey all,

I'm having a tough time finding a good job working with Ruby and
Rails,
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

I understand your pain - I've meandered into developing over many
years, but with no history of formal training in computer science, so
some of the terminology that should be "obvious" goes past me too.

(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.

You don't say where in the world you are... I'm in the UK, and focus
on short-term contract/freelance roles. The market for Rails here is
quite quiet - with more permanent jobs appearing than contracts. But
the permanent rates seem very low - I think a lot of companies are
hoping to get graduates with no experience to hit the ground
running...

On the first point, am I being too paranoid about working for start-
ups? <snip> is a fear like this in today's modern
silicon valley environment?

It's just as likely to happen for whatever company you work for - I
say to my friends, who claim they couldn't take the "unpredicability"
of contracting, that at least I know I have a job for the next three
months, which is more than they can say :wink:

it's just the formalized theoretical stuff I'm weak on.
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?

The Object Orientated Though Process
http://www.amazon.co.uk/Object-Oriented-Thought-Process-Developers-Library/dp/0672330164/

Coder to Developer
http://www.amazon.co.uk/Coder-Developer-Strategies-Delivering-Software/dp/078214327X

Computer Science: an Overview
http://www.amazon.co.uk/Computer-Science-Overview-Glenn-Brookshear/dp/0321544285

I've read all three of the above, and the first two are very good
personal development books. The third is good for filling in the
blanks - and you might skip chunks of it.

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?

Management: they're not starting up their companies to make *you* rich :wink:

Have look at "The Passionate Programmer", by Chad Fowler. It's worth
the time you spend reading it.

http://www.pragprog.com/titles/cfcar2/the-passionate-programmer

I've been working many years as project manager, and now I'm very
happy working "only" as senior developer. I think career advancement
isn't equal to "advance" to management jobs...

Wow, that's negative. Sure, in some cases people didn't get paid for
their last couple of weeks work which is unfortunate, but "screwed"?

If you got paid while you were there and learned a lot, what's the big
deal? You could as easily come to work at BigCo one day to find out
your division was being shut down and poof! there goes that job.

How does that feel different? Having gone through both scenarios,
I'd say: not at all. Next step in each case: go find some other work.

And personally, assuming I wanted a "job", I would far rather be part
of a small team at a startup than Anonymous Cog # 389976 at BigCo.

YMMV :slight_smile:

Hassan is right - I'm working at a smallish startup (<100 employees) -
it's scary at times, but I don't live in fear of missing a paycheck.
Conversely, the budget and purse strings are rather loose here, and
the perks are often nice. The best benefit of taking a job at a
startup is the opportunities for creativity in problem solving. At
BigCo, they already have a process fully defined, you're Cog # 389976,
you do your part of the process. At TeenyCo, nobody knows quite what
they're doing half the itme and *you get to define the process* from
whole cloth. It's cool. Try it, you'll like it.

Note that, depending on the company organization, a title like
"project manager" may not actually be a vertical promotion from
"developer". At the company I work at (a digital services wing of an
adverstising / PR business), project managers are the principal
liaison to clients and handle a lot of the tedious parts - collecting
requirements, chasing down documents, tracking deadlines, triaging
incoming "OMG THE SITE IS DOWN" calls, etc. However, as a developer, I
don't "belong" to a particular PM and work with several depending on
load and client needs.

You may also want to expand your search beyond "Rails-only" shops;
there's an awful lot of places that are carrying around legacy PHP,
etc. systems but want to develop with the "new hotness" for new work.
Being somebody who can handle dealing with both would seem to be a
significant advantage.

BTW: if you were in Ohio, I'd be wanting your resume. We're currently
looking to hire a developer with (mostly) PHP and a little Rails
background. A certain bank whose name is a verb starting with C has
seriously depleted the local Rails pool... :slight_smile:

--Matt Jones