Руководство CodeNo0b по избавлению от посредственности — generalCharacteristics()

Это часть серии статей под названием Руководство CodeNo0b по избавлению от посредственности — моя попытка создать своего рода ментальную модель из концепций, обсуждаемых в классических книгах Энди Ханта, Дэйва Томаса, Чада Фаулера, и Роберт Мартин в самоучительной манере. Оглавление здесь: main()

Вы, должно быть, думаете: «О, еще один список? Если у меня их нет, значит ли это, что я не создан для этого? О ужас!» Или наоборот: «О боже, похоже, я добьюсь большого успеха в будущем, у меня есть около 8/10 черт, перечисленных здесь! >”. Я тоже когда-то был таким. Я читаю каждую статью, в которой говорится о n чертах <adjective> <noun> (например, сказочной курице), словно контрольный список для самооценки. Если у меня есть больше, чем в среднем, я чувствую себя хорошо, думая, что у меня есть потенциал, чтобы сделать это. Иногда я сдержанно ношу его на заднем плане, чтобы чувствовать себя хорошо в течение нескольких дней. В конце концов, я устал от этого цикла. Я чувствовал, что это очень дешево, отстойно и лениво. Если ты такой, то, наверное, пора остановиться. Сделай что-нибудь. Перестаньте откладывать. Мир, галактика, вселенная, судьба, судьба или что-то еще не должны вам ничего, чтобы вы просто ждали и ожидали, что что-то произойдет. Потенциал не гарантирует успеха. На самом деле вам нужно двигаться самостоятельно, если вы хотите преобразовать этот потенциал в кинетический. На самом деле никто не собирается делать это за вас. Лучшее, что другие могут сделать для вас, — это просто вдохновить или мотивировать вас, чтобы вы могли начать делать этот первый шаг.

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

Впрочем, хватит разглагольствовать. Приступим к делу.

Любознательный

Полюбопытствовать. Никогда не переставайте задавать вопросы, ничего страшного, если вы не знаете ответов прямо сейчас, отложите это на время, переключитесь на что-то другое. В конце концов, вы вернетесь к этому и сможете понять это. Это работает примерно так: каждый раз, когда вы получаете информацию, выясняя что-то, эта часть информации вносит свой вклад в ваши базовые знания, которые в конечном итоге повышают вашу способность «понимать». Это как agar.io и финансовые вложения. Чем больше у вас денег, тем легче вам заработать еще больше денег. Знания — это тоже инвестиции, они складываются. На первый взгляд это не так, но это свяжет все ваши текущие знания воедино, сохраняя их еще более нетронутыми. Чем больше вы усваиваете информации, тем больше вероятность того, что вы сможете легко понимать большие объемы информации в будущем.

Когда я впервые изучал Python несколько лет назад, я не мог полностью усвоить понимание списков. Конечно, я знаю, что он делает, я могу это реализовать, но мне это не кажется естественным. Я подумал: «Что это за колдовство?» (Раньше моими основными языками были C и Java, тогда все динамические языки казались мне колдовством.) Прошло время, случилась Java 8, она меня заинтересовала. Мне было любопытно, как можно наполнить Java, язык со статической типизацией, функциональными возможностями.

Я быстро привык использовать map() и filter() вместе с lambdas для управления своими списками. Передача методов в map() и предоставление предикатов в filter() стали моей второй натурой.

Спустя несколько месяцев я снова начал оглядываться на свои коды Python. Затем меня осенило: понимание списка похоже на то, что map() забрел не в ту сторону города. Уставший, ограбленный и без гроша в кармане, ‹вставка — длинная и сладкая история любви о том, как он встретил столь же несчастную, но очень красивую filter(), с тонкой элегантностью, скрытой под ее усталостью, но все еще выглядящей такой сильной, но не пограничной веганской феминаци «сильной». map() был очарован, он мгновенно влюбился. он не верит в судьбу, он агностик с атеистическими наклонностями, но он понял, что это судьба, как только увидел ее. В конце концов они сошлись и зажили долго и счастливо — здесь›

О чем я опять говорил? О да, я понял, что понимание списка в Python похоже на методы map() и filter() в Java, объединенные в одно приятное выражение.

nums = range(100)
evens_squared = [ num**2 for num in nums if num % 2 == 0 ]
# num**2: could also be any transformation function.
# num % 2 == 0: is the filter's predicate.

Внезапно это имеет общий смысл. Я как-то понимал это раньше, но не было текущего существующего контекста, за который я мог бы зацепиться.

Реалистичный

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

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

Вы не хотите браться за дело с полным ликованием и марширующим оркестром только для того, чтобы узнать, что это не всегда персики и бабочки. На самом деле это кровь, пот, слезы, неравенство, эльфы ненавидят людей, единороги ненастоящие, реактивное топливо не может расплавить стальные балки, у Человека-паука по умолчанию нет внутренних веб-шутеров, Супермен переоценен, Хан Соло стреляет первым, Гэндальф — придурок, немного пива на вкус как моча, твое письмо из Хогвартса не придет, никто не особенный, маки переоценены, C не переоценен, ты переоценен, переоценка вещей переоценена, жизнь бессмысленна, наше существование бессмысленно, мы не никому не принадлежит, и в конце концов все умрут. Реальность поражает вас, оставляя вас парализованным и сломленным, она травмирует вас на всю жизнь, и вы больше никогда не отправляетесь в приключение. Если бы вы только не были так чертовски уверены в себе и не приложили хотя бы немного усилий, чтобы по-настоящему объективно понять вещи, вы бы не смогли облажаться с этим дерьмом для себя и всех, кто вам небезразличен. о.

