3

Собственно вопрос для меня очень актуальный. Как мне стать программистом?

В настоящий момент я работаю маркетологом (более 3 лет), однако с детства и до сих пор моим хобби был комп, поэтому пока не поздно хочу работать по призванию. Пробовал кодить, но по сути баловался. В универ на очку уже поздно (26 лет), а заработок не хочу терять. Доход приличный, да и родственники не поймут))

С чего мне начать? Я планирую года за 2-3 постепенно превратить свое увлечение в дополнительный источник дохода, а там может и в основной.

Какая структура знаний должна быть? Что мне нужно знать? Какие языки учить и в какой последовательности?

Сферу деятельности я определил пока веб-разработку, т.к. данная категории легче на фрилансе (поправьте меня, если я ошибаюсь).

Может у кого был подобный опыт....надеюсь на советы.

Вобщем подведу итог: Как мне с нуля стать программистом с актуальными навыками и знаниями?

Nicolas Chabanovsky
  • 51,426
  • 87
  • 267
  • 507

8 Answers8

34

Для веб направления:

1) Учите HTML, смотрите примеры, сайты, исходные страницы сайтов. Достигните понимания в структуре html, т.е. можете сами от руки написать табличку, жирный текст, списки, заголовки, ссылки, якоря и т.д. Поймите что такое теги, атрибуты и т.д. и научиться правильно искать информацию по html (т.е. не обязательно знать все теги, можно просто уметь их находить)

Где писать: блокнот, простые Web редакторы (с вводом только текста)

Источники информации: различные учебники, в том числе и в интернете

время освоения: если уделять по 1-2 часа в день, можно за 2 недели освоить

2) Добавьте к HTMLу CSS, это таблица стилей. Т.е. программирование еще не добавилось. Для начало надо будет понять что это за штука (css), и зачем она нужна. С помощью нее можно прописывать стили. Так же научитесь искать информацию.

Где писать: блокнот, простые Web редакторы (с вводом только текста)

Источники информации: различные учебники, в том числе и в интернете

время освоения: если уделять по 1-2 часа в день, можно за 1 неделю освоить (если до этого вы поняли html)

3) Добавьте к этому JavaScript. Вот тут то и начинается программирования. На этом этапе посоветую изучить простые основы программирования: переменные, условия, циклы, функции. Пытайтесь писать простые вещи, и хорошо освоить основы, т.е. уверенно ими пользоваться. Поймите иерархию структуру HTML-а, и научитесь на чистом JS обращаться, получать и изменять элементы. Повторюсь, на чистом JS (не стоит лесть в JQuery на этом этапе)

Где писать: блокнот, простые Web редакторы (с вводом только текста)

Источники информации: различные учебники, в том числе и в интернете

время освоения: если уделять по 1-2 часа в день, можно за 1-2 месяца освоить (но это индивидуально, как мозг человека примет логику)

4) Перейдите к серверному языку (я напишу про PHP). Поймите синтаксис у языка (циклы условия все принципы программирования будут схожи с JS, но синтаксис немного отличаться, ну и некоторые принципы). Поймите как генерится страница, что такое POST и GET запросы.

Где писать: Web редакторы, NetBeans

Источники информации: различные учебники, в том числе и в интернете, http://php.su

время освоения: если уделять по 1-2 часа в день, можно за 2-4 месяца понять основы (но это индивидуально, как мозг человека примет логику)

5) Углубите знания в JS (+JQuery) и PHP, тут уже предлагаю сделать связь между JS и сервером. отправлять принимать POST и GET запросы. Время освоения 1 неделя.

6) Освойте Базу Данных (SQL) вообще понять что и как работает. как работать с таблицами, какие запросы и как лучше делать.

Где писать: любая СУБД (Access, Oracle, ...)

время освоения: если уделять по 1-2 часа в день, можно за 2 месяца понять основы

7) Изучите связь БД и PHP научитесь делать запросы из PHP, добавлять получать данные. Отображать таблицы и т.д. Для php советую работать с mysqli. Углубите свои полученные знания в пункте 6.

Где писать: Web редакторы, NetBeans

