

job offer advice needed - cellis

job offer question<p>Hello ycers,<p>I have a question for all of you.I have almost run out of money saved from a couple years of freelancing and as a jr. dev, trying to bootstrap a startup, so I needed some cash. Over the weekend I applied for jobs and interviewed at two companies. Both of them are heavy .NET C#/C++ houses, and they both offerred me 40,000/yr + benefits. But thats where the similarities stop. <p>The first company i interviewed with had a Tom Brady look-alike for a "technical director", everyone was wearing some variation of Zegna (might has well have been, but could have been Target), creative colored walls, and was essentially a profitable "product" company ( 10-12 employees ), with $1.2mm earnings on $3mm in sales. They do a bit of extremely expensive consulting ($200+/hr), but their bread and butter is in their enterprise product. Their adherence to OO and relational db principles was rigourous to a fault, as demonstrated by the robust 4'x 2' diagram of their db on the wall of the TD's office. They just seem like a perfect fit. The td ended the interview by saying that it would be a very steep learning curve for me to understand their system, even with my (decent) understanding of software dev.<p>The second company's contrast to the first was so profound, that during the interview, I was tempted to laugh at the many unprofessional attributes of the place. Having previously worked as a (gasp) VB dev at a small firm (~20 employees, mostly fix-it IT guys), I thought I was used to a lax environment. But this wasn't lax, this was sloppy. I won't get into the details, but suffice it to say that twice I had to jump out of the chair provided to guests to evade the live-in cat. Being a web development company with no proprietary product, they were not profitable, and still funded by who-knows and the few $40 - $80k websites that they developed . They were very folksy, and I actually laughed quite a bit during the interview. Taking 40k from them seems like a cakewalk.<p>I'll end by saying that I think I would learn a lot about complex software and whats right(wrong) with it/how to build it, or I could just take the easy job,hack in my spare time, and make enough money to get on my feet until i decide I have something good enough to show VCs/yc. But then, yeah...I was wondering if "run upstairs" applied in this situation.<p>So<p>As a 20yr old, cs dropout, self taught programmer and aspiring startupper, which job would you take?<p>I appreciate all advice
======
nostrademons
#1 sounds almost exactly like my last employer, while #2 could be one of
several places I interviewed or had friends work at. I won't give you advice -
there's no conceivable way I could know enough about your situation - but I'll
give you some additional questions to ask:

For #1:

1.) How many customers do they have? An enterprise software company hasn't
achieved "product-market fit" until customers come to them. Since enterprise
sales often run $100K+, it's possible to be profitable without actually having
a viable product: you simply agree to customize the product until it exactly
fits the potential customer's needs. A company like this is effectively a
consulting company, not a product company, though.

2.) How easy is it for a customer to stop using the product, and if possible,
who are the customers? When I interviewed, I heard "We're profitable" and "Our
software is a critical part of our customer's infrastructure." But I
completely missed that "We sell to hedge funds" means "Our customers can blow
up and disappear totally", because I had no idea how the financial industry
worked. Then I read an article in BusinessWeek that named one of our customers
as potentially impacted by the subprime collapse. (FWIW, none of their
customers has blown up yet. But it was enough to make me nervous...)

3.) Does "a steep learning curve to understand their system" mean that they
have an intricate platform that nobody understands? This will slow you down,
particularly if they haven't attained product-market fit, and probably cause
you a lot of frustration. Also, home-grown systems are not transferable
knowledge; it's worthless to a future employer.

For #2:

1.) How good are their technical skills? Some founders are lax because they're
great hackers and don't have time to spend on mundane formal procedures. Some
founders are lax because they're just sloppy. In my experience, the latter are
far more common. However, if you can work with the former, it'll probably be
one of the most rewarding experiences of your life.

2.) Are they a product company or a consulting company, and are they planning
to become a product company in the future? I don't know anyone who has been
happy working for someone else's consulting company: basically, you can expect
them to take 50-90% of your billable wages, give you very little support, and
make you put up with their bullshit. However, you do get to see a lot of other
people's problems, and it's a decent jumping-off point for later jobs.

For both:

1.) How focused are each of them? In my experience, the best predictor of
success is focus. When I interviewed at a #1-like company, I heard "We have 4
products, so we don't need to score a home run or go bust. We can make a
succession of base hits and grow the company incrementally." It sounded
logical to me. After contributing 2 years and 2 products (out of their now 7,
only 2 of which have paying customers), I'm not so convinced. Problem is, all
those dead projects imposed requirements upon the core platform, which made it
much more complicated than if it only supported one product. Complexity slows
you down, and a startup really doesn't have resources to promote 7 products
anyway.

Really, if I have any advice, it'd be to learn as much as you can about both
companies _and where the founders are planning to go with them_ , and then
sleep on it. Go with your gut. You have more information than anyone here.

But understand that you'll probably be wrong. In my case, I went for #1
instead of an unprofitable VC-funded #2. In the intervening 2 years, the
profitable enterprise startup is basically where it was when I joined (well,
except that its existing customers like it better, it has 3 new products -
only one of which has paying customers, and its technology platform is even
more complicated). The unprofitable startup (where I played Foozball against
the CEO during my interview) has since attained profitability on its one
product, and has added a second product that's been doing very well.

