Как стать хорошим программистом?

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

    Я с детства стал увлекаться созданием сайтов. С 6го класса делал первый сайт для своей школы, учил HTML и вставлял различные готовые ЯваСкриптпы в свои мелко-сайты. Начал покупать полезную литературу и осваивать CSS и HTML. Позже в 9м классе учился программировать на Делфи. Школьный паскаль указывать не буду — это все проходили.

    Потом на это дело я все таки забил, несколько лет занимался бизнесом и решил вспомнить молодость и пойти учиться в Компьютерную Академию. Два с половиной года потратил на обучение на веб-дизайнера. Программирование с++ мне вообще не далось, сколько не пытался его в курить — ни как не получалось. Зато пхп очень понравился, особенно в то время я был захвачен выводом из баз данных информации и начал развиваться в этом направлении. Сделал одному клиенту сайт на своем движке (что написал по книгам наших программистов) — интернет-каталог, вложил пол года в раскрутку. Сайт начал приносить прибыль причем большую и я стал опять заниматься коммерцией, забив на программирование.

    Короче я возвращался к обучению несколько раз и вчера вновь записался на годовые курсы по изучению пхп, зенда и целого списка нововведений в программировании.

    Почему вопрос был таков: Как стать хорошим программистом?
    Я могу копировать код и изменять его, подсматривать как делает кто то и делать так же, иногда дописывать несложные скрипты, но создать какой нибудь инструмент в программировании — мне нереально тяжело. То есть есть люди которые придумывают формулы лекарств, а есть те кто просто копируют их формулы и повторяют готовые открытые истины по учебнику.

    Когда я ходил по собеседованиям на пхп-программера — мне давали такие простенькие задачки на логику(а она у меня вроде есть) и PHP которые нужно было без интернета решить самому. Ну кто устраивался на работу и принимает на работу в курсе про задачи что принято задавать на собеседованиях. Я даже книгу скачал этих готовых задачек и пытался зазубрить — но на работе уже не мог вспомнить мелкие подробности и проваливался.

    Многие люди не могут стать 3д дизайнерами из за отсутствия определенного «визуального образа мышления» (не знаю как правильно сказать). Они представляют фигуры и объекты в голове и видят их не так как остальные из чего могут делать хорошие модели в том же 3д максе.

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

    Проходили ли вы такое и если да то поделитесь опытом, буду очень признателен!
    Как вы прошли путь от новичка до девелопера?
    Спасибо.

    Similar posts

    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 41

      +1
      А надо ли Вам это? Вы несколько раз упоминали, что с коммерцией дружите хорошо. Может заниматься тем, что хорошо получается?
      Алсо если очень хочется, то хорошим опытом будет освоение другого языка. Того же C++ с которым вы когда-то не сдружились.
        0
        Я же говорю что сами сайты получается создавать и раскручивать. Последнее время увлекся frameworkom Yii — все понятно почти, сайт на нем сделал себе, сейчас делаю на нем CMS — но хочется стать именно программистом а не верстальщиком и копипастером. Почитал много статей на хабре но ни где нет описаний как начинающий HTML верстальщик стал программистом и освоил тот же PHP на высокий уровень.
          +3
          Попробуйте найти интересную задачу по программированию и решить ее, потом другую, другую и другую… Курите маны, туториалы, гугл. Если ничего не выйдет — не отчаивайтесь; ходят слухи, что в вашем регионе сейчас много работы в областях, отдаленных от программирования :)
            +8
            Работа в отдаленных областях от программирования — это факт, только закончится она для таких подработчиков сроком от 15 до 25 =)
            +4
            > как начинающий HTML верстальщик стал программистом и освоил тот же PHP на высокий уровень.
            Ну дак это немного разные вещи. Зачастую «простые верстальщики» превращаются в годных разработчиков интерфейсов.
              +2
              Вы обязательно PHP программистом хотите стать? Пробовали другие ЯП, т.к. PHP далеко не идеальный язык и у него узкая ниша? Интересуетесь ли миром веб-разработки? Интересны ли другие области разработки, кроме веба?
                –1
                Когда учился то очень не плохо получалось на яваскрипте писать, но это такой язык который лично для меня очень быстро забывается. Через пару лет без правктики мне сложно даже вспомнить как выезжающую менюшку сделать =) Хотя когда учил писал скрипты интересные и вывод из БД с помощью ПХП потом все это дело оборачивал красивыми мувами и выпадающими менюшками. Но пойти учиться повторно решил на ПХП, так как очень нравиться его логика и простота. Не знаю даже как описать — но меня этот язык и даже больше Yii с ним в связке возбуждают не по детски.
                  +3
                  Мне кажется вы зациклились на PHP. Вы смотрели в сторону других языков и технологий(хотя бы, что вы знаете о RoR, ASP .Net и т.д.)? В ИТ надо всегда учиться иначе за год можно почувствовать себя динозавром. Для начала советую почитать «Алгоритмы и структуры данных» Никлауса Вирта.
              +5
              В свое время, я сформулировал набор навыков, которыми, по моему мнению, должен владеть каждый профессиональный программист. Не только Мастер с большой буквы, но и студент, который претендует на то, чтобы за его работу ему платили деньги.

              Добавлю. ИМХО, программист не профессия, а образ мышления. Этот набор навыков — умение решать задачи. Те, кто любил в школе, вузе математику, как правило таким умение обладают. А язык программирования может быть любой. Он лишь способ записи решения.

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

              Успехов!
                0
                Спасибо огромное, хоть кто то поддержал. И порадовал — так как математику я любил и был не первым но вторым в классе.
                  0
                  Зря вы так. Один из разработчиков Django — журналист. Тут главное иметь огромное желание, а образ мышления сам по себе появится. В среде моих знакомых есть очень много хороших программистов с гуманитарным образованием.
                    +1
                    Да. случаи бывают разные. Знаю одного рок-музыканта (уже бывшего), который пришел в тестировщики, чтобы заработать на новую гитару. Сейчас Senior Developer в Apple.
                    Тут главное иметь огромное желание, а образ мышления сам по себе появится.
                    А вот здесь позволю не согласиться. Даже, имея огромное желание, не все люди могут понять, что такое «указатель на указатель» и готовы по 10-12 часов общаться с монитором. Люди они разные.
                      +1
                      То есть для того, что бы понять, что такое «указатель на указатель» нужно знать математику? :) Я думаю человек, изучающий Си прочтет в любой книге: что бы присвоить указателю другой указатель нужно объявить «указатель на указатель», а что бы передать функцию в качестве аргумента другой функции нужен указатель на функцию (как то так, уже Си не помню). Тут главное не математика, а упорство и стремления к знаниям. Несомненно, математический фундамент университетского уровня полезен, и даже необходим, но не настолько, что бы отбивать желание у человека обучаться программированию (тем более вебдеву).

                      P.S.
                      Недавно как раз смотрел видео на тему, «как научиться всему за 20 часов»: www.youtube.com/watch?v=5MgBikgcWnY
                        0
                        То есть для того, что бы понять, что такое «указатель на указатель» нужно знать математику? :)

                        Нет, математику для этого знать не обязательно. Я писал о том, что для этого голова должна быть устроена так же, как у математика.
                        «как научиться всему за 20 часов»
                        Ой, не верю я в такие простые решения. ИМХО, за 20 часов можно выучить и сдать, например, курс аналитической геометрии, но научиться ее применять в решении практических задач нельзя. Я больше верю в правило 10 000 часов, которые надо отпахать, чтобы стать Мастером.
                  0
                  --не могут стать 3д дизайнерами из за отсутствия определенного «визуального образа мышления» (не знаю как правильно сказать).

                  вероятно имелась ввиду стереометрия
                    0
                    вероятно да =) надеюсь в программировании это не нужно, так как из меня 3дшник не важный
                      +2
                      ни в коем случае не хочу отговаривать или пугать, но по моим наблюдениям — да.
                      способность легко представлять себе визуальные (и объемные) конструкции — очень помогают работать с абстракциями.

                      программист — это, в первую очередь, человек работающий с абстракциями (отсюда близость не только к математикам, но и к любым другим «похожим» профессиям, включая, как ни странно, «творческих» музыкантов) и способность к ее визуализации (как минимум — внутренней) — становится почти жизненно необходимым навыком с определенного уровня задач.
                      Ну и уровень этот, соответственно, достигается гораздо быстрее при таких вот, вполне определенных, способностях.
                    +7
                    Кодер и программист — это абсолютно разные вещи.
                    ИМХО, обучение программиста (не кодера) должно начинаться с булевой алгебры, алгоритмов и вообще математики.
                    Программисту даже не обязательно знать языки программирования. Т.к. ему в первую очередь необходимо умение построить алгоритм программы и оптимизировать его. А переложить его на какой-либо язык программирования — дело второстепенное.

                    Языки программирования изменяются (совершенствуются, появляются новые, «отмирают»), а основы (булевая алгебра, алгоритмы и т.п.) остаются.
                      0
                      Вот вот. Языки постоянно совершенствуются и изменяются, а вот математическая база остается одной и той же. Со времен Тьюринга и Черча ничего принципиально нового не придумали в алгоритмах (про алгоритмы сортировки и прочее говорить не будем — это эволюция, а не революция, как изобретение конечных автоматов или лямбд). Начинаться с математики — это полностью поддерживаю. Но не так уж много времени нужно на освоение булевой алгебры. Даже мат.логика (то есть более глубокое понимание той же булевой алгебры, теории первого порядка, ZFC-аксиоматика, алгорифмы Маркова и тп) не так уж много времени требует на освоение. А потом, если человек, конечно, не идет в чисто теоретическую информатику, в любом случае придется изучать ЯП. То есть переложить — дело второстепенное, но необходимое.
                        +2
                        Начинаться с математики — это полностью поддерживаю. Но не так уж много времени нужно на освоение булевой алгебры. Даже мат.логика (то есть более глубокое понимание той же булевой алгебры, теории первого порядка, ZFC-аксиоматика, алгорифмы Маркова и тп) не так уж много времени требует на освоение. А потом, если человек, конечно, не идет в чисто теоретическую информатику, в любом случае придется изучать ЯП. То есть переложить — дело второстепенное, но необходимое.

                        вот тут можно было бы развести математикосрач о том, нужно ли крудошлёпу или программисту выезжающих меню на jquery знать математику на уровне, что вы описали
                        современное программирование давно уже предполагает использование математики за пределами школьного курса только в очень ограниченном круге задач — аудио\видео кодеки, DSP, расчёты и так далее
                          +1
                          так выше уже сказали
                          Кодер и программист — это абсолютно разные вещи.

                          вы описываете конкретно кодера. Просто люди не любят называть вещи своими именами. Не уборщица, а «шеф-клининг» и так далее. Лучше же звучит. Но — не правдиво. Я считаю, что программист не обязан использовать все это, но обязан знать хотя бы в первом приближении. Кодер — не обязан. В этом разница между ними. Если у вас другое мнение — аргументируйте, пожалуйста.
                            –2
                            на самом деле, я бы предложил более строгое деление — программист только тот, кто получил профильное высшее образование
                            другой вопрос, что у нас такого образования нет, есть пережитки прошлого — наши математические факультеты где немножко программирования преподают
                            за бугром выверт в другую сторону, на мой взгляд, их курсы CS слишком теоретические и оторваны от реальной жизни
                            куча информации, которая может пригодиться в очень узком круге задач
                      0
                      А как у вас с дизайном? С командной работой?
                      Складывается ощущение, что вам больше нравится пробовать что-то новое, чем углубляться в одном направлении. Если так, то серьезная бекэнд-разработка вам быстро наскучит.
                        +6
                        Как по мне, так если за такое количество времени вы не стали программистом — вы никогда им не станете. Можете стать кодером, даже сильным кодером. Но не лучше ли найти занятие по душе? Такое, что от него не оторваться.
                        Я когда ухожу в отпуск, уже где-то к концу первой недели начинаю что-нибудь писать «эдакое», пробовать новенькое.
                          +10
                          Это какой-то адский троллинг. Здравствуйте, я накопировал куски текста и получилась нормальная такая книжка, но как стать настоящим писателем?
                            0
                            Не совсем справедливо.
                            В литературе плагиат — плохо, а сочинительство — хорошо.
                            В программировании, наоборот, переиспользование кода — хорошо, а велосипедостроение — плохо.
                            Под «переиспользованием кода» я понимаю — применение различных готовых решений, библиотек, фреймворков и т.п.
                              +6
                              Это, конечно, верно, но, похоже, не относится к данному случаю.
                              «Я могу копировать код и изменять его, подсматривать как делает кто то и делать так же, иногда дописывать несложные скрипты» — это бездумная копипаста, а не переиспользование кода. «Я даже книгу скачал этих готовых задачек и пытался зазубрить — но на работе уже не мог вспомнить мелкие подробности и проваливался» — это бездумное зазубривание.
                              Человек, который не понимает основ и не понимает, что он делает — не программист и даже не кодер. Ну или я слишком хорошего мнения о кодерах.
                            +4
                            Попробуйте модный сегодня Python. может его простота и притом великая сила, вдохновят вас на новые подвиги.
                            Лично я год назад никак не был связан с програмирование и отфыркивался от него. Ну сайтики то делал, и скрипты писал — вобщем основная проффесия сисадмин :).
                            До первой встречи с питоном. и пройденого курса на codecademy. Теперь хочу поменять профессию на девелопера веб-апликаций.
                              –1
                              толсто, попробуйте тоньше
                                +1
                                в смысле? что не так в моем совете исходящего из моего опыта?
                                  –2
                                  вы точно не про копипасту про то, как правильно учить питон?
                                  простота и притом великая сила

                                  тут я бы поспорил, там уже можно написать многопоточное приложение без глобальных блокировок?
                                    0
                                    прям детский сад…
                                    Я не писал что питон лучше всех и что его великая сила круче любых других сил, например таких как Java, C++, Scala, Golang, Ruby…
                                    минус можно найти везде!
                                    и вы хотите сказать что отсуствие простого спосособа написания многопоточного приложения, полностью исключает все плюсы и гибкость питона?
                                    И его популярность фейковая?
                                    да что там многопоточность, у питона гораздо больше проблем, как и у любого другого языка, темболее такого как PHP.
                                    Каждая задача требует своего инструмента и подхода.
                                      –2
                                      Хм, тренд намечается сисадмины в питон уходят. Автора мне кажется уже ничто не спасет. Для того чтобы стать успешным программистом, нужно жить в IT. Как минимум интересоваться новостями вебразработки, в первых рядах узнавать о новых технологиях. Я думаю автор сходу даже не скажет минорную версию PHP на которой пишет. Как можно 2 года отучившись на веб-дизайнера иметь только «базовое» знание самого популярного языка в вебе и не иметь знаний для решения «простых задач на логику». Я даже не знаю что тут можно посоветовать.
                              +3
                              Чтобы стать хорошим программистом, нужно в первую очередь много практиковаться.

                              С другой стороны, в комментариях обоснованно указывают на то, что может быть вам стоит искать свои сильные стороны? Потому как предрасположенность к тем или иным видам деятельности никто не отменял и если вам что-то дается по сравнению с другими тяжело, можно конечно долго биться и успеха таки добиться… Но вы стартуете с позиции аутсайдера… Зачем? Если бы это было всепоглощающей страстью, то вы бы уже решили описанные в посте задаче и давно знали бы ответы на свои вопросы, как мне кажется. Или же вопрос даже так не стоял бы — просто практиковались бы в свое удовольствие и все.
                                0
                                P.S. Если вам нравится IT, то в отрасли огромное количество разнообразных интереснейших профессий, где не нужно непосредственно программировать.
                              • UFO just landed and posted this here
                                  0
                                  Абсолютно не важно на каком языке вы учитесь программировать. Будь то PHP, Java, C++ или любой другой язык, важно понимать основы алгоритмов. Это примерно так же, как для того, что бы сделать Веб дизайн сайта нужно быть посетителем этого сайта, и понимать (видеть) его со стороны.

                                  : делать
                                  * Читать внимательно задачи
                                  * Ставить себе задачи
                                  * Искать лучший способ реализации
                                  * Реализовывать
                                  : пока не научитесь программировать
                                    0
                                    Хороший современный программист кроме дискрана и алгоритмов должен знать паттерны. Иначе ничего сложенее сайтов-визиток сделать не сможет, или будет полдить говнокод, падать, разбивать нос, снова падать и считать, что так и должно быть.
                                    И конечно практика, практика, практика.
                                      0
                                      Мой тебе совет, если ты хочешь стать хорошим ( отличным :) ) разработчиком то — ПРОГРАММИРУЙ, ПРОГРАММИРУЙ, ПРОГРАММИРУЙ… Ничего в этой жизни так легко не дается, даже кушать иногда сложно)))). И запомни «Человек, оказавшийся на вершине горы, не упал туда с неба! „
                                        0
                                        Всё приходит с опытом. Читать, писать код, снова читать, писать код решая сложную задачу и т.д. Чтобы не быть просто копипастером надо закладывать фундамент – теоретические основы разработки ПО. От используемого языка программирования тут не много зависит, с любым языком можно учиться думать как программист. Нужно просто брать и получать опыт, нужно тратить на это время. Никаких других магических секретов нет.
                                          0
                                          Спасибо, так сейчас и поступаю. Всегда было страшно окунуться вглубь языка, обычно хватало циклов при выводе из БД и всяких эффектов яваскрипта, но теперь когда уже нужно делать задачи по серьезней — понял что знаний скопил мало и начал опять изучать основы и теорию PHP и практиковаться, по советам хабраюзерам, каждый день пишу код и практикуюсь.

                                        Only users with full accounts can post comments. Log in, please.