Специалист

Недостаточно знать синтаксис Java, вы должны как минимум объяснить, как работает загрузчик классов Java или как высокоуровневое управление памятью обычно обрабатывается JVM. Если вы разработчик Python, найдите время, чтобы понять нюансы между интерпретатором Python и виртуальной машиной Python. По крайней мере, знайте о существовании различных реализаций Python, CPython, IronPython, Jython, PyPy и т. д. Является ли Python многопоточным? Можете ли вы назвать некоторые из различных доменов, в которых Python или Java использовались сообществом? Как бы вы отреагировали, если бы вам вручили проект Python, реализованный в версии 2.7? Является ли приемлемым ответом: «О да, когда я сказал, что являюсь экспертом по Python, я имел в виду исключительно Python 3.x»?

универсальный

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

«Мастер на все руки, мастер ни в чем» обычно имеет уничижительный характер. Но когда ваше монолитное производственное программное обеспечение начинает давать сбой посреди рабочего дня, когда половина команды находится в отпуске, а компания с течением времени теряет деньги и ресурсы, это мастер на все руки, который не только знает, как код приложения работает, но также может проверить вашу конфигурацию nginx, проверить вашу систему контроля версий на наличие последних коммитов, может быстро изучить последние примечания к выпуску связанных приложений на предмет возможных виновников, проанализировать ваши веб-процессы на предмет потенциальных узких мест , понять недавние архитектурные изменения высокого уровня, которые могли способствовать возникновению проблемы, и может собирать и анализировать данные из вашей действующей сети. И, что более важно, после обнаружения проблемы этот мастер на все руки может создавать исправления вместе с тестовыми примерами, развертывать исправление вашей команды на сервере, отправлять электронные письма с подробным описанием того, что произошло, и другими возможными затронутыми связанными системами, предлагая при этом высокие архитектурные решения, которые могут предотвратить будущие сбои во всей организации, написанные на английском, китайском, испанском и пяти других языках.

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

Да я и не говорил, что это легко. Это также не имеет ничего общего с перфекционизмом. Не ограничивайте себя какими-то предопределенными нормами. Если вы не хотите быть посредственностью, начните собирать все полезное. Вы не гений? Ты слишком стар, чтобы учиться? Они сказали, что вы не можете быть обоими? Нет такого понятия, как full-stack разработчик? 10x разработчик это миф? У кошек нет 9 жизней? Да, хм.. Классная история, братан, но мне все равно. Что меня волнует, так это то, что если это выглядит полезным, берите, изучайте, двигайтесь вперед. Я не говорю, что вы должны полностью игнорировать твердую науку — вы понимаете, что я имею в виду? Не знаю, как сказать, только будь специалистом, но в то же время будь и универсалом! Прохладный? Хорошо.

творческий

Креативность — это немного деликатная тема, ее обычно рассматривают как абстрактное качество, с которым вы рождаетесь. Сказав это, давайте уберем это с пути: нет такого понятия, как левополушарные или правополушарные люди, это было разоблачено наукой давным-давно; Творчество — это не то, с чем вы либо рождаетесь, либо нет; Быть артистичным и быть логичным не исключают друг друга.

Ладно, возможно, я немного солгал. На самом деле, творчество — это то, с чем вы рождаетесь. Но я имею в виду, что каждый рождается способным к творчеству. Просто у вас не было возможности взрастить его, а потом вы выросли, думая, что никогда не были креативными с самого начала. Творчество не ограничивается искусством, литературой или музыкой. Творчество присутствует во всем, что вы делаете, чтобы выразить себя, в том, как вы одеваетесь, как вы пишете эту букву «с», как вы думаете, как вы живете. Почти каждая рукотворная вещь, которую мы видим сегодня, является продуктом творчества наряду с необходимостью, изобретательностью и некоторыми другими вещами. Кажется, что у нас, как у людей, есть это стремление что-то создавать, выражать себя в разных формах, может быть, это продолжение общения, неизбежное следствие эволюции.

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

Чистый код прост и прямолинеен. Чистый код читается как хорошо написанная проза.

— Грэди Буч

Страстный

Это, наверное, неудивительно, и, наверное, уже стареет. Я не буду говорить об этом слишком много, вы, наверное, уже прочитали около 100 статей о страсти.

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

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

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

Замечательный

Что значит быть выдающимся на самом деле? По определению это означает «что-то, что заслуживает внимания». Это одно из тех слов, которые вы уже знали, но не обращали внимания на то, что оно на самом деле влечет за собой.

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

— Чад Фаулер, страстный программист

По словам мистера Чада Фаулера, (Обратите внимание на меня, сэмпай! кьяа! *weeaboo усиливается)Вы можете быть самым умным или самым быстрым, но быть хорошим недостаточно. Вы должны вовлечь себя в делать что-то.

Выпускать успешное программное обеспечение с открытым исходным кодом, писать книги и статьи, стремиться выступать на конференциях и т. д. — вот несколько способов повысить вашу известность как разработчика программного обеспечения.

Определенно быть выдающимся непросто (Разве мы не поэтому этим занимаемся), немногим удавалось им быть. Это бесконечное усилие. И я думаю, что это хорошо, это то, к чему нужно стремиться и с нетерпением ждать.