Источники информации: различные учебники, в том числе и в интернете, http://php.su

время освоения: если уделять по 1-2 часа в день, можно за 2 месяца понять основы

8) Углубитесь в знания программирования, ООП, освойте знания классов, как в JS так и в PHP (любой другой серверный язык). Практикуйтесь, создавайте свои классы и т.д. Дальше время не буду писать, т.к. все расплывчато.

9) Углубиться в программирование, вообще, вы должны знать много-много различных алгоритмов и теорий. До этого момента мы занимались детским садом, подготовка к школе, так сказать. На этом шаге предлагаю изучить различные алгоритмы (сортировка - хоть и есть стандартные средства но знать надо, комбинаторика, графы, деревья - часто бывают полезны для веб разработчиков и т.д.). Это я к чему, для повышения навыков программирования решайте Олимпиадные задачи, изучайте готовые алгоритмы. Изучите дополнительные возможности программирования: регулярные выражения и т.д. Изучите теории и поймите как лучше создавать структуры баз, какие базы и таблицы необходимо создавать. Изучите теории по оптимизациям и написанием нагруженных систем (кэширование и другое).

Где решать: например тут http://codeforces.ru/

10) Применения знаний, пробуйте изучайте различные CMS конструктора: Ucoz, Joomla, Drupal, ModX, WordPress. Применяйте свои навыки на них. Напишите по одному сайту на каждом из них )

11) Углубление, фреймворки, изучите какой-либо фреймворк, например Yii для PHP. К этому моменту вы должны уметь уже правильно создавать структуры баз, свободно писать на JS и PHP. Так же можно попробовать подключаться к стороним API, например к Vk.

12) Ну и напоследок для веб-мастера почитать про СЕО, знать хотя-бы что это за рыба.

13) САМОЕ ГЛАВНОЕ! Везде, и тем более в Программировании необходима Практика!, надо постоянно пробовать, ничего страшного если что-то не получается, вы должны учиться на ошибках, как своих так и чужих. Что-то прочитали?, тут же пишите. Есть друзья, которые без конца читают книги по программированию, но, практики у них мало.. в итоге книги много им не дают (ну знает он что можно вот так сделать, а сделать не может, т.к. не умеет применять свои знания к делу). Это как изучение боевых искусств - мастер вам каждый день по 15 часов объясняет что и как делать, куда бить, куда уходить, а вы просто слушаете. Когда дело дойдет до боя, вы ничего не сможете применить. Поэтому: НУЖНО ПРАКТИКОВАТЬСЯ

p.s. Надеюсь помог )

IVsevolod
  • 6,744
  • JОбезательно допиши...мне интересно следующие этапы для Web.Удивлен ,очень удевлен рамками изучения.... – zloctb Apr 24 '13 at 08:41
  • @zloctb вы на счет каких рамок, в смысле нашли что-то полезное, или не согласны с подходом? :) – IVsevolod Apr 24 '13 at 10:15
  • Прекрасный ответ же! – VladD Apr 24 '13 at 10:29
  • 3
    @IVsevolod, хороший ответ. Сам бы я добавил изучение работы сети отдельным пунктом до изучения серверной части. На том уровне, чтобы человек мог представить картину в целом - что куда ушло, почему, что вернулось и почему оно работает или нет :) – xEdelweiss Apr 24 '13 at 10:35
  • @xEdelweiss ну это понять можно за пару часов, а так да, человек должен понять отличия сервера и клиента, как идут запросы, где выполняется php (например), и что он возвращает. – IVsevolod Apr 24 '13 at 10:51
  • 1
    @IVsevolod,даже не надеялся на столь шикарный и подробный ответ, сразу виден опыт и четкое осознание профессии. Большое спасибо. – Existkun Apr 24 '13 at 11:15
    1. Перейдите к серверному языку (я напишу про PHP)

    ...

    – jmu May 10 '13 at 09:52
  • Все правильно написали. Практика и еще раз практика. – Adobe May 01 '15 at 10:17
9

Нда... 1-й ответ предполагает переформатирование гуманитария в несчастного веб кодера, правда, топикстартер желает им быть - так что ответ вроде в точку.

