Всем, привет. И добро пожаловать в конгломерат программляндии.
В общем, привет новичок или опытный — это уже не так важно. Т.к. мне, уже давно известно насколько все опытны и неопытно в одно и тоже время. Сейчас редко найдутся те, кто могут с нуля сделать стоящую программу, при этом без сучка и задоринки. Однако, есть немало опытных, и даже профессионалов, которые с трудом могут научить подрастающее поколение, которое потом погрязает в хуйфака (хаки, лайфаки и прочее дерьмо, пришедшее к нам с демократией, сами знаете откуда), по сущевству закрывающее ими свои пробелы в элементарных знаниях. Однако, любящих спросить об этих знаниях, но все равно остаться засранцами. В общем, таким дорога в одно место без излишней скромности, т.к. никогда не будет такого, чтобы можно было, чему-то научиться и при этом, остаться прежним. На это, у мира, есть свои причины и они нормальны по конам мироздания. Следовательно, не вижу смысла заострять на этом внимания, так что пойдем дальше.
О направлениях
И для начала стоит определиться с тем, для чего изучаешь язык Си/Си++ (Паскаль/Объект Паскаль, по аналогии). Тут много вариантов, однако перечислю мне знакомые:
- системное программирование,
- прикладное программирование,
- программирование микроконтроллеров,
- программирование АСУ ТП, АСУП и т.д.,
- веб-программирование.
Каждое из этих направлений имеет свою специфику, техническую информацию своей области деятельности и ее довольно много, а также свои подходы и нормы в разработке и реализации программного кода (реализация и есть, само кодирование на деле). Быть программистом всея на этапе новичка — это выбор, откровенного чайника, которых хочет запутаться. Нормальная личность, будет выбирать одно из направлений и осваивать стязу. Так что, первым делом, необходимо сначала определиться с направлением, узнать чему оно может научить и освоиться с этим до той мере, которой сочтете необходимым. Т.е. в системном программирование, лучше помогает узнать ОС, чем чтение книг. Программирование микроконтроллеров, помогает лучше понять применение электроники с программной начинкой. Программирование АСУ ТП, помогает лучше знать технологические процессы, приборы и механизмы, которые применяются, а также понять, как это все работает на промышленных рельсах. И разумеется, познать прелесть высшей математики, физики и всего нужного для этого направления. Некоторые, что-то у себя ради, интереса даже, мастерят на даче из более простых средств, доступных каждому, т.к. контроллер можно купить и за 20000 рублей, а не покупать промышленный за баснословную сумму для обычного человека. Веб-программирование, помогает и учит разбираться с элементами интерфейса и уметь применять это по отношению к разным сферам деятельности. К примеру, данный блог тоже создан на основе постепенного созидания основ и азов веб-программирования, с последующим их применением в плане Веб 2.0 и это работает на всех пяти браузерах.
И разумеется, десерт, без которого вообще не возможно возникновение всех ранее перечисленных направлений. Т.к., именно, благодаря созданию прикладных программ и пошли идеи об создании программ направленных в применение не только на компьютере, а в применение компьютера вместе с программами для других областей деятельности. Понимаю, многие могут не согласиться с моей точкой зрения, однако для начала они не понимают, на что обращают внимание и называют это вехой развития, даже не разобравшись толком, и моя точкой зрения — это по сути и смыслу понимание и собственный путь познания со своим накопленным опытом. Так что, для саморазвития необходимо научиться понимать и принимать, что вам не нужно писать кучу программ или всегда стремиться их заканчивать, вам нужно накапливать опыт. А уже потом, по мере накопления достаточного опыта увлекаться написанием программ. Иначе, потом придется исправлять все свои огрехи по самообучению, коих будет достаточно много и они будут являться камнем преткновения. А тем, кто любит молвить, что у них такого нету, сами отрицают то, что они еще в процессе движения к своему камню преткновению. Т.к. не мудрено догадаться, что каждый выбор в чем ограничивает последующий выбор на одном и том же пути.
И на заметку, для тех кто в танке. Первые программы были прикладного характера, полноценных ОС еще тогда не существовало, а когда они появились, появилось и системное программирование, которое в наши дни позволяет сделать из одноплатного компьютера полезную вещь. И под собственные домашние нужды также.
И напоследок по данной тематике, могу сказать, что прикладное программирование — это широкая сфера деятельности, как все программирование, как сфера деятельности. Так что, путь этот гораздо непонятнее и сложнее достижимый. А чему, можно научиться в этом направлении, зависит прежде всего от того, чем займетесь, поэтому, чтобы не быть голословным это направление опишу лишь в общем по механике самих программ. Итак, в этом направлении можно научиться делать именно программы, работающие на компьютере, которые лишь немного затрагивают техническое оборудование, которое может быть применено, как дополнение компьютера, чаще всего периферийное оборудование (специализированное в том числе). Здесь, вы научитесь основам интерфейса прикладных программ, которые работают именно на компьютере, а не браузере. Также научитесь строить свои графические и прочие интерфейсы для взаимодействия с пользователем, другой программой, или периферийным оборудованием. А также освоите в некоторой степени, инженерную психологию и дизайн, чтобы не лепить горбатого, как во внешнем виде графического интерфейса, так и в плане его эргономичности и удобства. Однако, только в некоторой степени, т.к. большинство программистов самоучки и врядли изучали, даже дизайн интерфейса или инженерную психологию, а это в технической сфере или программах для быстрой работы, важный элемент всей системы в целом, который делает программу нормальной для применения. И т.д.
В заключении скажу, зачем это все выразил именно с таким уклоном в данном пункте статьи. А выразил и проявил для того, чтобы дать понять насколько могут быть интересны направления программирования, чему можно научиться попутно, чисто принимая в них участие. Т.к. программы писать, научиться дело не хитро, а уметь применять и продолжать накапливать свой опыт дальше — это уже опыт познания системы само поддержания, т.к. познавать надо многое, а учиться бессистемно — это удел, дилетанта. С другой стороны, мы можете увидеть познание другого человека, применяющего системный подход для самообучения. Он конечно длиннее и дольше, зато основательный и проработанный, т.к. это выбор мастера своего дела, либо идущего к этому.
Кто ты?
Логичный вопрос на тему «Кто я, среди других программистов?» встает перед каждым, кто хочет постигать их стязу. Находить ответ удается не всем и далеко не сразу. Однако, есть несколько распространенных ответов на этот вопрос, а это:
- программист,
- кодер ПО (или просто кодер),
- разрботчик ПО,
- проектировщик ПО,
- системный программист,
- инженер-программист,
- веб-программист.
- И т.д.
Как вы все, понимаете, самое первое в списке — ответ, либо дилетанта, либо не разобравшейся в себе личности. Вторые — эти ребята, простые программисты знающие свое дело, однако без хорошего и грамотно составленного ТЗ они фиг тебе напишут программу. Третьи — они себе ТЗ и сами могут составить, однако они сначала побеседуют с тем, кому нужна эта программа или будут делать по распространенным шаблонам, например мне нужна программа для ведения учета посещения посетителей, как прикладная программа, тогда они мне напишут, либо СУБД, либо в более простой форме, со всеми отчетами и прочее. Четвертые — эти личности работают в больших компашках и получают соответственно, однако они занимают именно проектированием, в результате которого на выходе получает ТЗ и необходимая информация для его реализации, кодерами ПО, при этом составляется все это так, чтобы было меньше доработок в последующих этапах создания ПО (как правило большое по своим объемам). Пятые — это личности, занимающиеся работой именно с ОС, либо применение возможностей работы с ОС для технических нужд, однако ориентируясь на применение компьютера, а не другого железа, которое как правило объект взаимодействия с подобными программами, например программу для осциллографа такой написать может, однако он не обязан в дотошности знать сам осциллограф, только нужное для работы. Шестые — эти личности, знают как свою техническую сферу деятельности, так и программную составляющую, однако они не обязаны быть прикладными программистами или программистами всего и вся, потому что их задача, в конкретном направлении деятельности. Седьмые личности, тоже не абы кто, они могут спокойно написать программу на веб-интерфейсе, при этом не важно для чего вы ее будете применять, важно знать применение программы и получить недостающую информацию по объекту взаимодействия, например веб-интерфейс для взаимодействия с камерами через протокол TCP/IP, который можно вывести через браузер на любой компьютер, имеющий для этого доступ по сети.
И напоследок, скажу, что это самые распространенные и часто встречающиеся направления деятельности программистов всех видов и мастей. И также могут встретиться весьма редкие направления деятельности.
Например, сам больше отношусь к программистам-энтузиастам. Мы выбираем только те проекты, которые нам интересны и что-то дают нам, либо соответствуют наши взглядам и требованиям к проектам, либо интересны сами по себе. Тем более, что мы предпочитаем поддерживать свой опыт, накапливать и развиваться в своих направлениях. И мы не видим нужды прилагать свои усилия в том, что рутинно, либо конкретное батрачество — это нас не развивает, не дает ничего нового. Да и от программ, мы хотим видеть толк, чтобы они были применимы другими. Т.к. нам не интересно создавать инструменты для других, которые нельзя сделать по своему умеренными или шедеврами, или даже сделать их уникально интересными и в тоже время деревянными в обиходе в хорошем смысле этого слова. От таких проектов мы отказываемся, получив лишь минимум от нашего участия. И нам, интересно исследовать что-то новое для самих себя. Меня к примеру, больше всего привлекают механика программ, их система взаимодействия, движки, ядра, интерфейс по необходимости, так предпочитаю простоту с проработанностью. В плане применения, мне интересны не простые программы для обывателей, а более заковыристые программы, например сделать робота, построить жизнь в байтах, написать свой формальный язык с исполнителем и т.д. Все это, однозначно развивает, в этом чувствуешь жизнь и бываешь счастлив по своему. В этом, я чувствую, что живу и живой. Все остальное, простая рутина обычной жизни, которая скучна сама по себе. И мне не составляет труда заниматься разработкой, проектированием, а также реализацией, для это путь познания своих интересных моментов по жизни программиста-энтузиаста. И программисты-энтузиасты чаще всего подходят на свой лад к изучению разных направлений программирования, оставаясь при этом сами собою. Лично для меня это, так.
Так что, определиться в плане направления, именно вашей деятельности — это жизненно-определяющий момент вашего пути практики и применения подобных возможностей созидания. И многие из вас согласятся, что даже быть участником созидания ПО — это приятно и непередаваемое чувство творца, кузнеца и т.д.
Как развиваться?
Это последняя часть, данной статьи. Т.к. Больше и при этом понятно на словах, мне будет сказать совершенно нечего. Однако, сказанного уже достаточно, т.к. вы мало где найдете направляющего описания, а не шибко конкретного, которое дается чисто для галочки, а на вопросы вслед идущего ответов не дает.
И порою, важные вопросы в данной тематики бывают, такие: «как быть?», «как развиваться?», «как прийти к своей стязе?». Потому что, они встают сразу же, как только начнете этим заниматься, а свои ответы на них можно найти только постепенно. И никак, иначе, т.к. это жизненный путь, а не хрен типа купил-продал. Т.к., либо вы кто-то, либо фиг знает кто. Знаю, путь всегда тернист, а чего вы еще ожидали от жизни, роскоши? Фигушки, жизнь дает вам возможности и поддержку, однако всего остального вы добиваетесь своими, самостоятельными, действиями. Потому что, когда можете сделать что-то самостоятельно, то вы не только состоялись, а еще умеете это применять в деле. Значит, вы уже деятель собственного опыта, а не опыта другой личности. Тут то и начинаются интересные моменты пути, где вы начинаете понимать, что уже идете собственным путем, не волочетесь (топчитесь) на одном месте. Т.е. вы уже в пути, в теме, в процессе и т.п.
Как быть? Ответ прост, принять то, что вы ничего не умеете, однако хотите этому научиться. И именно, наработать в себе это понимание, чтобы не было детского представления об этом, а было чисто понимание. Т.к. вы не сможете знать, буквально все, это невозможно. И со временем это поймете и сами, т.к. не зря в ВУЗах говорят, что не могут научить всему, однако учат базе, благодаря которой у вас это может получиться, т.к. это зависит целиком и полностью от действий самой личности, а не тех кто ее учит. Однако, могу по собственному опыту сказать, что учиться самому без поддержки учителя сложно, но реально. Остальное зависит, от возможностей самой личности и наличия источников знаний. Так что, первый вопрос имеет такой ответ, «не важно, сколько я не знаю, важно, что могу научиться и хочу этого — это мой выбор».
Как развиваться? Ответ также прост, как и вопрос. Т.е. практика научит вас, однако не вся практика толкова для накопления опыта, а подход к накоплению знаний также важен по своему. А про системный подход забывать тем более, не рекомендую. Например, по началу вы изучите возможности и грамматику формального языка, потом опробуете стандартные шаблоны программ и приемы. И все, тут то вы и заглохните. Т.к. слишком будете заострять внимание на деталях, опуская из виду общее и целом. Это будет вашей грубейшей ошибкой, в чем бы это не выражалось и проявлялось, т.к. у всех происходит по разному, несмотря на распространенность часто встречаемых ошибок. Так что, развиваясь, расширяйте границу собственных познаний — это будет, вам, в прок. Интересна, электроника, соберите свою программу для подсчетов, сделали, молодцы, соберите большее, например программу для облегчения вашей рабочей деятельности, сделали, возьмите и сделайте программу более тесно связанную с оборудованием, например анализатор данных (сканер данных, читалку). Развивайте свои возможности, познавайте нужную вам информацию, разберитесь и вникнете в тему. Иначе, всю жизнь будете только кодером, который мечтает стать разработчиком. Так что, этот вопрос, имеет такой ответ: «не важно, сколько я не умею, важно, что могу посредством практики и расширения границ собственных познаний, а также применением накопленного опыта благодаря этому, создать интересное на свой лад — это мой выбор».
Как прийти к своей стязе? На этот вопрос многие дадут ответы, однако они будут из серии «смотри и делай, как я». Так вы только получите помощь, но не сможете прийти к своей стязе. Потому, что это путь самостоятельного познания того, кто вы. Следовательно, надо дать этому времени столько, сколько требуется и уделять этому умеренный подход. Да, и кто, кроме вас самого, сможет ответить себе на этот вопрос в конкретике и деталях (в статье я свою стязу описал и дал знать, что мне интересно в достаточных деталях для общего представления). Однако, к этому надо еще прийти, как раз в этом и есть ответ, который можно узнать от другого. А тут все просто, достаточно проявить и выразить системный подход. Т.е. сначала надо, найти сообщество себе подобных, либо самому пройти путь актуализации своей стязы, так поступали многие, кто сталкивался с одиночеством своей стязи. Принять участие, опробовать свои силы, даже в конкурсе поучаствовать или мероприятии. Одним словом, станьте своим в сообществе. И тогда вы со временем поймете, нравится ли вам быть таким или нет. Если нет, то ищите другое место или другой путь, тут все понимают, что путь самоактуализации личности — это, порою, тернистый путь и не у всех получается с первого раза, причем они не всегда сами в этом виноваты, т.к. применяют из того, что есть в наличии. А когда сами, виноваты в собственных ошибках, значит меняются сами, чтобы не повторять их больше. Для тех кто не понял самоактуализации личности — это путь самостановления, формирования личности. Так что ответ на данный вопрос, будет таков: «не важно, сколько я не знаю себя и своих возможностей, важно, что могу узнать это своим путем становления личности — это мой выбор».
В заключение
Понимаю, у многих из вас, будут «занятные мысли про статью», однако направляющие — это подсказки на вашем, как и моем пути становления самого себя. У всех они аналогичны, т.к. это по сути и смыслу каркас. А, вы, чаще ищете дополнения к каркасу, чем озадачиться основным, надеясь что это уже есть. Однако, в наше время каркасов очень мало, так что надо развиваться самостоятельно, коли хотите чего-то добиться конкретного в своей жизни. Либо довольствоваться малым, да не ворчать на жизнь, т.к. по сути и смыслом — это ваш выбор. Значит, вы, творец — своей судьбы и только, вам, решать, кем вы будете, и что для этого сделаете, а также насколько вы ответственны перед самим собою за свои действия.
Так что, желаю, вам, удачи и успехов жить по конам мироздания. =)