BTW, I think people tend to overestimate the amount of knowledge they'll gain
from hacking on enterprise software. Much of it is incredibly poorly written,
and much of the rest isn't much more complex than what you'll learn from
reading through the LiveJournal source code. Enterprise software is complex
because every customer has these arcane little quirks in their requirements,
and then the product accumulates all these little special cases for all its
cuomers. This isn't the type of complexity that expands your mind, though:
it's death by thousand papercuts.

If you want mind-expanding complexity, read SICP, learn Haskell, buy _Building
Scalable Web Sites_ by Cal Henderson and read through the LiveJournal source
code, learn JQuery and read through the source code, and pick a fast open-
source webserver like Lighttpd or Nginx and read through its source code.

------
run4yourlives
You have essentially 2 options:

1\. Coast in the day job and work on your startup.

2\. Work during the day and put the startup on hold (or at least, focus less
on it)

If you choose to do option 1, you should avoid the first company. You won't be
able to coast there and the expectations would be that you are a fully
functioning part of their team.

If option 2 is the way you choose to go, you'll learn more and probably be
more satisfied working for company A.

My opinion, given your story is to go for Option 2. You're only 20, have no
formal development experience, and have an opportunity to learn a great deal
and possibly improve your financial standings. I would take the unpopular
opinion that your startup can wait while you invest a little in yourself. Most
of your peers are still in school.

If you do this, it's likely you'll learn a lot that you'll need to learn at
any rate. At least this way you'll discover these things on someone else's
dime.

------
asdf-oo
Don't go for the suits. Enterprise software sucks the life out of people and
give very little in return - as someone already mentioned you will deal with
the wrong kind of complexity - the lots-of-stupid-little-details-which-fuck-
you-up kind.

A large db diagram doesn't mean anything, and if there is a steep learning
curve you should be suspicious that the software is not so well engineered as
they want you to think.

"run upstairs"? Ok.... then...

Take the "easier" job. Do your work in 2 hours every day. Use the remaining
time for something useful for you. Learn.

------
brk
Option #1 all the way.

Sounds like an opportunity to learn how things are done right, or at least
close to right.

~~~
german
I'd go with that option too, except you love cats :P

------
mrtron
As a young programmer, the most important thing you need is someone to learn
from.

Someone to show you what obvious stupid mistakes you are making, and how you
can reach the next level in writing good code.

The first place looks like it will be a bit of a hassle because it is so
strict, but it will be meaningful to get that under your belt. The second
place sounds sloppy, like you mentioned.

~~~
nostrademons
A startup or small company is actually the wrong place to go if you want
someone to learn from, because any master programmers you meet will be so busy
with work that they don't really have time for mentoring.

I was fortunate enough to have a series of pretty accomplished mentors, and I
picked up some very valuable tidbits from them. However, tidbits (and the
privilege of looking at their code) was all I got, because we had to ship
product.

Ironically, the only time a skilled programmer in a startup will have time for
mentoring is if they're being marginalized by clueless management and can't
get any of their own work done. Unfortunately, top-notch talent under bottom-
rung management doesn't tend to stay very long...

~~~
brianr
Based on my experience this summer as the third programmer at a small startup,
I have to disagree. If you already have something of a background (i.e., you
know enough to at least hack together something that works) and are willing to
work hard, a startup can be an incredible place to learn. It provided 1) good
example code I could conform to, 2) the knowledge that other people would be
reading and working with my code, and 3) an environment where everything I did
mattered to the product. For me, this was an unbeatable learning-by-doing
environment.

------
corentin
There are two kinds of sloppy: sloppy because it's micro-managed by pointy-
haired bosses (in this case, yes, run away!) and sloppy because they just
don't know better. In the latter case, you can experiment as you like and
bring improvement; it's an interesting challenge and it's rewarding. And if
it's a relaxed and funny environment, it's even better!

Or you could go with the guys that know everything and are so proud of their
system (system that is sooo complex and hard to understand).

In both cases you'll learn something valuable, anyway.

------
ajkates
Haha, do what feels right. Still, there's always option 3: Find a team of
talented young entrepreneurs where at least one has the cash to float a
startup for a while. That way, you can avoid the "office job" entirely.

~~~
cellis
Yeah. I'm keeping my eyes open, but I haven't been able to meet any really
talented ones yet. Hopefully I will now (moving to a bigger city)

------
swhnorton
Option one sounds like it will put you near smarter people. If you want time
to hack on the side, but are out of cash, move to India and live on 150
dollars a month and hack full time.

Go with option 1 for sure.

------
bluishgreen
If possible go for the company with the larger number of people. Small
companies have lots of work (because of less people) and even though its good
for learning, as a startupper, you can use some spare time.

------
cellis
Well, for better or worse, I'm going with the enterprise job. Thanks a lot for
the advice, I took it all into consideration.

------
brianr
About #1 you said: "They just seem like a perfect fit." I'd go with your gut.

------
ajju
Where do you live?

~~~
cellis
Michigan. I was thinking of moving to SF, but right now I just don't have
enough money to setup out there. Also, MI is pretty cheap. Why you ask?