Добавлю свои 5 копеек в холивар:

Мозги гуманитария устроены немного по другому нежели мозги приверженца точных наук (к коим программирование как ни крути относится). Гуманитарий рассуждает обычно качественными категориями типа:

творчество Некрасова пронизано болью к судьбе русскаго крестьянства, а Фет как потомственный помещик не понимает русскую общину и занимается больше самолюбованием и идеализированием русской деревни

В программировании все не так. Четкие конструкции if-then-else, do-while и проч. Я вообще сомневаюсь, что переформатирование гуманитария в прогеры возможно, хотя примеры конечно же есть.

У меня был друг гуманитарий, который стал прогером - так вот, в итоге он мне выдал, что программирование это как написание книги: нужно придумать сюжет (идея программы), рассадить персонажи (объекты, классы, модули, рутины), описать сюжет взаимодействием персонажей (правила общения классов, модулей) - в общем это схоже с придумыванием своего мира. Классический пример тот же самый Толкиен со своими кольцами: придуман внутренне непротиворечивый мир с иерархией персонажей с разными расами, есть общая сюжетная линия, есть основная идея и все такое.

Так вот мессидж то в чем? Толкать гуманитария в быдлокодеры это неправильно. Надо метить в архитекторы или по меньшей мере в тим лидеры. Пусть подучит UML, методы ведения прожектов и проч. Гуманитарию это будет сподручнее чем биться с идиотскими атрибутами разметок или с дебрями каскадных стилей.

Ну конечно, технологии знать надо - но начинать с HTML это в общем то маразм. Пусть сразу берет в руки кайло типа Java/C#/C/C++ и вперед.

