I am of personal opinion that startups are the ideal place to start your career. Mainly because you get to do a lot of work yourself and also as there are fewer people the bonding between them will be better. What do you guys think?
I agree, though the formal training you get from larger companies can be a good alternative.
I think its important to get experience in both small and large companies. Different people thrive in different environments, so you should try to get as much experience as possible while you are young, and you can get a good feeling for what kind of environment is best for you.
I think starting your career at a startup can be a good way to become fixated on your own patterns that may or may not make sense to other developers. Many startups give Jr developers too much creative freedom in their code which can make for some huge abominations.
Other startups do a good job of having lead devs mentor the less experienced developers.
This question is far too vague and subjective to get any decent answers to, but that is my opinion on the matter.
Make sure you get paid every 2 weeks instead of every month. I worked at two startups and they both failed. Both still owe me money :(
I personally prefer working for smaller companies, but they need not be startups to have the benefits you mention. 37 Signals is always extolling the virtues of smaller companies on their blog, and they take specific steps not to grow so that they can keep them.
Job security is always going to be a worry in a startup, if it is fresh and unproven however. More established companies don't necessiraily = stuffy and opressive. A more well defined structure could actually let you get up and running and taking responcibility sooner in your career than otherwise, esepcially if they are looking for new / junior programemrs to take on less mission-critical tasks which they are unwilling to pass onto experianced developers, who are usually busy on other things.
STratup indeed. i did my own and it was invaluable experience. BUt not just the coding, but the whole business side of thing. Being a drone programmer in a big company shields you from that, which is not as good
Its a good thing to see the whole picture. Great experience.
I found a lot of rewards working for a startup at the beginning of my career. I had a lot of fun and learned TONS of stuff that was above my experience level at the time. Then the company crashed like the Hindenburg. Still, I got to keep my computer and monitor.
Now, with a family and kids I would be much more cautious about a startup and would ask a lot more questions about financing, target market, etc.
Be prepared to work insane hours, bond closely with your fellow warriors, and invest your emotions in this venture. If you don't believe in the company when you sign on, it is unlikely that you will come to feel that way later. If that is the case, find another startup, there are tons of them out there.
I started at a startup (?)
IMO
Pro's
- More responsibility
- A better array of tasks, you tend to get to do all aspects of the software lifecycle rather than sticking to one or two areas
- More personal pride when things go well
- Big fish little pond :)
Con's
- Way more stress. The people who started the company will expect you to be as passionate as they are. If you want the potential awards for a startup, you have to work hard for it. Expect to work overtime.
- Startups are usually with younger people, so you might not have as much of an opportunity to learn. In my one they had only been programming a couple of years more than me. When I moved to a bigger company I worked with very experienced programmers and as a result I learnt a lot more
- Less job security
- Generally less pay
- Less structured career progression
From what I have seen where i live, i disagree. Software development is a skill that needs to be practiced. Most startups I've seen throw a lot of best practices out the window, because they don't think they have time or money to "waste" on it. (Programming without a spec anyone? Hack and code all night).
A well seasoned shop is where I think someone should start. Learn the correct way to do things and why. I remember first being out of college thinking that I knew a ton about how to do things, I was sadly mistaken. Once you learn how to do things correctly, you can take short cuts in the future and know the consequences.
I would say this largely depends on your personality. I know many folks who are both a) smart and b) risk-averse. They work for places like IBM, EMC, Lenovo, etc, and have done so since they were in school.
Personally, I do far better in a start-up, or small company, because there are fewer barriers to: communication, productivity, customers, senior teammates, etc.
However, start-ups and small companies are far more likely to have a high level of risk in their operation because they don't have the depth of time, name recognition, and size that a place like IBM would.
It's also possible to find a dynamic, "skunk works"-like group in an established company (for example, the R&D teams at GE R&D) that are acting like a start-up, but with the lesser risk of being a big company.
There are plus-points and negatives. The pluses, as I see them, are along the lines of the following:
- it's exciting
- you get to do a bit of anything / everything (if you want to, and sometimes if you don't)
- potentially, share-options can provide some reward further down the line, but probably best not to count on this
- you'll usually find the management aren't rigid and jaded, and are willing and able to take on new ideas and new ways of doing things. This means you get to have a say (to some extent, depending on your position) on how things are done.
- as a developer, it means you don't spend time working on horrible legacy code. You get to start from scratch, and (of course!) do it right...
The negatives:
- it's highly risky (check out how well funded the business is before you join)
- lots of start-ups have a good technical idea but no idea how to market it. That's fatal, and depressing for employees.
- young techies running companies sometimes get it right, but just as often get it horribly wrong, so you may find yourself the victim of their inexperience / experimentation
- you don't get much respect from clients and partners (but on the other hand, you might actually get to interact with them on a meaningful level, if you want to)
Anyway, I'm sure there are hundreds of other positives and negatives. My overall summary is this: if you can afford to take the risk (or for some reason you believe it's a highly risk-free start-up) and you enjoy the thrill of a roller-coaster ride, go for a start-up. If you want stability, go for a big, established company.
Grass is always greener.
I started in a big company (Motorola) and loved all the training I got, the huge variety of co-workers, the opportunity to move between a lot of different projects, and the international travel.
I probably wouldn't have got all those things at a start-up, but I would've got other benefits to replace them.
I started my career at a startup, and now work for a very big company. While both have advantages and disadvantages, I think the biggest plus at a startup is the impact you, as an individual, are able to have on the whole company. If I'd spent some time at a big company before, I would have appreciated it much more at the startup.
My first job was at a startup. I was there for 6 months. Heres my breakdown of it:
Its hard work. We used to put in 12 hours daily, often even on weekends. Sometimes we worked 2 shifts on the trot. There were times when i was called in urgently at 12 in the night because something broke and they didnt know what.
You teach yourself a lot. Often startups do not have the luxury of a lot of experienced developers. Infact NO ONE at the place where i was knew Crystal Reports and i had to learn it myself and hammer out reports within a really tight deadline.
1 + 2 => You will learn more in those months than you probably ever have. Having done those things there gave a huge boost to my resume.
You will either absolutely hate your projectmates or absolutely love them.
Your pay may or may not be below minimum wage, but if you are willing to sacrifice some luxuries for some experience, startups are great.
Startups separate boys from the men... and make men out of boys. (srsly).
Short:
In a startup you are always mission-critical. Working in a large based company is a chance to learn good (and bad...) practices to help you later when working in a startup.
Longer:
I worked in a startup at the beginning of my career. I did learn a lot of technologies, but didn't really learn the process of making software. I'm now working in a b-i-g software company and I'm learning the business every day (and still have much to learn). The next startup I'll work at, or hopefully found, I'll bring my improved practices with me.
Hope this helps.
Asaf.
I freaking love startups. I hope to go from startup to startup to startup as they succeed. If you are passionate, and dedicated, and have big ideas, and like being close to the people you work with that's the place for you. It's great to be in a situation where your ideas can drive the business. If you are working with Rockstar developers this is especially true.
I feel like as IT groups get larger it is very hard to keep them from becoming disfuctional.
The only negatives are stability which is rough if you have a family, and the off chance you are working with bad coders they will likely influence your work being in such a small environment. Also, be wary of promises of wealth and equity. I know people who bet on that and took smaller salaries and are still waiting.
I love startups for the dynamic atmosphere and the ability to just get stuff done. No worry about titles, who is "supposed" to do it, etc. Just get it done and move on.
I hate some startup operations that think they can do everything outsources or virtual. You have to be careful of the environment. In a small company start a severe problem with a central officer can cripple you with the entire company. There is no chance to complain to their boss either... A lot of times there isn't one. Make sure you fit with the group, that is the most important thing.
If you go to work for a startup, be very critical of how they are running their company and what they are trying to do.
It's best if they already have someone buying their product or funding the startup for a specific purpose of buying the product.
You really don't want to work for a startup that has "Going Public" or "Being Purchased" ANYWHERE in their business plan. Ask about these goals in the interview, if they are enthusiastic about the idea or are actively looking for funding, keep away.
About funding, you want a company that is really against the idea of external funding. Make sure they are more interested in running lean than taking the money to buy new window dressing and marketing people.
Be aware of the concept of service vs product. A service startup can be quite stable, services are a great way to fund your company. The more emphasis they put on a product that isn't making as much money as the services, the more wary you should be. Many startups will make the services group second class even though they are the only ones that make money--all the money will be fed straight into the "Product" and the product team acts as a giant anchor that drags the company straight to the bottom.
Part of going public/being sold is to have a high ratio of Product over Services (you don't want to be a service company to go public). The desire to create some product is an indication that the company might want to go public, which--again--is not a good thing for you.
Just a little justification in case you haven't worked at a startup: When you are trying to go public or sell, you generally stop trying to target the customer and start making the company itself the "Product". This is obvious--selling the company becomes the goal, so the company IS the product. This means you won't please your customers, and more often than not, the company will fail completely.
The nice thing about startups is you get to really get involved in all aspects of the development. You usually get to establish what and how things are done. That can be the bad side of it also. There is usually alot less experience to draw on in a startup. This leads to alot of avoidable mistakes being made.
As has been said by others, there are advantages and disadvantages to starting at a startup. In my case, I started at a startup and was there for just over 6 years. My experiences were the following:
In a startup, you may have to wear multiple hats as there isn't going to be people who are experienced with networks, setting up computers, etc. I had to install all the software on my machine as well as on a server or two back in those NT 4.0 days.
The lack of people can be a plus in that your boss likely doesn't have many underlings and is likely high up on the company food chart, e.g. he is the CTO while in a big company there is the team lead and then the manager of all developers and then a director and then finally a VP.
The excitement of the company that doesn't know where it is going can be good and bad. The two startups I've worked lacked process and formal methodologies which can be nice if you want to avoid doing tests and enjoy cowboy programming.
The lack of formal process can be a hinderance in not learning some tools that others may find common, e.g. design patterns or UML may not be taught where there is a lot of spaghetti code that focused on "getting it working"
I loved the diversity of experience. My most startuppy experience was with a firm that had moved out of the boss's basement the previous week; I was employee #5. I made coffee, took tech support calls, took out the trash, redesigned the main product, answered the phone, met with user representatives, helped hire our office manager, walked backup tapes to the bank for safekeeping, managed the LAN, installed phone extensions, taught people how to use the Internet, got videoconferencing up, hacked some C in a very non-C shop, did on-site troubleshooting for clients all over the 48 states, and set up practical jokes when they were most urgently needed.
I learned a lot in five years there.
I think that the difference is irrelevant, the people are key. Not to mention that some big companies are structured in a way that some programmers only work on product-specific small teams with an atmosphere similar to startups, yet surrounded by the framework of the big corp.
Work for people who treat you well and don't look like they're heading into a wall. I've worked for big and small companies alike who took very bad decisions/had retarded business plans and wouldn't listen. A single very stubborn project manager can be just as damaging as the administrative complications of many people having to share power in a hierarchy-oriented big company.
While there seems to be quite a correlation between startups and management assuming that they have the right to force bad working conditions on their employees, I've experienced great and bad working conditions in both big and small shops.
To me the ideal company would be one run by smart people who have experience in delivering quality products. It doesn't matter if it's their first shot at running a company, as long as they have experience in making great products. I avoid people fresh out of school with "the best idea ever" like the plague.
Actually I've been approached by even worse once, a guy out of school still living with his parents who wanted to "have smart people on his team" (unpaid) to "build the next google". He didn't have any idea of a product or service though. He just wanted to be the next google. While this is a pathetic extreme, unrealistic goals and lack of focus are indeed signs of a bad place to work for, big or small.
My first job was with a start-up, and I was there for four years. You're right. You usually get a lot of responsibilities, and due to the size, the bonding at a start-up is very easy and instantaneous. I still stand by the advice that I give to people starting out: try to find that nice small company (50-100 people) from which you launch your career. One key advantage at a start-up is that you "see" all the job functions. You'll meet that accountant, you'll know what marketing does, you'll deal with sales. At a start-up, you'll often be sharing the same eating space with these important job functions. Knowing how these people approach their work helps broaden your world-view, and it's very difficult to get that at a big company.
In my humble opinion, fresh graduates need to start at a large company, where fresh graduates will get trained/mentored in formal method of Software Engineering as well as industry standard good programming practices. Once fresh graduates spend a couple of years in a large company, they will have absorbed all necessary competencies they need to excel as a software engineer. Then, they can move into smaller companies where there is much more excitement and opportunities to became a key employee faster. This way, fresh graduates get a solid foundation, on which they can build their career.
Startups and small companies are too different things. Many of the posters here have mentioned the pros and cons of working at a startup so I won't go into that myself.
My first job was at a small company that had been around for a few years already and were growing. When I started I pretty much was involved in every part of the software development lifecycle as others have mentioned here, and also installation, testing and support! All of this has enabled me to be a software developer who has good experience of all these and who can interact with customers!
I landed a new job just last month at a small company, only 20 people, with a very small technical team of which I am the second developer. The company itself has been around for 26 years, so is definitely not a startup but feels that way just by the way it is run and the way people interact with one another. I will also definitely be heavily involved in all aspects of the lifecycle, and everything is also in ASP.NET which I previously don't know!
So from my experience it would be beneficial to start at a small company but not necessarily a startup, as you do need to be working with people who know the job in your first role so you can learn from them.