Что делать, когда кодирование начинает становиться скучным, как будто это все больше и больше? [закрыто]

33

Я начал программировать в возрасте 6 лет на Commodore 64. Теперь мне 28 лет, и я должен закончить 4 курса с первой степени в области компьютерных наук.

Я начинаю скучать по написанию кода после всех этих лет. Я прошел курс компьютерных наук по теоретическим компьютерным языкам и 10-летнему программированию на языке C в области сетевой безопасности, и я просто не получаю никакого стимула от написания кода.

Я могу написать код на C, C ++, Python или любом другом языке, который вы хотите, но я не могу быть в восторге от того, что я делаю. Я не чувствую никаких проблем. Я написал многопоточный код, HTTPS MITM-прокси и приложение WSGI без каких-либо специальных навыков в области алгоритмов.

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

В моей повседневной работе мне скучно даже искать ошибки, делать тесты кода или исправлять проблемы с библиотекой X, Y, Z.

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

Пришло ли время сделать карьеру в моей карьере? Или получить более сложные вещи в области компьютерных наук? Может быть, получить высшее образование в области CS?

Я начал читать свою первую книгу по управлению проектами «Peopleware», и меня больше интересует жизненный цикл разработки программного обеспечения. Что вы предлагаете делать?

Возможно, пытаясь войти в Google, Microsoft или Apple, как это сделали некоторые мои друзья. Или, возможно, более управленческий путь карьеры. Я также попытался найти хорошую книгу о правилах общения и «личности людей», чтобы подготовить меня к возможности войти в управление.

Какие-либо предложения?

PS: У меня большой интерес, я не в депрессии :) Я люблю горы, треккинг, делаю фотосессии, и я спортивный альпинист, я люблю плавать и заниматься спортом в целом, иногда я бегаю, на самом деле я ' Я читаю книгу о моей стране (Италия), рассказывающую историю AC и до сегодняшнего дня, и я люблю поездки (этим летом я проехал 4000 км, чтобы увидеть много места в Испании и залезть на него, всего за 3 недели, не праздник, а марафон , 24 км треккинга сделали мою травму грыжи), я люблю театр и жизнь в целом.


Спасибо всем, размышления над ответом дают мне возможность прояснить мой путь.

Для краткого изложения мы можем обобщить о наиболее проголосовавшем ответе.

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

После этого напоминания люди предлагают:

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

Для моей цели правильный ответ - продвинуться в области компьютерных наук. По моему мнению, программирование - не единственный способ получить информатику, и я думаю, что могу чувствовать себя лучше, если поймать другой путь в информатике, отличный от специалиста по программированию.

Боос
источник
10
Это действительно удручает. Почему вы хотите быть менеджером?
14
К сожалению для вас, и хотя это может показаться резким, менеджеры должны понимать, как эффективно общаться. То, что вы написали выше, крайне непонятно и едва понятно. Если вы планируете сменить карьеру на менеджмента, я бы поработал над вашими навыками общения прежде всего. Извините за вашу ситуацию.
Джордж
9
@ Джордж: Я думаю (но я признаю, что я не уверен), это написано кем-то, кто не говорит / не пишет по-английски в качестве родного языка.
FrustratedWithFormsDesigner
2
Посмотрите, что такое метапрограммирование для забавной метафоры по этой теме (делая одно и то же).
2
@ Джордж: конечно, английский не мой родной язык. я начинаю делать некоторые изменения, чтобы улучшить свой английский и объяснить свое разочарование по поводу кодирования.
Boos

Ответы:

50

Это должно было случиться.

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

Интересуйтесь разработкой продуктов и получайте удовольствие от того, как люди их используют. Это конечная цель написания кода, верно? Код - это всего лишь инструмент для выполнения чего-то большего.


источник
Мой первый интерес не только к кодированию, я - спортивный альпинист, я люблю ходить в театр, люблю путешествовать и видеть новое место, 2/3 европейского города каждый год и 4000 км на моем летнем отпуске. это не главное. я думал о том, что достиг точки невозврата о кодировании. все проблемы на моей работе не так сложны, и я не могу получить больше проблем. я думаю, что правильный ответ - сменить работу и получить больше проблем в более сложной проблеме. на самом деле я уже в отделе исследований и разработок.
Boos
@boos, попробуйте clojure.org/Jobs
Работа
2
+1 Что хорошего в бесцельном кодировании? Это все равно что строить стену вместо дома.
Mayank
+1 Я начал программировать и продолжал до сих пор (более 10 лет) только для того, чтобы делать игры и видеть, как людям они нравятся. У меня были действительно тяжелые периоды, когда я начинал понимать, что ничего не знал в конце концов. В тот момент я переучил все с самого начала, потому что я все еще хотел делать игры для людей.
Klaim
Это, безусловно, сработало для меня. Недавно я выполнил небольшую бесплатную работу по разработке для фирмы моей жены, и хотя поддержка программного обеспечения - это небольшая боль в заднице, это вызвало наслаждение от кодирования, которого я не испытывал некоторое время.
Hermiod
21

