Hacker News new | ask | show | jobs
Ask HN: What is it like being a programmer at a small/mid size software company
7 points by masokupride 4101 days ago
I am looking for some perspective.

I would like to know how my working situation compares to others', 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.

edit: also how do i post to ask hn correctly...

5 comments

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.

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.

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.

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

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.

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