

Ask HN: What is it like being a programmer at a small/mid size software company - masokupride

I am looking for some perspective.<p>I would like to know how my working situation compares to others&#x27;, to try and figure out what I should look for to identify a good company to work at, and also to rule out potentially unrealistic expectations I might have.<p>edit: also how do i post to ask hn correctly...
======
MichaelCrawford
I definitely prefer small companies. My frustration with large companies is
that at time I see the executives making ignorant decisions, and I am not in a
position to point out to them a better course of action.

On the downside smaller companies may be unable to weather sales downturns. If
you work for a small company you feel far more personally responsible for the
livelihoods of your coworkers.

Small companies can adapt to changing market conditions quicker. An Apple
evangelist who visited me at Working Software - where we had about 12
employees - expressed great envy at our ability to get new products to market
quickly. One very real example was that I once said "Hey Dave, it would not be
hard at all to modify Toner Tuner's code in a very small way to make a
hardcopy watermarking utility". That resulted in Working Watermarker after
only a few days work, which was a huge hit.

The big advantage of big companies is that sometimes they can take losses for
substantial periods of time. However you might get the axe in a big layoff.
I'd rather be with a small company, so I can see it coming.

------
mrcold
Small companies are a lot like limbo. Because everything is both good and bad
at the same time.

 _Flat hierarchy_. Great because you're in the middle of things. Easily talk
with the CEO/CTO, make decisions that matter and change the company direction.
And it sucks because you can't advance in any way. You're a developer for life
and once you get good enough, the salary stops rising too. You're hitting a
boring plateau pretty fast and there is no way to escape it.

 _Very little politics_. Great because who likes being a politician when you
can write awesome code. Find a problem, just point it out and solve it. No
boring meetings and no artificial stopping blocks. But with few politics you
don't feel appreciated. No perks, because _" we're small, we work with
passion"_. No promotions. No company events, or very boring ones. And pretty
much no respect. Think of it like having a lot of brothers and sisters. You
can be the best at what you do, but still get shit just because it's funny.

 _Work with the latest technologies_. Who wouldn't want that. Always on the
bleeding edge. Always in the front row. But when everybody in the company is
doing it, it's pretty hard to maintain standards or even a stable system. Each
week there's a discussion about switching to this awesome new thing and dump
the old crappy thing that brought us where we are.

Both small and big companies have good parts and bad parts. If you want
structure, perks and a ladder to climb, go with a big company. If you want to
play in the mud and build a castle out of it, go with a small company. And if
you're just starting out in the field and want to learn the ropes, definitely
go with a small business. Everybody will help you learn because there don't
have reasons not to.

------
alashley
I've worked at a few small companies. At one of them, I worked with a father
and son team in the office and a handful of remote contractors. Another one I
worked at was a startup where I was the sole developer and worked with 3
"C-level" exployees -- a definite red flag. And at the company I work for now,
there are about seven of us in the office, and its a mature and friendly
environment.

I have also worked for the government and larger private organizations.

Here is what I've found from my experiences: \- At smaller companies, you have
more of a sense of ownership of the work you're doing. At bigger companies,
some days it felt like the work I did or the progress I made didn't matter. At
my current company, I have more of a sense that my work is steadily advancing
the product and my daily progress really does matter.

\- Smaller companies are more flexible when it comes to the technical details.
At smaller companies, I feel like there is often a fail fast mentality.
Whereas in some larger organizations, you have to fill out forms and documents
before you can fill out forms and documents to allow you to write code.

\- Smaller companies allow you to grow faster, mistakes are often more costly
and thus you quickly learn not to make the same ones over and over. Bigger
companies can move at a snail's pace when it comes to personal growth.

------
willstepp
I've worked at both large corporations and early-stage startups and for me a
small software company is the ideal size (I've been at a company with < 100
employees for the past two years). From my experience you have more job
security than a start-up but do not have to deal with the soul-crushing
bureaucratic processes and politics of a corporation. You also have the
ability to make a real impact as an individual and usually get to work with
the latest technologies. I'm sure this varies in degrees from company to
company but in general I've found it to be true.

~~~
masokupride
thanks for responding. could i ask you to go into more detail about what the
experience of a relatively junior engineer looked like at these smaller
companies?

Would you expect them to be given a task to complete or feature to implement
or bug to fix, with some flexibility on how to solve that problem.

Alternatively, would you expect the work to be more like the color between the
lines books we had as kids, where you are pretty much just doing the busy work
of implementing a mostly predefined solution.

would you expect a developer to be able to choose what he worked on. would
there be any flexibility in what language or libraries could be used, or would
all of these decisions be made already.

what do you think are the most annoying things new developers do. Are there
some common bad habits/ ways of thinking that one should try to avoid falling
into.

~~~
willstepp
As a junior developer you do have flexibility, but there will more eyes on
your work to make sure you're going down the right path, following the best
practices...etc. Then as you establish a positive track record you are given
more flexibility.

To an extent developers can choose what to work on, even juniors, but not
completely. The product team and upper management decide which features and
bug fixes have priority. But its common to be able to choose from a pool of
projects what you want to work on, based on your experience or interests.

New developers are most annoying when they have not yet learned how to balance
when to figure out a problem for themselves and when to ask for help, but its
not their fault. Its just something you have to get a feel for.

Another annoying thing is being dogmatic about what they have learned and not
considering that there may be equally valid alternative methods. But this
applies to all developers.

------
zerr
I've never worker for big companies, but I'm thinking about it as being an
easily replaceable cog in a wheel and that scares me...

On the other hand, in small companies you have a significant role, everyone
knows you, etc... There is another type of fear here - fear (feeling guilty)
of leaving, disappointing people. You fear that if you leave the company will
fail, or at least will have a huge loss...

