I work for a small company, and like most small companies everyone has very broad responsibilities. If I worked at a big company, a lot of my duties would be split between senior and junior members. The size of your company will have a bigger impact on your job than just about anything else. Microsoft and Apple might have a very different corporate culture, but they’re very similar compared to (say) working for a company with seven employees. Having worked at both a large company (over 100 people) and small ones (less than 10 people) I have to say I like working in a small outfit far better. Maybe I’ll compare the two in another post, but for now we can just simplify it by saying your duties will become more diverse as the company size shrinks, and narrower as it grows.
…
Estimating a taskSomeone will come to you with a software problem.
Tiny problem: “The daily reports don’t print the full date, which is causing paperwork confusion”.
Small problem: “We need a program to scan a set of directories and delete files older than X days or larger than Y bytes”.
Large problem: “We need our software ported to run on Macs”.
Gargantuan problem: “Write a full-featured operating system”.
Your job will be to draw on your knowledge and think about how long it will take to solve this problem. How many programmers will be needed and how much time will they need? I do this on a regular basis, although it’s the part of the job I hate most. In a larger company this sort of thing is generally given to the senior programmers.
Once you give your estimate, someone else (probably not an engineer like you) will look at the problem and the cost to solve it, and decide if it’s worth it. If it is, you’ll end up doing…