Barmaley
  • 81,300
  • 2

    в несчастного веб кодера

    Толкать гуманитария в быдлокодеры

    Насколько я понимаю, в вашем представлении, веб дев(уточню - который пишет не на Java/C#/C/C++/etc), в своем большинстве, это толком ничего не умеющее УГ. Мой скромный опыт показывает, что среди C#/C++/C/Java/etc разработчиков гавнокода и плохих практик не меньше, а степень упоротости писавшего, нередко, стремиться к небесам и приводит к мыслям об убийстве куда чаще

    начинать с HTML это в общем то маразм

    Эм, ИМХО, любого рода разработчик вообще не знающий HTML (даже если это не веб дев), это, как-бы, печально, не?

    –  Apr 29 '13 at 08:03
  • Как бы объяснить то... HTML отношение к программированию имеет ровно столько же сколько имеет отношение знание английского к программированию. Знать надо, но считать знание HTML входным билетом к программированию - как то неэтично даже. Вебдев это все таки более гордо, нежели HTML верстальщик, не? – Barmaley Apr 29 '13 at 08:09
  • 1
    поставил + за мнение )

    гуманитария в несчастного веб кодера

    почему же сразу в несчастного?

    В программировании все не так.

    Быдло кодеры рассуждают четко: если, то, иначе. Но суть программиста в том, что он из этих правильных конструкций, создает свой мир (как вы уже сказали), причем мир зачастую не подчиняется четким последовательностям. Программист должен иметь хорошее воображение, смотреть на всю задачу издали.

    Так вот мессидж то в чем? Толкать гуманитария в быдлокодеры это неправильно.

    • Мне нужен стул, как его сделать?
    • Делай сразу диван, на нем можно спать.
    – IVsevolod Apr 29 '13 at 08:12
  • @Barmaley, а причем здесь верстальщик? Вы же пишите о тим-лидах, архитекторах и т.п., архитектор который не знает HTML? четко... –  Apr 29 '13 at 08:13
  • Знать надо, но считать знание HTML входным билетом к программированию - как то неэтично даже.

    а еще зачем человеку ползать, он же может сразу бегать научиться?, ведь ползание относится к бегу так же как и HTML к веб разработчику?

    – IVsevolod Apr 29 '13 at 08:19
  • 4
    @Barmaley спасибо, Вы помогаете мне понемногу понимать ООП
       придумать сюжет (идея программы), 
    
    

    В ООП сюжет ещё круче (теологический). Мир был пуст, и пришёл программер и населил мир объектами, которые сами живут, и с другими объектами общаются. И населил ими мир, и нажал кнопку Start, и всё завертелось... А в результате междусобойчика объектов получается нужный программисту результат.

    Так что гуманитарию не надо ломать мозги. Мозги надо ломать технарям...

    – alexlz Apr 29 '13 at 08:48
  • 1
    html и другие страшные слова - это всего лишь инструменты, позволяющие добиться определенных целей. знание html не сделает гуманитария программистом, пусть даже и веб. из всего списка, имхо, основное - это 13 пункт из ответа @IVsevolod. все остальное гуглится по мере продвижения в обучении. пытливость ума - первичный "половой" признак программиста.
    ЗЫ тимлидер, рассказывающий команде про персонажи и сюжет - это тот еще цирк будет ))
    – Yura Ivanov Apr 29 '13 at 09:19
  • 1
    @alexlz, вопрос тут в том, а этот мир будет крутиться? Или быстренько подвиснет...

    А по делу, так ТС надо просто для начала прочесть какую-нибудь книжку по программированию и понять интересны ли ему подобные алгоритмические головоломки.

    Если захватывают, то можно уже думать в какой области дальше изучать.

    – avp Apr 29 '13 at 09:22
  • 2
    @avp: это зависит от умелости Демиурга! Наш-то мир вон как глючит :-D Явно отладочный билд. – VladD Apr 29 '13 at 10:09
  • @avp И с каких книг начинать гуманитарию? С R. Gabriel'а (www.dreamsongs.com)?

    А насчёт ООП -- раньше я его считал очень хорошим инструментом для симуляционного моделирования (вспомните Simula67). Оказалось, что и тут есть инструменты получше...

    – alexlz Apr 29 '13 at 15:34
  • @alexlz, с чего начать именно гуманитарию, не знаю.

    Мне, например, классе в 9-м средней школы случайно попалась толстая книга про системное программирование для IBM 360 (на русском, конечно).

    Как устроены ассемблер, линкер, загрузчик и т.п. Помню, здорово меня тогда эти "головоломки" захватили.

    Про ЭВМ и программирование я в то время почти ничего и не знал.

    – avp Apr 29 '13 at 18:47
  • Толстая книга про системное программирование... Я помню из толстых "Программирование на IBM/360" Кларенс Джермейн. Но содержание уже не помнится. С той техникой я завязал давно. – alexlz Apr 29 '13 at 19:27
  • @alexlz, вспомнил (и даже нашел, чего только сейчас в сети нет, просто поразительно). – avp Apr 29 '13 at 20:33
6

Сначала определитесь, что Вам ближе: Веб, прикладное, системное, мобильное.. Если без разницы, то можете и не начинать, это не для Вас. На данный момент самыми востребованными считаются программисты java и c#. Я как java программист, могу посоветовать начать с Deitel, How to program Java. В русском варианте ее нет, но там объясняется все с самого нуля. Помимо этого смотрите видеолекции (на Youtube их полно) и закрепляйте знания на практике, придумывайте условия сами и решайте. Когда будете уверенно выполнять такие задачки, зайдите на какой-нибудь сайт фрилансеров и посмотрите что к чему, подтягивайте знания и пишите программы уже там. Дальше само пойдет. Удачи.

  • 1

    самыми востребованными считаются программисты java и c#.

    Java понятно, это да. Но сколько проектов на C# вы знаете?, а сколько сайтов ежедневно пишется на том же PHP, Perl?

    – IVsevolod Apr 24 '13 at 10:43
4

Ух какая дискуссия! А мне вопрос весьма по нраву! Только вот о сроках большинство молчит. 2-3 года - понятие весьма относительное, потому как не ясно в каких условиях эти 2-3 года заниматься, а учить надо много и усердно. Вам бы действительно определиться с курсом. Но от себя считаю нужным добавить, что только денежная мотивация в вопросах программирования - это намного хуже, чем если бы к этому был прибавлен интерес самой сути.

Я бы вам посоветовал призвать тот факт, что ничего серьёзного качественно не освоить если заниматься этим после основной работы.

3

