Если ты реально умеешь программировать, т.е. успешно донести до машины мысль, да так, чтобы она ее в точности выполнила, то это очень здорово, но этого категорически недостаточно.
Еще для успешной реализации любого проекта требуется ориентироваться в проблематике, владеть контекстами. И если программировать абстрактно научиться вполне себе возможно, то вот контексты везде свои, и осваивать их нужно по месту, так-сказать в бою...
Я очень долго писал бухсофт, при этом не имея толком знаний по бухгалтерии. Я всегда работал в плотной связке с опытными профильными специалистами, по сути, являясь скорее переводчиком с человеческого на машинный. Причем профильные специалисты хорошо выполняли своё дело, но молча, буквально как пленные партизане. Поэтому моей первейшей задачей всегда было разговорить бухгалтера, помочь осмыслить и сформулировать в мельчайших деталях процессы, которые они на автомате делают ежедневно в течении многих лет. Разумеется никаких ТЗ я никогда в жизни в глаза не видел. Вернее так, ТЗ я формировал себе сам из того, что удалось выведать у бухгалтеров и их руководства.
Один из вариантов разговорить - это прийти и рассказать своё видение. Люди любят поправлять, вносить коррективы, добавлять деталей. :) Это называется посплетничать. :)
Годный продукт чаще всего получался раза с третьего-четвертого, потому что поначалу тебе вообще два слова связать не могут. И не потому, что не хотят, а потому, что для них это совершенно непривычный вид деятельности - рассказывать непосвященному популярно о сложных процессах. Вообще говоря это уметь надо, с этим не рождаются. Поэтому твой священный долг помочь им в этом.
Второй этап, это когда вроде более-менее разобрались, нашли взаимопонимание, начало что-то получаться. Какое-то время ты буквально лепишь горбатого, выносишь на свет Божий, а тебе говорят неплохо, но... Там не так, тут не то, этого вообще нет, а вот это не нужно... Ты переделываешь раз, второй, третий, двадцатый, и вот вроде финиш уже показался на горизонте, как, внезапно, у заказчика просыпается аппетит и на тебя обрушивается бурный поток хотелок с доработками, которые вообще не вписываются в рамки первоначальной архитектуры и процессов.
Твой мозг начинает уже конкретно закипать, ты мужественно сначала пытаешься прикрутить к проекту еще стопятьсот костылей и подпорок, но он уже и так состоит из одних только костылей. В тебе просыпается творец, перманентное ощущение что все надо на корню переписать пересиливает и ты героически все переписываешь и даже получается конфетка... А потом все повторяется с начала... Потому что специалисты заказчика уже распробовали продукт, уже здорово экономят время и силы, уже втянулись и хотят большего...
После энного проекта ты начинаешь понимать, что в целом 90% работы повторяется от проекта к проекту практически если не один в один, то очень похоже... Плюсом ты уже местами консультируешь специалистов заказчика, как им лучше делать их работу, потому что ты умеешь лучше их структурировать и систематизировать, а процессы в организациях не всегда выстроены оптимально.
Из раза в раз ты начинаешь производить одни и те же действия, а что делает программист, когда процесс повторяется хотя бы трижды? Правильно, автоматизирует. Только тут ты уже автоматизируешь свой труд, и именно так рождаются всевозможные библиотеки, фреймворки, компиляторы и прочие крутые инструменты разработчика. Но сначала нужно собрать обширный ворох всевозможных граблей и налепить десяток горбатых...
Внезапно выясняется, что во всех этих процессах софтскиллы рулят и решают.
В общем мой совет - качай всё, особенно софтскиллы и отставить кукситься.
ПыСы: Большинство сотрудников в компаниях, где ты будешь обитать, будут считать тебя то ли кудесником, то ли магом, то ли телепатом, то ли всё вместе. Каждый будет искренне убежден, что ты знаешь все то же самое, что знает он и плюс еще кучу всего, чего они не знают, поэтому будут грузить всем чем угодно. Так же будут искренне верить, что ты обладаешь доступом в пятое измерение, что у тебя времени вагон (т.е. примерно 48 часов в сутках, а может и 72, кто тебя знает то...) и ты многозадачный. В общем будут проявлять все мыслимые и немыслимые формы неадеквата. Это нормально. Через это нужно пройти, научиться во всем это плавать, как рыба в воде. Это здорово прокачивает тебя как личность, если ты настроен на подобный прогресс.
Если же хочешь просто сидеть в сторонке и кодить, то тебе нужно искать компании/команды, где все айтишные процессы уже выстроены и формализованы, где всю эту работу за тебя уже сделали аналитики, манагеры, лиды. Где ты придешь на готовую архитектуру, с детальным описанием кодстайла. Где тебе будут скидывать посильные таски, продуманные и детально прописанные. Да, такие компании тоже существуют, но их нужно искать, т.к. они пока в меньшинстве...