Я был разработчиком уже несколько лет. Я довольно хорош в том, что я делаю, и могу «выполнить работу».
Но есть разница между «выполнением работы» и «выполнением работы должным образом». Давайте использовать пример.
Недавно я разработал веб-сайт с нуля. Сайт работает нормально, и у меня не было проблем. Просматривая код, я подумал, что мог бы сделать это лучше. Я мог бы сократить свои запросы MySQL. Я мог бы использовать MVC, чтобы его было проще расширять (сейчас его нужно расширять).
Я решил переписать проект с помощью CodeIgniter. Мне нравится рамки. Но затем меня отвлекли, потому что для сокращения моих запросов к MySQL мне пришлось изучить расширенные объединения.
И это проблема. Всякий раз, когда я делаю работу правильно, я нахожусь в постоянном обучении. А такие темы, как расширенные объединения MySQL, требуют времени для изучения, а затем - для реализации.
Я не работаю на компанию. Я делаю все один. Так что я думаю, что если бы я работал разработчиком PHP в компании, то были бы отдельные команды, работающие с SQL.
Быть соло это сложно. И иногда, хотя мои знания продвинуты, я задаю вопрос после вопроса. Я, наверное, очень горжусь своей работой. Но если бы мне пришлось работать в компании, занимающейся завершенными проектами, я мог бы представить, что проекты будут занимать какое-то время, потому что мне придется учиться все больше и больше, чтобы удовлетворить свою гордость и убедиться, что я все делаю «правильно».
Я планирую устроиться на работу после нового года. Мне нужна охрана работы. Вот почему я задаю этот вопрос.
Какой совет вы можете дать в плане саморазвития и самосовершенствования? Должен ли я беспокоиться меньше? Или, может быть, искать работу в качестве разработчика PHP, когда я не буду обрабатывать запросы SQL напрямую?
источник
Ответы:
Совет: не бойтесь узнавать что-то новое - вы сделали хороший первый шаг, признав, что вы можете добиться большего, а затем приложили усилия, чтобы узнать, как вы могли бы добиться большего. Да, это требует больше времени заранее, но выигрыш обычно стоит того в долгосрочной перспективе. Теперь, когда вы знаете CodeIgniter, вы можете использовать его для следующих будущих проектов. Вы можете поместить это в свое резюме. Теперь, когда вы знаете продвинутые методы SQL, ваши будущие проекты получат выгоду. Если вы перестанете учиться, вы будете застаиваться.
источник
То, что вы проходите, звучит совершенно нормально для меня. Так мы работаем над своим ремеслом и становимся все лучше и лучше в том, что мы делаем.
источник
Хорошо, учитывая вышеизложенное, я думаю, что для вас имеет смысл сосредоточиться на улучшении вашей способности планировать заранее, устанавливать и расставлять приоритеты в рабочей очереди, управлять своим временем - все в таком духе.
На самом деле, это, кажется, единственное, чего не хватает в вашем отношении. То, что вы называете «боковым отслеживанием», - это, по сути, еще одна часть работы («изучение расширенных объединений»), которую нужно планировать, расставлять приоритеты и ставить в очередь.
источник
Быть профессионалом в этой области - значит постоянно разбивать себя против собственной несостоятельности. Сделайте это с 8-5 с понедельника по пятницу, может быть, больше, если приближается крайний срок, хороших выходных и приходите еще в понедельник. Это работа.
Создание программного обеспечения требует определенного смирения. Если вы тот, кто должен быть прав, и кто должен доказать, что они уже все знали, возможно, это не поле для вас.
Я не могу понять, не изучая что-то каждый день. Я не думаю, что хочу эту работу.
источник
Будучи соло является трудным. Напротив, когда вы работаете с командой разработчиков, все учатся друг у друга. Как часть команды, вы приобретете много знаний, работая с другими разработчиками, и с гораздо меньшими усилиями, чем когда вы пытаетесь все выяснить самостоятельно.
Тем не менее, как разработчик, вы должны посвятить себя постоянному обучению. Будь то чтение документации для новых фреймворков или книги по разработке, вы должны постоянно прилагать усилия, чтобы ваши знания были актуальными и развивались. Тем не менее, членство в команде может прояснить, в какой области вам нужно больше всего узнать в любой момент времени.
Что касается вашей точки зрения о пересмотре вашего старого кода и переписывании: я обнаружил, что мой собственный код всегда представляет собой лучшее из того, что я знал во время его написания. Много раз я возвращаюсь к тому, что написал несколько лет назад, и хлопаю себя по лбу, когда вижу, насколько лучше я мог бы сделать, учитывая то, что знаю сейчас . Но такова природа опыта, вы получаете его после того, как вам это нужно ...
Наконец, когда вы разрабатываете приложение, вам всегда нужно проявлять здравый смысл в бизнесе, чтобы решить, когда лучше урезать углы, чтобы быстрее закончить, а когда нужно больше времени, чтобы изучить что-то новое, что улучшило бы дизайн и качество приложения. В мире программного обеспечения есть множество вещей для изучения. Не применяя такого здравого смысла, вы могли бы крутить свои колеса, учась, думая, перепроектируя, но никогда ничего не делая.
источник
Я думаю, что ваши опасения справедливы, но вы не должны терять сон из-за этого. Я уверен, что существо-технолог приходит со следующим багажом:
В конце концов, звучит так, что вы заботитесь о создании качественного программного обеспечения, которое вы не можете выучить . Знайте, что вам нужно дифференцировать создание высококачественного решения с созданием чего-то идеального. Звучит так, будто вы похожи на меня, и никогда не почувствуете, что это идеально. Было бы более тревожно, если бы вы не чувствовали, что у вас есть шанс улучшить себя и свою работу.
Трудно быть мастером на все руки (мастер ни на что), но вам действительно нужно выяснить, как определить наиболее интересные и полезные для вас вещи и сосредоточиться на них. Выясните, как лучше «отдать» другую работу другим людям или инструментам .
источник
Я думаю, вам нужно меньше беспокоиться о том, чтобы «сделать это правильно». Стремитесь к совершенству, но понимайте, что на самом деле невозможно разработать идеальное решение, особенно в первый раз. Тот факт, что вы достаточно беспокоитесь о том, чтобы сделать это правильно, чтобы задать этот вопрос, означает, что вы уже на правильном пути.
Что касается вашего разочарования в изучении новых вещей, я обнаружил, что работа в группе и возможность задавать и обсуждать проблему с другими программистами избавили от боли, когда я узнал, что мне нужно изучать, и заменили ее радостью открывать что-то новое и учиться применять его.
Я люблю писать программы, но иногда действительно бывает не просто узнать что-то новое, а найти то, что вам нужно научиться, чтобы достичь того, чего вы хотите.
Из того, что я понимаю, я был в подобной вам позиции. Кодирование чего-то одного может быть и разочаровывающим, и трудным, а иногда и полезным, а иногда и забавным.
Делайте именно то, что вы планируете делать, найдите работу, в которой вы будете частью команды (и сделайте все возможное, чтобы убедиться, что вы нашли работу где-то, что не сосет). Работа с другими людьми, которые используют те же технологии и разрабатывают одно и то же программное обеспечение, расширит ваше понимание и применение этих технологий и шаблонов проектирования практически мгновенно.
Что касается знания того, как сделать что-то правильно в первый раз, ну, как вы узнали бы, что есть лучший способ, если вы не сделали это определенным образом в первый раз? Навык в разработке программного обеспечения часто во многом зависит от опыта. Джоэл Спольски - гений программного обеспечения, но если вы прочитаете много его статей, вы заметите, что они во многом являются результатом как опыта, так и интеллекта.
Что касается SQL, то, как разработчик .NET, мне еще не приходилось работать где-то, у кого был выделенный разработчик базы данных, мы все пишем свой собственный SQL, но часто есть разработчики, которые действительно хорошо разбираются в SQL, которые готовы помочь вам с более глубоким материалом.
Ты говоришь как умный парень, я не думаю, что ты должен быть так жесток с собой.
источник
Это совершенно нормально, и вам не о чем беспокоиться. Вам нужно постоянно учиться новым навыкам, но вы также должны научиться расставлять приоритеты и управлять своим временем. Вы также должны избежать ловушки ненужной перепланировки.
Неопытный программист часто попадает в ловушку перепланировки:
В этой логике есть много неправильных вещей.
Это никогда не повредит созерцать и планировать перепланировку. Это означает, что вы должны подумать о том, как вы хотите переписать вашу программу, и попытаться определить любые проблемы, с которыми вы столкнетесь. В этом случае вы бы определили «расширенные объединения SQL», которые вам сейчас нужны, а затем изучили бы их работу и узнали о них.
Если вы думаете, что не смогли бы выявить пробел в знаниях о продвинутом объединении посредством планирования (без начала разработки), вам необходимо улучшить свои навыки планирования. Попробуйте подумать, какая часть плана не была достаточно подробной. Вы должны вдаваться в подробности по мере необходимости, пока не убедитесь, что вся система технически возможна.
Такой подход позволит вам учиться заранее .
Наконец, обучение на работе является нормальной частью программирования. Это не означает, однако, что вы запускаете задачу, а затем понимаете, что вам нужно остановиться на неделю, чтобы узнать, скажем, об основном HTML. Вы можете остановиться на несколько часов, чтобы узнать что-то, но ваш работодатель платит вам только за то, что вы сделали работу. Учитесь эффективно - не читайте введение и историю, просто как она работает и как она вписывается в вашу программу. Если вам придется перестать работать целыми днями, чтобы научиться выполнять часть программы, вы делаете это неправильно.
источник
Вы можете подумать, что изучение новых технологий и проблем - это время. Но не паникуйте. Это нормально. Это часть вашей практики как программиста - учиться ... иначе мы все застряли бы в COBOL.
Профессионалы-фрилансеры соответствующим образом корректируют свои комиссионные, и периоды обучения, помимо прочего, должны учитываться при расчете времени. В следующий раз, когда вы решите ввести новую структуру, убедитесь, что вы планируете достаточно времени, чтобы изучить ее.
источник
Нет, нет, и я думаю, в этом корень вашей проблемы. Мне кажется, вы слишком зациклены на том, чтобы беспокоиться о том, чтобы делать все «правильно», потому что, как индивидуальный разработчик, вы не видите, как работают другие. Но правильно, в соответствии с кем? Кто этот волшебный человек, который может сказать, что то, что вы делаете, «правильно»? Возьмите 100 лучших программистов мира, и я гарантирую, что двое не согласятся на 100% по каждой теме программирования.
В конечном счете, важно, если ваши клиенты счастливы. Если программы, которые вы создаете, решают проблемы, для которых они предназначены, и делают это экономически эффективным способом, вы делаете это правильно. Например, использование правильного codeigniter не является более правильным, чем использование собственного фреймворка. Следствием этого является то, что если вы производите кучу дерьма, вы делаете это «неправильно» независимо от процессов или «лучших практик».
То, что вы пересматриваете свой код и ищите способы улучшить его, является нормальной частью процесса разработки. Это не признак того, что вы не делаете вещи «правильно». Это признак того, что вы посвятили себя обучению и улучшению. Из всего, что я вижу в вашем посте, у вас нет проблем.
Теперь иди пинай * * *
источник