Странный вопрос - почему его не задают себе сотни миллионов людей?
Логичнее, задать поставить вопрос - не КАК, а ЗАЧЕМ?
Вот как мне стать космонавтом, дворником или шахтёром? ;)
Да взять и пойти в шахту.
Как стать экономистом - взять и пойти поступить в ВУЗ на экономФак.
От такой постановки вопросов, я могу судить об одном, - У Вас странное мышление, а значит и логика...
В программировании, как в основном и в других науках, специальностях без ХОРОШЕЙ логики и ПРАВИЛЬНОГО мышления будет очень тяжело и учиться, и тем более качественно трудиться.

Какая структура знаний должна быть?

Логичная: Теория+ практика

Что мне нужно знать? Какие языки учить и в какой последовательности?

Знать - чем больше и глубже, тем лучше.
Языки, те которые нужны по направлению. Веб - значит вэб. Прикладное - значит прикладные. Низкоуровневые - значит таковые.
Последовательность, от простых до серьезных
Я начинал с DOS (bat-файлов), потом HTML+CSS, немного попробовал JavaScript, потом было Delphi+DB+MS Access, потом PHP+mySQL.
Всё ведь логично.


P.S. Не стоит гуманитарию идти в технические науки.
Ни чего хорошего из этого не выйдет.

I_CaR
  • 2,700
  • I_CaR Во-первых, спасибо за ответ и личные примеры.

    Однако, касательно вашего первого замечания, я с вами не соглашусь.

    ЗАЧЕМ - я четко очертил в вопросе: -"...хочу работать по призванию" -"...превратить свое увлечение в дополнительный источник дохода"

    Поэтому, я задал вопрос сперва себе, а потом и всем: КАК мне это сделать? -Какая структура знаний должна быть? -На чем основывать свое обучение? -На чем сконцентрироваться в порядке очередности?

    Поэтому, я считаю что мыслю логично и последовательно.

    – Existkun Apr 24 '13 at 06:58
  • 3
    Delphi уважаю, я с него начинал. И на мой взгляд Pascal-е подобный синтаксис наиболее удобный для старта в программировании ) – IVsevolod Apr 24 '13 at 10:45
  • @I_CaR, у меня мышление и логика еще более странные и ничего, мне меньше чем 2-3 года понадобилось. –  Apr 24 '13 at 13:14
  • 1
    @AlexWindHope у программистов у всех странное мышление ) – IVsevolod Apr 24 '13 at 13:18
3

1й ответ хорош. Попробую внести немного конкретики по части языков. Попробуйте начать с Pyton, он простой и приятный, к тому же вполне злободневен. Потом C# и/или Java. Это 2 очень похожих языка, достаточно большая доля вакансий девелоперов требует знания 1ого из них - по моему, это показатель.

По вышеперечисленным языкам есть множество литературы на любой вкус.

  • посмотрите HTML для понимания того что это такое.
  • SQL

После всего вышеперечисленного можно начать писать собственные приложения под мобильные платформы (Androdid, Windows mobile, Firefox os - возможно тоже будет популярна через пару лет).

Если для вас это будет хобби, то написание и продажа мобильных приложений, как мне кажется, будет лучшим методом монетизации.

Alexbelk
  • 440
0

А зачем вы пытаетесь зарабатывать программированием? Я не очень рад тому, что мне пришлось моё хобби превратить в профессию. Иногда приходится выполнять работу на скорую руку и кое-как, что очень неприятно с позиции моего перфекционизма. Я люблю писать программы вдумчиво, не спеша и с удовольствием - только тогда получается то, чем потом гордишься. Представьте, что вы художник, а заказчик хочет получить от вас такую размазню, что вам самому её писать противно. Такие моменты трудно пережить, не потеряв часть вдохновения, так важного в искусстве. Лучше быть маркетологом с хорошим окладом, а своим хобби (рисование, программирование и т.п.) заниматься в остальное время.

