Программист-фанатик - [68]
Если тебя спросят, хорошо ли помогать голодающим детям в развивающихся странах, ты, скорее всего, не задумываясь, ответишь утвердительно. Если кто-то попытается поспорить с тобой по этому вопросу, ты решишь, что он сумасшедший. Это и есть пример ригидности ценностей. Ты веришь в необходимость помощи детям так сильно, что не можешь представить, как в это можно не верить. Разумеется, не все ценности, в которые мы столь твердо верим, являются плохими. Для большинства людей вера в Бога (или атеизм) также представляет собой набор непоколебимых личных убеждений и ценностей.
Но далеко не все ценности, в которые мы верим, хорошие. Бывает и такое, что вещи, допустимые в одних обстоятельствах, оказываются совершенно недопустимыми в других.
К примеру, легко зациклиться на выбранной технологии. Особенно часто это происходит в случаях не самых популярных технологий. Но тебе настолько нравится какая-нибудь из них, ты придаешь такое большое значение ее защите, что начинаешь рассматривать любую такую возможность как битву, в которую стоит ввязаться, даже если очевидно, что защищаешь не то. Например, я сталкивался (в чем, наверное, был сам виноват) с чрезмерно рьяной группой поддержки операционной системы Linux. Ее пользователи были готовы установить эту систему на компьютер любого администратора, секретаря и вице-президента корпорации, не обращая внимания на тот факт, что с практической точки зрения инструментарий Linux не выдерживал сравнения с инструментарием коммерческих операционных систем. Ты выглядишь глупо и вызываешь у заказчиков недовольство, навязывая хорошее программное обеспечение совсем не тому, кому следовало бы.
Изменение своего веса сложно заметить, так как мы каждый день видим себя в зеркале. Аналогично обстоят дела с ригидностью ценностей. Так как наша карьера строится постепенно, изо дня в день двигаясь в том или другом направлении, легко стать жертвой собственной косности. Ты знаешь, что некий метод работает, и продолжаешь им пользоваться. Или, к примеру, ты всегда мечтал подняться до руководителя и настойчиво стремишься к этой цели, не принимая во внимание того факта, что просто программировать нравится тебе куда больше.
Ригидные ценности делают тебя уязвимым.
Но может случиться и так, что выбранная тобой технология устареет, внезапно оставив тебя без твердой опоры. Подобно лягушке в медленно нагревающемся горшке с водой, ты вдруг можешь обнаружить себя в кипятке. В середине 1990-х, когда дело касалось служб печати и файлов в масштабе предприятия, многие из нас готовы были молиться на платформу NetWare от Novell. Novell предвосхитила время со своей службой каталогов, и тот из нас, кто «был в курсе», доходил в критике конкурирующих технологий до откровенных дерзостей. Продукция Novell занимала бо́льшую часть рынка, и было сложно представить, что ситуация может измениться.
Ничто не заставляло думать, что Novell проигрывает Microsoft. Компания Microsoft не выпустила волшебную реализацию Active Directory, которая заставила бы нас завопить: «Вот это да! К черту NetWare!» Но передовые технологии от NetWare постепенно стали устаревать. Под большинством NetWare-администраторов вода закипела еще до того, как они поняли, что котел нагревается.
Помни о ловушке для обезьян как при выборе направления будущей карьеры, так и при выступлениях в защиту технологий. Ведь целенаправленный выбор может оказаться последней горстью риса, которую ты схватишь перед тем, как твоя карьера полетит к чертям.
1. Найди ловушку для обезьян. Назови свои жесткие критерии. Какие ценности, о которых ты даже не задумываешься, управляют твоими ежедневными действиями?
Нарисуй таблицу с двумя столбцами: «карьера» и «технология». В каждом столбце перечисли ценности, которые ты считаешь непоколебимо верными. К примеру, в столбце «карьера» укажи характеристики, которые всегда считал своими сильными сторонами. Перечисли и то, что считаешь своими слабостями. А как насчет карьерных устремлений? («Я хочу стать генеральным директором!») Укажи правильные пути достижения цели.
В столбце «технология» перечисли, что ты считаешь самым ценным в технологиях, в которые решил вложиться. Какие наиболее важные атрибуты технологии следует учитывать в процессе выбора? Каким образом ты создаешь масштабируемые системы? Какой видишь наиболее продуктивную среду для разработки программного обеспечения? Какие платформы лучше, а какие хуже всего в общем случае?
Завершив работу над списком, начни его перечитывать и для каждого пункта мысленно формируй противоположное утверждение. Ты допускаешь, что противоположный взгляд на вещи тоже может быть верным? Попробуй честно оценить каждую из записанных тобой характеристик.
Это список твоих уязвимостей.
2. Знай своего врага. Выбери технологию, которую ты больше всего ненавидишь, и сделай на ее основе один проект. Разработчики имеют склонность разбиваться на конкурирующие лагери. Приверженцы .NET ненавидят фанатов J2EE, а те, в свою очередь, платят им той же монетой. Любители операционной системы UNIX ненавидят Windows, а любители Windows терпеть не могут UNIX.
Разработчику часто требуется много сторонних инструментов, чтобы создавать и поддерживать проект. Система Git — один из таких инструментов и используется для контроля промежуточных версий вашего приложения, позволяя вам исправлять ошибки, откатывать к старой версии, разрабатывать проект в команде и сливать его потом. В книге вы узнаете об основах работы с Git: установка, ключевые команды, gitHub и многое другое.В книге рассматриваются следующие темы:основы Git;ветвление в Git;Git на сервере;распределённый Git;GitHub;инструменты Git;настройка Git;Git и другие системы контроля версий.
Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.
Что общего между самыми востребованными профессиями и стремительным увеличением количества информации в мире? Ответ: язык структурированных запросов (SQL). SQL — рабочая лошадка среди языков программирования, основа основ для современного анализа и управления данными. Книга «SQL: быстрое погружение» идеальна для всех, кто ищет новые перспективы карьерного роста; для разработчиков, которые хотят расширить свои навыки и знания в программировании; для любого человека, даже без опыта, кто хочет воспользоваться возможностями будущего, в котором будут править данные.
Даже плохой программный код может работать. Однако если код не является «чистым», это всегда будет мешать развитию проекта и компании-разработчика, отнимая значительные ресурсы на его поддержку и «укрощение». Эта книга посвящена хорошему программированию. Она полна реальных примеров кода. Мы будем рассматривать код с различных направлений: сверху вниз, снизу вверх и даже изнутри. Прочитав книгу, вы узнаете много нового о коде. Более того, вы научитесь отличать хороший код от плохого. Вы узнаете, как писать хороший код и как преобразовать плохой код в хороший. Книга состоит из трех частей.
Книга "Изучаем Python" - это ускоренный курс, который позволит вам сэкономить время и сразу начать писать работоспособные программы (игры, визуализации данных, веб-приложения и многое другое). Хотите стать программистом? В первой части книги вам предстоит узнать о базовых принципах программирования, познакомиться со списками, словарями, классами и циклами, вы научитесь создавать программы и тестировать код. Во второй части книги вы начнете использовать знания на практике, работая над тремя крупными проектами: создадите собственную "стрелялку" с нарастающей сложностью уровней, займетесь работой с большими наборами данных и освоите их визуализацию, и, наконец, создадите полноценное веб-приложение на базе Django, гарантирующее конфиденциальность пользовательской информации. Если вы решились разобраться в том что такое программирование, не нужно ждать.
Алгоритмы - это всего лишь пошаговые алгоритмы решения задач, и большинство таких задач уже были кем-то решены, протестированы и проверены. Можно, конечно, погрузится в глубокую философию гениального Кнута, изучить многостраничные фолианты с доказательствами и обоснованиями, но хотите ли вы тратить на это свое время? Откройте великолепно иллюстрированную книгу и вы сразу поймете, что алгоритмы - это просто. А грокать алгоритмы - это веселое и увлекательное занятие.