• Советы для инженеров от менеджера Google

      Всем привет!

      Меня зовут Лариса. Я работаю в Google и веду блог на larrr.com, где я изначально и опубликовала эту статью.

      Сегодня я предлагаю вашему вниманию статью, которая изначально была написана исключительно для внутреннего пользования Google. Мне очень понравилась, так что я связалась с автором, с ее разрешения я ее немного переделала, и получила разрешение от Google Press на публикацию. Перевод мой.

      На всякий случай – это не официальный Google документ, и Google не несет ответственности за его содержание. Он субъективный, и написан сотрудником для сотрудников.

      Советы для инженеров

      15 апреля 2013
      Отредактировано 21 мая 2014
      Переведено 31 августа 2015
      Gretta Bartels, Software Engineering Manager at Google


      Уважаемый читатель,

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

      Один из моих более опытных коллег научил меня тому, что для менеджера очень важно быть предельно предсказуемым. У менеджера должен быть какой-то набор простых правил, о которых знают все его подчиненные, и которым они могут следовать даже когда менеджера рядом нет. Поэтому моя цель – чтобы программисты в моей команде могли задать сами себе вопрос “Что бы на это сказала мой менеджер?”, и сами себе на него правильно ответить. Тогда команда сможет работать практически самостоятельно, без моего руководства. А я буду сидеть дома и кушать пирожные :).

      Вот список моих основных правил:
      Читать дальше →
    • Eclipse for Java Developers. Навигация и редактирование


      Наблюдая за со своими знакомыми, которые недавно начали изучать программирование или перешли на Eclipse c другой IDE, я часто замечаю что они почти не используют вспомогательные инструменты среды разработки. Они либо не знают о них вообще, либо не понимают какую практическую пользу они могут принести.
      Данная статья предназначена в основном для начинающих в работе с Eclipse. Но в процессе подготовки статьи я сам узнал о нескольких простых и удобных инструментах, которые за два года активной разработки ни разу не использовал.
      В данной статье речь пойдет о навигации и редактировании.
      Внутри скриншоты.
      Читать дальше →
    • Дети не умеют пользоваться компьютерами… И вот почему это должно вас беспокоить

        Оригинал: http://www.coding2learn.org/blog/2013/07/29/kids-cant-use-computers/

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

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

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

        — Придется поторопиться. Через 5 минут у меня урок, — сказал я.
        — Вы преподаете?
        — Это моя работа, просто так получилось, что также приходится управлять командой специалистов по сетям.

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

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

        Вручил MacBook обратно, и женщина открыла Safari. «Интернет не работает», заявила она с презрением.

        Я столько раз слышал эту фразу от учеников и персонала, что у меня уже заготовлена стандартная реакция. Обычно я достаю сотовый телефон, делаю вид, что набираю номер. И подняв трубку к уху, говорю: «Да, соедините меня с офисом Президента Соединенных Штатов… НЕТ, Я НЕ МОГУ ПОДОЖДАТЬ, это чрезвычайное происшествие… Алло, Мистер Президент, боюсь у меня плохие новости. Меня только что проинформировали, что Интернет не работает».

        Но я решил, что молодая женщина, наверное, не оценит сарказм, и забрал MacBook обратно, чтобы добавить настройки прокси-сервера. Без каких-либо идей, как это сделать в OS X. Прокси у нас используется, чтобы убедиться, что персонал и ученики не могут получить из школьной сети доступ к порно. Также он фильтрует насилие, экстремизм, ругательства, социальные сети, алкоголь, курение, хакерство, игры и потоковое видео. Забавно, что когда вы ищете в Google «proxy settings OSX», результаты выдачи будут заблокированы, поскольку содержат слово «proxy», а оно фильтруется.

        «Вы не знаете, где здесь настройки прокси?» — спросил я с надеждой.

        Ответа я не получил. С тем же успехом можно было спросить у нее «Не подскажете, как мне ретикулировать сплайны с использованием гексагональной системы декодирования, чтобы я мог создать GUI на VisualBasic и отследить IP-адрес?»

        корни шутки

        спасибо acherneha — прим. переводчика.


        Настройки прокси я нашел и заполнил за десять секунд. Вернул ей MacBook, и она, буквально, закрыла Safari и открыла его заново, вместо того, чтобы обновить страницу. «Пасиб…». Благодарность была ошеломляющей.

        Я уже уходил, когда она меня остановила. «PowerPoint не работает».

        Не устали? Под катом реально много букв
      • Хорошая работа, Apple, вы обманули весь мир

        • Translation
        Apple выиграла патентное разбирательство против Samsung с присуждением более одного миллиарда долларов в качестве возмещения ущерба. Можете почитать об этом подробнее на MacRumors.

        Ответ Apple: «Мы благодарны присяжным за свою работу и за потраченное время на наш рассказ, и мы счастливы, что наконец-то можем это сказать. Множество доказательств, представленных во время процесса, показали, что Samsung занимался копированием намного глубже, чем мы думали. Судебные процессы между Apple и Samsung были о гораздо большем, чем просто о патентах и деньгах. Они были о ценностях. В Apple мы ценим оригинальность и инновации, и мы посвятили свою жизнь созданию лучших на Земле устройств. Мы делаем эти продукты для того, чтобы порадовать наших клиентов, а не для того, чтобы наши конкуренты их скопировали. Мы аплодируем суду за признание действий Samsung’а преднамеренными и за громкий и яркий знак, что воровство это нехорошо.»

        Ответ Samsung: «Сегодняшний вердикт не должен рассматриваться, как победа Apple, но как потеря для Американского потребителя. Это приведёт к меньшему выбору, низкой инновации и потенциально высоким ценам. Очень жаль, что патентным правом можно манипулировать для отдачи одной компании монополии над прямоугольниками с закругленными углами, или технологией, которая улучшается каждый день Samsung’ом и другими компаниями. Потребители имеют право выбирать, и они знают что покупают, приобретая продукты Samsung. Это не последнее слово в этом деле или в других битвах, которые ведутся в судах и трибуналах по всему миру, некоторые из которых уже отклонили претензии Apple. Samsung продолжит применять инновации и предоставлять потребителю выбор.»
        Читать дальше →
      • Как Microsoft стал тем, что раньше презирал



          Компания Microsoft имеет долгую и богатую историю лидерства в сфере информационных технологий, которую десятилетиями сопровождали многочисленные инновации. Однако, за последние годы редмондский гигант значительно отстал от своих прямых конкурентов: утеряны позиции на рынке мобильных технологий, ведь даже iPhone дает больше прибыли, чем весь Microsoft, и всё ещё не выпущен Windows Surface, ответный ход на выпад трёхлетний давности компании Apple в виде планшетного компьютера iPad. Курт Эйхенвальд рассказал о причинах этого «потерянного десятилетия Microsoft» журналу Vanity Fair.

          Рассказ Эйхенвальда помогает понять, что главной проблемой инноваций в Microsoft является так называемое стэковое ранжирование (stack ranking), заставляющее каждую рабочую единицу выделять определенную долю лучших, хороших, средних и плохих работников.
          Читать дальше →
        • FAQ по программированию под Android от новичка, и для новичков

          Предисловие к FAQ.

          Программирование является моим хобби уже давно (правда на других языках и платформах), но до андроида руки дотянулись совсем недавно. Прошло несколько этапов, прежде чем я добрался до написания программ.
          Сначала была пара месяцев посвященных Java, на сайте с «Сгибателем».
          После, долгие попытки подружится с Eclipse, закончившиеся побегом на Android Studio.
          На данный момент выпущено 7 программ и две находятся в разработке.
          Данная подборка возникла как попытка структурирования и оптимизации полученной в процессе информации.
          Заранее извиняюсь за возможно некорректную терминологию – так как практикую обучение через создание, и в теоретической части есть пробелы.

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

          • Translation
          Хороший программист — это тот, кто смотрит в обе стороны, переходя дорогу с односторонним движением.
          Даг Линдер

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

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

          Читать дальше →
        • 100 статей про разработку для Windows на русском языке

            image

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

            Полный список под катом
            Читать дальше →
          • Психологическая деформация программистов. Взгляд с обеих сторон баррикад

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

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

              И что же них такого деформированного?
            • Версионная миграция структуры базы данных: основные подходы

                Проблемы контроля версий баз данных и миграций между версиями уже не раз поднимались как на Хабре (1, 2, 3 и др.), так и в Интернете (преимущественно, англоязычном).

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

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

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

                  Ниже мы рассмотрим простой, но показательный случай возникновения проблем производительности многопоточных программ, а потом я дам несколько общих рекомендаций, как избежать проблемы потери эффективности вычислений из-за разделения кэша между потоками.
                  Читать дальше →
                • Стартовал онлайн курс «Введение в Linux» от Linux Foundation


                    Сегодня открыли доступ к обучающим материалам курса «Введение в Linux».
                    Курс создан Linux Foundation и проходит на платформе edX.

                    О курсе:
                    Linux обеспечивает работу 94% суперкомпьютеров, большинства серверов в Интернете, основных финансовых сделок в мире и миллиардов Android устройств. Если коротко, то Linux везде. Он присутствует во множестве различных архитектур, от мэйнфреймов до серверов, настольных компьютеров, мобильных устройств и на ошеломляющем разнообразии железа.

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

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

                    UPD: Курс очень простой, он для пользователей, которые действительно первый раз запускаю Linux



                    От автора курса:
                    Этот курс создан на основе оригинального курса Linux Foundation «Introduction to Linux», который всегда преподавали с инструктором в классе или в виртуальном классе через Интернет. Linux Foundation верит, что задача изменения этого курса для его бесплатного использования сообществом была стоящей и будет хорошо оценена.
                    Читать дальше →
                  • Время против памяти на примере хеш-таблиц на Java

                      Эта статья иллюстрирует т. н. компромисс скорости и памяти — правило, которое выполняется во многих областях CS, — на примере разных реализаций хеш-таблиц на Java. Чем больше памяти занимает хеш-таблица, тем быстрее выполняются операции над ней (например, взятие значения по ключу).

                      Читать дальше →
                    • 8 ловушек программирования



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

                        Однако я верю в то, что их можно избежать, если знать в какие ловушки можно попасть и как из них выбираться. Возможно эта вера — очередная ловушка.
                        Читать дальше →
                      • Создание API: в рамку и на стену

                        • Translation
                        • Tutorial
                        Каждый программист — проектировщик API. Хорошие программы состоят из модулей, а протокол взаимодействия модулей — это тоже API. Хорошие модули используются повторно.

                        API — это большая сила и большая ответственность. У хорошего API будут благодарные пользователи; поддержка плохого превратится в кошмар.

                        Публичный API — не воробей, опубликуешь — не уберешь. Есть только одна попытка сделать все правильно, поэтому постарайся.

                        API должно быть легко использовать, но сложно использовать неправильно. Сделать что-то простое с помощью такого API должно быть просто; сложное — возможно; сделать что-то неправильно должно быть невозможно, или, по крайней мере, трудно.

                        API должен описывать сам себя. Изучение кода на таком API не вызывает желания читать комментарии. Вообще, комментарии редко нужны.

                        Перед разработкой API собери требования с долей здорового скептицизма. Осознай общие задачи и реши их.

                        Оформляй требования как шаблоны использования API. Сверяйся с ними в процессе проектирования.
                        Читать дальше →
                      • Грабли, на которые не стоит наступать

                        От переводчика: Это перевод статьи авторства Джоэля Спольски (Joel Spolsky). Через 2 года эта статья уже сможет получить автомобильные права в США, а еще через два — и не только там. Да, ей 14 лет (а точнее 14 лет и 11 дней), но актуальности она не потеряла ни грамма. Я регулярно вижу, как программисты (да и я сам, временами) порываются наступить на эти грабли. Тот факт, что я не нашел ее перевода на Хабре, вполне может свидетельствовать о том, что я плохо искал. Об ошибках перевода прошу сообщать в ЛС

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

                        Наконец выходит первая публичная бета-версия Netscape 6.0. Версии 5.0 не существует. Предыдущий мажорный релиз — версия 4.0 — был выпущен почти три года назад. Три года — это невероятно большой срок в мире интернета. Все это время в Netscape сидели и беспомощно наблюдали за тем, как уменьшается их доля рынка.

                        Это немного подло с моей стороны критиковать их за столь долгое ожидание между релизами. Они ведь не специально это сделали, правда?
                        Читать дальше →
                      • 1000+ часов видео по Java на русском

                        • Tutorial
                        Добрый день.
                        Меня зовут Головач Иван, я руковожу небольшой образовательной компанией и преподаю сам:
                        1. Java Core
                        2. Junior Java Developer: Servlet API, JDBC, Maven, JUnit, Mockito, Log4J, основы Spring/SpringMVC, основы JPA/Hibernate, шаблоны/архитектуры MVC/IoC/DAO.
                        3. Multicore programming in Java.


                        Также я веду курс «Scala for Java Developers» на платформе для онлайн-образования udemy.com (аналог Coursera/EdX).

                        В следствии этого у меня скопилось значительно количество ссылок на видео на русском языке по Java как моего авторства, так и моих коллег.

                        (GolovachCourses.com)


                        Здесь собраны несколько вариантов записи моего курса Java Core.
                        Модуль #1 (Procedural Java):
                        Набор июль 2013: #1, #2, #3, #4
                        Набор апрель 2013: #1, #2, #3, #4
                        Набор февраль 2013: #1, #2, #3, #4
                        Набор январь 2013: #1, #2, #3, #4
                        Набор октябрь 2012: #1, #2, #3, #4.
                        Читать дальше →
                        • +102
                        • 1130k
                        • 38
                      • Привычка не думать

                          Thinking.png

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

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

                          Сложно в двух словах описать тематику статей — она, как я сказал, очень широка. Поэтому ниже просто приведу несколько тем, которые сохранил в закладки.
                          Читать дальше →
                        • Пять способов выгореть для программиста

                          • Translation
                          imageОт переводчика
                          Выгорание в жизни программиста может случиться по самым разнообразным причинам; если задаться целью перечислить все пути, которыми оно подкрадывается к нам, то одно лишь это перечисление займет немало времени. Это еще один повод, по которому не стоит недооценивать процесс выгорания — иначе однажды вам придется искать дорогу обратно, и стоить это может очень дорого. Последняя строка вовсе не голословна — мне самому однажды смогла помочь лишь любовь к коду — когда уже, казалось бы, все осточертело и ничего не хотелось, чтение подвернувшегося Макконнелла навеяло воспоминания о том, как же когда-то мне нравилось программировать. И сегодня мне нравится делать это снова.
                          А теперь — слово автору.

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

                          1. Думать о проекте и только о нем


                          Признайтесь себе: бизнес хочет, чтобы вы создавали наилучший продукт «для наших клиентов». Вы откладываете в долгий ящик какой-либо функционал из-за того, что не успеваете к дедлайну. Вы планируете проект и анализируете его со всех сторон для того, чтобы разбить на несколько «перевариваемых» частей, которые затем должны быть воплощены одним из кодеров (в роли обезьянки, или code monkey, кстати говоря, можете быть и вы один). Вы создаете рабочий прототип, затем получаете обратную связь и делаете еще одну итерацию. И все это — без единой мысли о себе любимом.
                          Читать дальше →