По вопросу "где учиться". Я учился не на программиста, но курсе на 3-м уже точно знал, что буду им. Да и работодателю пофиг, где программисты учились. Им важен опыт, а не диплом. Знания устаревают очень быстро, и ни один ВУЗ не поспевает готовить актуальных программистов. Тут вы ничего не потеряли - вам, как и всем остальным, придётся обучаться на ходу.

  • Ответ не совсем по делу. ТС не собирается учиться в вузе. Он как раз хочет заняться самообразованием и спрашивает, с чего начать. – neofit Apr 24 '13 at 05:52
  • Егор, я на данном этапе не ставлю цель заработка на программировании. Я хочу реализовать себя, и сделать это на качественном уровне. Для этого нужна определенная система или структура как строить свое обучении и в каком направлении. Финансовая сторона вопроса возникнет при определенном опыте и возможности конкурировать, а процесс работы с заказчиком придаток от которого не деться =) – Existkun Apr 24 '13 at 05:53
  • 4
    Не хочу создавать новый ответ, но темпы разработки очень зависят от места работы. Где-то надо, чтобы всё работало "вчера", а в других местах можно несколько вариантов реализовать и не опоздать со сроками.

    По поводу того, что превращение хобби в профессию это плохо.. Тоже не согласен. Намного приятнее заниматься тем, что тебе нравится, чем чем-то другим.

    :) На правах пищи для размышлений.

    – xEdelweiss Apr 24 '13 at 06:01
  • @xEdelweiss - насчёт "можно несколько вариантов реализовать и не опоздать со сроками" - это фантастика. Кто вам за вашу нерасторопность будет з/пл платить? Работа программистом - это работа на капиталиста, у которого интересы понятно какие. – Egor Skriptunoff Apr 24 '13 at 08:07
  • 2
    @Egor Skriptunoff, что касается нерасторопности и фантастики - это ваши домыслы. "Интересы понятно какие" - ваша точка зрения. Работа не всегда предполагает сделать что-то только бы заработало, есть заказчики, которые хотят качественного результата. А качественно не всегда можно сделать просто постучав ко клавиатуре. – xEdelweiss Apr 24 '13 at 08:15
  • 1
    @xEdelweiss - сколько живу, ни разу таких идеальных и терпеливых заказчиков не видел. )))) Там, где платят не копейки, всегда не позволяют расслабляться и выдавать меньше, чем мог бы (по мнению начальника). Если у вас есть реальные контрпримеры - в студию! – Egor Skriptunoff Apr 24 '13 at 08:24
  • 1
    @Egor Skriptunoff, нет. На этом я закончу этот бессмысленный спор. – xEdelweiss Apr 24 '13 at 08:26
  • 1
    @xEdelweiss - Неудивительно, что тебе нечем подвердить истинность своего опрометчивого заявления. У тебя нет реального опыта работы (судя по твоему возрасту в профиле), и жизнь ещё не поводила тебя фейсом об тейбл, в голове у тебя ещё радужные мечты вместо осознания не очень красивой реальности. Ты согласишься со мной, но чуть позже ;-) – Egor Skriptunoff Apr 24 '13 at 09:04
  • 2
    @Egor Skriptunoff мечтатель :D Что такое писать код "вдумчиво"? Разве вы генерируете проект "на лету"?

    Что такое "получать удовольствие"? ~70% процентов вашего времени занимает то, что вы делали раньше. Какое же это удовольствие?

    На скорую руку можно вполне нормальный проект сделать: готовое решение + модули, подправить чуток - заказчик доволен, деньги появились, время осталось.

    – lampa Apr 24 '13 at 09:23
  • 2
    По поводу хобби: это ж вообще круто, на работе можно заниматься своими проектами и никто тебе и слова не скажет, ведь ты программируешь) А детально изучать, что ты там делаешь либо никто не сумеет в силу своих знаний, либо просто лень. – lampa Apr 24 '13 at 09:23
0

Для начала я бы хотел вспомнить мысль из книги "Верёвка достаточной длины, чтобы выстрелить себе в ногу": лучшие программисты получаются из гуманитариев, потому что гуманитарии лучше, чем технари, умеют выражать свои мысли.

Если Вы из Питера, можете поучиться у меня (правда, я специализируюсь на прикладном программировании, но базовые вещи всё равно не повредят).

Modus
  • 8,885
  • 26
  • 66