Я отвечу на ваш вопрос вопросом ...

Работа программиста - программировать или решать проблемы?

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

Но как вы пришли к выводу, что этот код является кодом, который должен быть написан? У большинства проблем есть сотни способов ее решения, но есть только один лучший способ.

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

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

Николь
источник
1
@Rnesis: я люблю решать проблемы, я перестаю любить кодирование! это сердце моего "вопроса". У всех программ проблема всегда одна и та же, поиск вещи, заказ другой, если это сделать, если, с другой стороны, подключиться к БД, подключиться к удаленной службе, связаться с ней, вернуться к другой службе, и т.д.
Boos
1
@boos - Спасибо за ответ, добавлен абзац "если вы любите решать проблемы".
Николь
9

Звуки для меня , как вы сделали ЛИ процедурное программирование и надоели ему - что я полностью понимаю. Определение шаг за шагом во многом одинаково для всех процедурных языков.

Поскольку у вас много неработающих занятий, я бы предложил изучить некоторые концепции, которые не похожи на то, что вы знаете сейчас, и - да - их много, но для начала я бы порекомендовал Haskell, потому что это

  • функциональный - вы пишете функции, которые вы объединяете, чтобы сделать большие функции, в конечном итоге приводящие к программе.
  • отложенная оценка - вместо указания шаг за шагом среда выполнения извлекает необходимые значения по мере необходимости. Это означает, что в ваших программах очень часто встречаются бесконечные списки.
  • сопоставление с образцом - вместо того, чтобы иметь большие структуры if, вы перечисляете шаблоны для того, как выглядят параметры, и среда выполнения выбирает соответствующий шаблон и выполняет соответствующий код.

Вот полная функция сортировки:

qsort []     = []
qsort (x:xs) = qsort (filter (< x) xs) ++ [x] ++ qsort (filter (>= x) xs)

(См. Http://www.haskell.org/haskellwiki/Introduction#Ease_of_understanding для объяснения)

Если что-то из этого является новым для вас, я бы посоветовал вам начать приключение.

Удачи повеселиться.


источник
+1 Это тот же вывод, к которому я пришел после прочтения ОП. ОП должен отойти от процедурного. Мир программирования намного больше, ему просто нужно выйти и исследовать! :)
Darknight
8

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

Я нашел вдохновение как в фотографии, так и в изучении пользовательского опыта. Подумайте об этом, как получается, что Apple может заставить людей выделять слюну из-за слюны, чтобы следующая вещь вышла из Санта-Клары, когда другие продавцы получили теплый отклик? Вы серьезно думаете, что Android получил бы столь большой отклик, если бы Apple не сопротивлялась выпуску iPhone на Verizon так долго? Я дам вам подсказку: не обязательно, что эти продукты настолько технологичны. В мании есть огромный психологический компонент.

Понимание дизайна продукта и пользовательского опыта - это то, что многим из нас есть чему поучиться. Что заставляет кого-то тикать? Как вы разрабатываете что-то достаточно крутое, чтобы заставить людей отказаться от устоявшегося решения? Как вы создаете свой собственный технологический культ, такой как Apple (не то чтобы я стремился быть лидером культа, заметьте)? Это все очень интересные и стимулирующие вопросы. Они связаны с разработкой программного обеспечения - но теперь ваш фокус изменился.

Берин Лорич
источник
1
+1 Я нахожу большое удовлетворение в программировании, и я думаю, что мне это нравится из-за аспектов дизайна, но я признаю, что отсутствие визуального аспекта в программировании оставляет меня не полностью выполненным. Я тоже люблю фотографию и стараюсь практиковать другие виды дизайна, такие как графика или архитектура.
Николь
Попробуйте программирование игры: D, в основном это визуальные проблемы
Доминик Макдоннелл
7

Возможно, вам просто не хватает технических проблем?

  • Попробуйте сильно распределенные системы. Можете ли вы легко написать систему для сбора журналов с 1000 компьютеров в кластере с точностью до микросекунды?
  • Попробуйте в режиме реального времени. Упакуйте все свои процессы в один оборот двигателя.
  • Попробуйте компьютерное зрение или обработку изображений. Навыки математики, навыки формул в коде, навыки оптимизации - все это пригодится.
  • Попробуй ИИ. Видите, как компьютер IBM играет в Jeopardy? Вероятно, некоторая алгоритмическая сложность вовлечена в эту область.

И т. Д. Конечно, будьте готовы изначально зарабатывать меньше в области, где трудность для вас сложная, а не скучная.

9000
источник
4

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

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

Но это вариант, который может стоить рассмотреть.

biziclop
источник
4

