Как человек, работавший (работающий) и в софтверной компании и в IT отделе коммерческой фирмы могу сказать, что и там и там есть свои плюсы и минусы. Главное - выбрать подходящую фирму, а главное - подходящий проект и грамотно себя в нем поставить.
В коммерческой компании нужно во время "посадить" фирму на крючок, т.е. не прозевать тот момент, когда они уже завязли на тебе, т.е. не смогут найти адекватную замену тебе и в то же время ты еще не до конца реализовал проект. Вот в этот момент и можно диктовать свои условия. Если чуть раньше, то могут вообще все переиграть и отказаться от твоих услуг. Если чуть позже, когда бОльшая часть проекта сделана и он уже на стадии опытной эксплуатации, то могут найти тебе замену на поддержку. Плюс в том, что пока у фирмы есть необходимость в модернизации софта ты будешь нужен. Если правильно себя поставишь, то за тобой будут ходить как за "священым животным", ты будешь единственным, кто сможет облегчить труд других работников, кто сможет избавить их от рутины. Но как только будут насыщены потребности персонала фирмы, ты окажешься ненужным. Это минус. Главное - не прозевать и этот момент, при этом либо сподвигнуть (заинтересовать) руководство в новом проекте, либо свалить. Большой минус коммерческих фирм - это то, что ты находишься в разряде "обслуживающего персонала", т.е. твой труд прямо не влияет на доходы компании. Грубо говоря - деньги для фирмы зарабатывают другие, а ты помогаешь им это делать. Еще один минус - это варка в собственном соку, т.к. фирма не занимается IT технологиями. Так же фирме будет абсолютно безразличен ваш профф. уровень, главное, чтобы вы выполняли совю работу, поэтому обо всяких курсах, сертификациях, семинарах можно забыть. Вобщем главная цель программиста, работающего в коммерческой компании - взять все IT хозяйство в свои руки, по возможности никого туда не пускать, стать незаменимым уникальным сотрудником, без которого работа всей компании просто встанет.
В IT компании Как я уже говорил, тут тоже нужно правильно выбрать фирму и проект. Желательно, чтобы фирма диверсифицировала свою деятельность, т.е. не занималась чем то одним. Идеально под это подходят системные интеграторы, которые занимаются внедрением IT технологий, поставкой аппаратных комплексов, а так же разработкой программного обеспечения. Это нужно для того, чтобы в один прекрасный момент ваш начальник не сказал вам о том, что софт плохо продается, поэтому в этот месяц ЗП не будет. Далее, нужно правильно выбрать момент прихода в компанию. Самый правильный момент - это прийти на так называемаемую роль "мессии", когда есть проект, который практически еще не начат и к тому же "горит" и никто не знает как его реализовывать. Конечно, тут нужно правильно оценить свои силы, а так же запущенность проекта, НО если вам удастся его вытащить, то можно считать, что должность начальника отдела у вас в кармане, а так же безмерное расположение руководства, чьи задницы вы спасли от гнева заказчика. Это конечно идеальный случай. Желательно идти на новый проект, в котором будет "непаханное поле" для собственной самореализации, которая в итоге должна поставить вас на "правильное" место в команде... ну может не в роли начальника отдела или руководителя проекта, но в качестве ведущего программиста точно. Плюсы работы в IT компании состоят в том, что при правильной политике руководства, у вас всегда будет работа, причем правильная работа, а не то, что можно назвать понятием Help Desk. Вам будет интересно. Так же при "правильном поведении" есть возможность продвижения по карьерной лестнице, что само собой потянет за собой и оплату вашего непосильного труда
В правильной фирме есть большой шанс "нарваться" на то, что вас пошлют... на курсы повышения квалификации, а так же семинары по тем или иным направлениям и продуктам разработки. Т.е. есть хороший шанс повысить свой профессиональный уровень ну и заполучить парочку сертификатов. Так же огромный плюс, который впоследствии можно представить как и минус это то, что ваш труд непосредственно приносит доходы фирме.
Теперь о минусах. Во перывх - это возможная конкуренция за "место под солнцем", т.е. вам прийдется достаточно активно крутиться, чтобы удержать свою позицию, иначе "вот тот умный молодой парнишка, которого взяли две недели назад, может вас обскакать и выставить себя в более выгодном свете..." Во вторых - постоянный темп, т.е. если вы сделали свою работу по одному проекту, то будьте уверены, что отдохнуть вам не дадут и срочно переведут на "латание дыр" в каком нибудь другом горящем проекте. Ну и в третьих, как я уже говорил - ваш труд напрямую связан с доходом фирмы, а он соответственно - с вашей зарплатой. Поэтому если вдруг отдел маркетинга сработал плохо и не привлек покупателей на вашу "коробку", либо старый заказчик не хочет заключать с вами новый контракт, то можно остаться на бобах.
Фффууух... вроде как основное написал. Есть конечно еще много мелких тонкостей, но это уже второстепенно.
P.S. Программист работает и в это время постоянно ищет работу...