Обычно в первом абзаце пишут всякие мудрости жизни, про собственные грабли и о положении вещей в целом. Поэтому:
мудрость жизни: – Учиться хорошо! А хорошо учиться еще лучше!
собственные грабли: не было раньше никаких курсер и туториалов, приходилось читать умные книги и слушать умных людей. Умных книг мало, не все умные люди хорошо рассказывают, других вариантов учиться и не было.
о положении вещей в целом: сейчас есть куча платформ для MOOC, ооочень много различных курсов и множество инструментов для образования.
Цель:
Поэтому мы решили провести хакатон и сделать еще много хороших инструментов для образования.
Эта статья рассказывает о времени выполнения и о расходе памяти большинства алгоритмов используемых в информатике. В прошлом, когда я готовился к прохождению собеседования я потратил много времени исследуя интернет для поиска информации о лучшем, среднем и худшем случае работы алгоритмов поиска и сортировки, чтобы заданный вопрос на собеседовании не поставил меня в тупик. За последние несколько лет я проходил интервью в нескольких стартапах из Силиконовой долины, а также в некоторых крупных компаниях таких как Yahoo, eBay, LinkedIn и Google и каждый раз, когда я готовился к интервью, я подумал: «Почему никто не создал хорошую шпаргалку по асимптотической сложности алгоритмов? ». Чтобы сохранить ваше время я создал такую шпаргалку. Наслаждайтесь!
Разумно ли ожидать, что каждый разработчик будет мастером в любом аспекте процесса разработки? Вероятнее всего нет, однако Facebook может потребовать от вас это. Будучи на конференции OSCON, работник Facebook сказал мне, что они нанимают только «Full Stack» разработчиков. Хорошо, но что это значит?
Для меня, «Full Stack» Разработчик — это кто-то, кто знаком с каждым аспектом: превосходно владеющий многими из них и проявляющий неподдельный интерес ко всем технологиям.
Квалифицированные разработчики, хорошо знакомые со всеми аспектами, могут существенно облегчить жизнь окружающим их людям. Поэтому я так против жесткого разделения труда на рабочем месте. Конечно, в больших организациях политика и коммуникационные проблемы мешают этому. Я считаю, что суть политики найма Facebook в том, что если умные люди используют свои головы и свои сердца, то лучший продукт можно сделать за меньшее время.
Я собираюсь переучить на Java-программистов миллион человек.
Я собрал команду и сделал обучающий сервис, которым могу гордиться.
Рад сообщить, что теперь стать программистом легко, независимо от образования и опыта.
Так уж получилось, что даже на Хабре многие имеют очень смутное представление о семействе OS Linux.
Цель данной статьи – максимально популярным языком рассказать про особенности и отличия Linux от Windows для тех, кто вообще не имел с ним дела.
Я уже не один год свободно пользуюсь Archlinux, загружая винду лишь «на поиграться». Данная статья рассказывает о вещах, которые я выяснил эмпирическим путем, тыкаясь словно слепой котенок. Если бы в свое время мне попалась бы именно такая информация именно в такой форме — это сэкономило бы мне как минимум 2 года, в течение которых я переходил с Windows на Linux.
У меня есть проблема — я перфекционист. Я люблю совершенный код. Ведь это не только правильный подход к написанию программ, но и настоящее искусство. От чтения хорошего листинга я получаю не меньше удовольствия, чем от чтения хорошей книги. Проектировать архитектуру большого проекта ничуть не легче, чем проектировать архитектуру большого здания, а в случае хорошей работы — результат не менее прекрасен. Порой меня завораживает то, как изящно переплелись паттерны проектирования в создании совершенной программной системы. Меня восхищает внимание к деталям, когда абсолютно каждый метод настолько прост и понятен, что претендует на место классического примера совершенного кода.
Но, увы, всё это великолепие разбивается о суровую действительность и реальные проекты. Если мы говорим о продакшн-проекте, то пользователей не волнует, насколько красив ваш код и насколько хороша архитектура, их волнует, чтобы проект хорошо работал. Но я всё равно считаю, что в любом случае нужно стремиться писать правильно, просто при этом фанатизма быть не должно. После чтения различных холиваров на тему правильных подходов к написанию кода мне в глаза бросилась одна тенденция: каждый пытается применить означенные подходы не в целом к программированию, а только к своему опыту разработки, к своим проектам. Многие не осознают, что хорошие практики — это не абсолютные правила, которые должны строго соблюдаться в 100% сценариев, это лишь советы о том, как следовало бы поступать в большинстве ситуаций. На каждую хорошую практику всегда можно придумать несколько дюжин примеров, в которых она работать не будет. Но это вовсе не означает, что хорошая практика не такая уж и хорошая, просто её применили не к месту.
Продолжаю попытки визуализировать структуры данных в Java. В предыдущих сериях мы уже ознакомились с ArrayList и LinkedList, сегодня же рассмотрим HashMap.
HashMap — основан на хэш-таблицах, реализует интерфейс Map (что подразумевает хранение данных в виде пар ключ/значение). Ключи и значения могут быть любых типов, в том числе и null. Данная реализация не дает гарантий относительно порядка элементов с течением времени. Разрешение коллизий осуществляется с помощью метода цепочек.
По-настоящему хороший комментарий — тот,
без которого вам удалось обойтись.
Дядюшка Боб
В последнее время меня стали очень утомлять оживлённые дебаты о том, нужно ли комментировать код. Как правило, по одну сторону баррикад — самоуверенные джуниоры, имеющие непререкаемую позицию вида «А как же его не комментировать, ведь без комментариев непонятно будет!». По другую — умудрённые опытом сеньоры. Они понимают, что если возможно обойтись без комментариев, то «Лучше бы, чёрт возьми, так и сделать!». Наверное, у многих жажда комментировать идёт со студенческой скамьи, когда товарищи преподаватели заставляли комментировать каждую строчку, «чтобы студент лучше разобрался». В реальном проекте не должно быть кучи комментариев, которые только и делают, что засоряют код. Впрочем, я не агитирую вообще не писать комментарии, но если вам удалось написать такой код, который не требует пояснений, то расценивайте это, как свою маленькую победу. Сразу хотелось бы сослаться на нескольких очень умных книжек, на основе которых формировалась моя позиция. Я люблю и уважаю авторов этих работ, полностью разделяя их мнение.
Из всего, что я делаю или использую сегодня, единственное, что у меня осталось общего с моей первой работой — это написание кода.
Все остальное менялось и изменялось, и изменялось снова.
Если вы все время не продолжаете учиться, читать, совершенствовать свои навыки, то, в конечном счете, этот мерзкий каток позади раздавит вас окончательно. И тут ваша карьера, скорее всего, закончена.
С большим удовольствием ознакомился со статьями: Возможности оптимизации в языках C и C++ и Скорости разработки и исполнения не достижимые на С. В них детально разобрана оптимизация во время компиляции. Основным условием такой оптимизации является доступность значений большинства переменных на этапе компиляции. В реальном мире, к сожалению, такое встречается не всегда.
Давайте попробуем сделать нечто похожее, но уже в процессе исполнения программы. Для этого используем java, исполняющая система которой оптимизирует код на этапе исполнения. Плюс к этому позволяет создавать код на лету.
[ english version ]
Периодически проверяя нет ли реализации того или иного стандартного алгоритма в jdk, пришла мысль составить подобный обзор. Также интересны были причины наличия/отсутствия многих известных структур данных.
Формат обзора — только ключевые свойства и особенности структур и алгоритмов в составе jdk, подробности и детали — расписаны в javadoc или легко найти в исходниках.
Надеюсь на конструктивную критику и коллективный разум если что упустил.
Хватит вступлений, итак, давайте рассмотрим что включает в себя текущий jdk 7 и почему.
В этой статье я расскажу об одном необычном подходе к генерации лабиринтов. Он основан на модели Амари́ нейронной активности коры головного мозга, являющейся непрерывным аналогом нейронных сетей. При определенных условиях она позволяет создавать красивые лабиринты очень сложной формы, подобные тому, что приведен на картинке.
Вас ждет много анализа и немного частных производных. Код прилагается.
Прошу под кат!
Мне очень бы хотелось назвать эту статью «Я хочу работать в Майкрософт», однако это название было бы не совсем честным, так как, в частности, я по ряду причин сейчас работаю не в Майкрософт. Тем не менее, разница в подходе к поиску практики (internship) и рабочего места скорее количественная, нежели качественная, то есть надо пройти все те же этапы, только показать (по возможности) более глубокие и широкие знания. Поэтому, я думаю, что написанное мной будет в равной степени интересно и тем, кто хотел бы сделать там практику, и тем, кого интересует работа разработчиком в Майкрософт.
Сначала я постарался совместить в одной статье и личные впечатления о процессе и практические советы для читателей Хабрахабра, что не привело ни к чему хорошему. Поэтому я постарался в самой статье описать только тот опыт, что я приобрел, а свои впечатления убрать под спойлеры.
В продолжение статьи "Дания: страна здравого смысла" хочу поделиться, как здесь организовано изучение датского языка для иностранцев.
Целью статьи является освещение вопроса организации учебного процесса. Большую часть обучения можно пройти онлайн. Сюда входят аудио-записи слов, главное видео урока (со сквозной сюжетной линией), возможность отправить преподавателю устное и письменное сочинения и получить от него обратную связь в виде скринкаста.
Вначале — небольшая вводная, затем затронем техническую часть.
Зачем учить датский язык
Приезжим даётся 3 года, чтобы начать изучать язык за счёт государства, т.е. безвозмездно. Несмотря на это, я размышлял, стоит ли тратить на это несколько часов в неделю — ведь на нём говорит всего-то 5.7 млн человек.
В итоге я выделил для себя такие плюсы:
хотя датчане поголовно владеют английским, они очень ценят, если ты стараешься общаться с ними на родном языке. Также хотелось бы понимать надписи на улице, письма из банка, и т.д.,
для получения вида на жительство требуется сдать экзамен на владение языком и знание культуры страны. Оставаться здесь жить я не планирую, но решил не захлопывать это «окно в Европу»,
знание датского сильно упрощает понимание остальных языков скандинавской группы,
стало просто интересно, что говорят окружающие, когда думают, что ты их не понимаешь,
то, о чём я не подумал, пока не начал заниматься — новые знакомые. С иностранцами-одногруппниками подружиться проще, чем с датчанами: на курсах получается сплочённая интернациональная компашка с общим интересом.
Наткнулся в этих ваших интернетах на одно замечательное видео — презентация Антона Кекса в двух частях.
Приглашаю вас посмотреть это видео и присоединиться к дискуссии в комментариях. После опубликования поста я собираюсь выслать на указанные на слайдах контакты Антона приглашение присоединиться к нам, и ответить на наши вопросы. Надеюсь, у него уже есть аккаунт на Хабре, ибо инвайта у меня нету.
1 июля в московском офисе Яндекса начинает работать летняя мастерская стартапов Tolstoy Summer Camp – эксперимент, который будет длиться 2 месяца. Мы собираем вместе 50-60 молодых, талантливых, амбициозных, добавляем к ним экспертов и ждём результат.
Все занятия будут проходить в нашем московском офисе, поэтому всем участникам не из Москвы мы оплатим дорогу и проживание в городе. Мы ждём людей изо всех регионов России и любых других стран.
Если у вас есть желание сделать свой проект, но вы не понимаете, как выбрать стоящую идею и превратить ее в стартап, Tolstoy Summer Camp — очень правильное место. Мы принципиально сделали этот проект максимально открытым и договорились со многими опытными бизнесменами, менеджерами, дизайнерами, программистами. Все они принесут реальные знания, что позволит сильно увеличить шансы на выживание. В рамках мастерской с проектами будут работать:
Сергей Белоусов (Runa Capital, Acronis, Parallels),
Все это для того, чтобы на выходе получились хорошие проекты, интересные российским и европейским инвесторам, которые придут оценивать проекты 30 августа на Демо День.
Так как никакой проект не может состояться без разработчиков и дизайнеров, мы ждем у себя не только менеджеров, но и людей, которые умеют писать хороший код и рисовать красивые интерфейсы. Для них мы также организуем специальную программу, куда постараемся пригласить только лучших из лучших с рассказами о последних тенденциях в дизайне, mobile, big data, open source и т.д. Об этой программе мы расскажем отдельно.
Мы принимаем заявки до 31 мая. Подробности — дальше.
Канадский астронавт Крис Хэдфилд, который на днях благополучно вернулся с Международной космической станции, за время своего пребывания на борту успел стать одним из самых популярных и узнаваемых астронавтов — его видеоролики о подробностях космического быта набирали миллионы просмотров, число подписчиков его аккаунта в Твиттере тоже дошло почти до миллиона. Кроме всего прочего, он неплохо поёт и играет на гитаре. За несколько дней до возвращения на Землю он опубликовал первый в истории видеоклип, целиком снятый в космосе. К делу он подошёл ответственно — клип на песню Дэвида Боуи «Space oddity» снят, смонтирован и озвучен вполне профессионально.
Резюме – все больше бесполезный артефакт для программиста.
У хороших программистов нет времени поддерживать его в актуальном состоянии. Часто самые толковые кандидаты имеют самые нечитабельные и ужасные резюме. Сделать хорошо оформленное резюме требует кучу времени. На это, как правило, есть время только у тех кто сидит без работы и вместо того, чтобы заниматься самообразованием, бесконечно оформляет резюме.
Список прошлых мест работы мало что значит. Три года опыта в Яндексе? Поздравляю! Но на 100% это значит только то, что вы смогли пройти собеседование. Что именно вы делали и насколько хорошо – в резюме ответов нет. Большая часть разработчиков работала в никому не известных компаниях, многие из которых даже до релиза не дошли.
Количество лет опыта бесполезно, если неизвесто какие задачи решались. Возможно вы просидели 5 лет на поддержке старого проекта и знаете только все баги закрытой библиотеки Х, которая нигде больше не используется.
Здравствуйте, дорогие читатели Хабра!
Этот топик-ответ на недавнюю статью о получении IT специальности в ВУЗе.
Первой моей реакцией на этот пост был комментарий, в котором я попытался уточнить географическое положение рассматриваемых Высших Учебных Заведений. Что удивительно, помимо ответа на мой комментарий на хабре, несколько человек ответило мне в Facebook'e (у них пока что нет инвайтов), а товарищ quicksdk попросил меня рассказать в том же ключе о University of British Columbia.
Так сложилось, что я учусь в канадском университете на компьютерной специальности и уже около года работаю разработчиком (фрилансером). В связи с малым опытом работы и с тем, что я закончил всего один год обучения на бакалавриате, я не позиционирую свое мнение, как единственно правильное. Однако кому-нибудь эта статья может оказаться интересной.