Да, у меня иногда возникает ощущение, что на самом деле каждый раз пишут один и тот же код снова и снова. Но нет, мне это еще не надоело. Почему это?

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

Изучение нового языка программирования стало для меня легче с каждым языком, который я пробовал. И через некоторое время это перестало быть очень интересным. Но затем, примерно год или два назад, я, наконец, перешел к функциональному программированию, которое как парадигма программирования достаточно отличается от ООП, чтобы стать новой проблемой. Я чувствую, что это действительно обогатило мои возможности программирования и дало мне новую перспективу, с которой я могу взглянуть на проблему программирования. Сейчас я пытаюсь открыть разные парадигмы программирования, а не просто разные языки программирования. Это большая проблема.

Во-вторых, изучение новой библиотеки, фреймворка или API: как вы правильно сказали, новые фреймворки часто не решают новых проблем; они просто решают это по-другому, например, добавляя дополнительный уровень абстракции. Возможно, это возможно, потому что современные компьютеры более мощные, чем более ранние; или, возможно, потому что мы в целом становимся лучше в написании программного обеспечения.

Этот последний бит, вероятно, нуждается в пояснении. Я приведу пример: в течение самого длительного времени, практикуя свои навыки программирования, я никогда не задумывался серьезно о поддержке кода, который я писал. С тех пор, как я начал программировать на работе, моя точка зрения изменилась. Написание поддерживаемого кода часто очень важно в корпоративной среде, потому что каждый час, который вы тратите на кодирование, стоит реальных денег, поэтому корпорация будет стараться придерживаться существующего кода, если это возможно, и есть вероятность, что в конечном итоге вам придется пропустить Ваш код для преемника.

Я считаю, что написание поддерживаемого кода на самом деле является большой проблемой. Это часто означает, что вы не будете писать супер-умный и высоко оптимизированный ассемблерный код (помните историю Мел - Настоящий программист , кто-нибудь? ;-) Вместо этого вы с большей вероятностью воспользуетесь абстракцией. Чем ближе вы можете получить свой код к некоторым бизнес-правилам и проблемной области, тем лучше. Вот где появляются все эти новые библиотеки. Если они позволяют записывать код, чтобы он был чистым, ясным, лаконичным и легким для понимания, то это хорошо.

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

stakx
источник
все языки и все парадигмы и в общем случае могут напоминать «машине Тьюринга», независимо от того, изучаете ли вы новый язык, новую структуру, все вычисления могут быть сделаны машиной Тьюринга, поэтому я не могу больше волноваться по поводу кодирования. я люблю писать чистый код, а иногда я люблю писать действительно странный фрагмент кода, чтобы пошутить с моим коллегой, как какая-то небольшая путаница.
Boos
1
+1 Я тоже так чувствую. Я думаю, что моя личная любимая задача - не столько делать что-то новое, но делать это наилучшим образом. Лучший комплимент, который я мог получить: «Я прочитал твой код и прекрасно понял». Я люблю обзоры кода, где никто не может придумать что-либо, чтобы сделать лучше.
Майкл К
@boos, если тебе нравится теория, то в cs / math / физике есть тысячи тем, в которых ты можешь потерять голову.
Job
3

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

Или вы можете полностью сменить карьеру на то, что не имеет абсолютно никакого отношения к компьютерам. Задавались ли вы вопросом, какой будет работа вашей мечты, если кто-то может дать ее вам?

FrustratedWithFormsDesigner
источник
3

Начните играть с микроконтроллерами. Это самое освежающее и захватывающее применение таланта программирования, которое я могу себе представить.

Роб С.
источник
2

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

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

Таким образом, решение таких проблем вам неинтересно. Что было бы интересно? Вам нравится решать проблемы в целом? Может быть, жизнь в качестве «делового» разработчика программного обеспечения не для вас.

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

Эндрю
источник
2

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

Я могу написать код на C, C ++, Python или любом другом языке, который вы хотите, но я не могу быть в восторге от того, что я делаю. Я не чувствую никаких проблем. Я написал многопоточный код, HTTPS MITM-прокси и приложение WSGI без каких-либо специальных навыков в области алгоритмов.

Не поймите это неправильно (это достойные достижения), но это далеко не полный список всех сложных и захватывающих проблем в программировании. Есть еще много сложных проблем для решения. Самые сложные проблемы связаны с работой в масштабе. Вы написали приложение WSGI, но написали ли вы приложение, которое может обрабатывать миллиард просмотров страниц в день? Вы написали многопоточный код, но вы написали многопользовательский код (с сотнями компьютеров)?

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

Джейсон Бейкер
источник
Конечно, я знаю, что здесь много чего интересного :) Я сейчас немного программист! проблема в том, что сложность вокруг программирования не делает меня счастливым. Получив ответ, я должен изучить больше академических вещей, чтобы чувствовать себя лучше. В любом случае спасибо :)
Boos