Pull to refresh
0
Dmitry Efremove @McStefanread⁠-⁠only

Пользователь

Send message

Что такое красивый код, и как его писать?

Reading time22 min
Views205K

1. Вступление


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

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

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

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

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

Да, все это необходимо знать. Но при этом, понимание того, как должен выглядеть достойный код, обычно появляется уже при наличии практического (чаще в той или иной степени негативного) опыта за плечами. И при условии, что жизнь “потыкала” тебя не только в сочные образцы плохого кода, но и в примеры всерьез достойные подражания.

В этом-то и заключается вся сложность: твое представление о “достойном” и “красивом” коде полностью основано на личном многолетнем опыте. Попробуй теперь передать это представление в сжатые сроки человеку с совсем другим опытом или даже вовсе без него.

Но если для нас действительно важно качество кода, который пишут люди, работающие вместе с нами, то попробовать все же стоит!
Читать дальше →
Total votes 97: ↑79 and ↓18+61
Comments145

Грязные секреты экспресс-курсов по программированию

Reading time8 min
Views79K
Привет, Хабр!

Цель нашего образовательного проекта Хекслет — обучать программированию. Мы постоянно стараемся обратить внимание на то, что основы программирования, анализ и решение задач, понимание фундамента — это важно. Важнее, чем просто модный стек или технология. Поэтому наши курсы по PHP или Ruby основаны на SICP, а курс по базам данных на самом деле посвящен стандарту SQL-92, а не особенностям какого-нибудь MySQL.

В СНГ все активнее распространяется идея образовательных центров, где "можно стать программистом и устроиться на работу за 8 недель". На западе же — их сотни! Каждый обещает светлое будущее, многие твердят, что «любой может стать программистом». Обещают трудоустройство. На волне «coding is the new literacy» («кодинг это новая грамотность») тысячи людей записываются в так называемые «буткемпы». Это огромный бизнес, но, к сожалению, большинство таких буткемпов не готовит настоящих программистов.

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

Читать дальше →
Total votes 45: ↑27 and ↓18+9
Comments34

Конкурс пользовательского дизайна от Рокетбанка или как заказать банковскую карту с логотипом Хабра

Reading time1 min
Views18K
В начале месяца стартовал конкурс от Рокетбанка на лучший дизайн пластиковой карты. Только за первую неделю заявки на участие подали около 1000 человек. На данный момент на суд народного жюри представили около 3000 работ. Победителем станет тот участник, который соберет наибольшее число предзаказов своей карты. Именно карта победителя и будет выпущена большим тиражом и предложена всем желающим.

Дизайнер Web-payment.ru tan4ikweb тоже подсуетилась и с разрешения компании ТМ предложила вариант с любимым логотипом:

В случае победы нашего варианта, приз (iPhone6 и подписка Adobe CC) будет конвертирован в денежный эквивалент и пожертвован на благотворительность через фонд Pomogi.org, что будет документально подтверждено.

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

Ну а под катом подборка других работ, заслуживающих внимания.
Читать дальше →
Total votes 59: ↑33 and ↓26+7
Comments32

Создание игры на Blend4Web. Путь программиста

Reading time8 min
Views13K
В своей первой статье на Хабре, посвященной разработке браузерной игры, я показал основные этапы создания базовой сцены для Blend4Web. Пара примитивов, несколько текстур плюс встроенные возможности платформы позволили с легкостью воплотить задуманную идею — воду с рефракцией и каустикой.

Можно сколько угодно любоваться переливами на морском дне. Пришло время реальной работы. Прежде всего нужно разобраться с программированием и сделать первые шаги в написании кода.
Читать дальше →
Total votes 15: ↑12 and ↓3+9
Comments2

Calque — калькулятор, который удобнее, чем консоль браузера

Reading time1 min
Views54K
Приветствую.

Существует приложение для iOS — Tydlig, которое буквально переосмысливает калькулятор, и делает его потрясающе удобным. Попользовавшись один раз этим приложением, остаешься его любителем.

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

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

Поиск чего-то похожего на Tydlig ничего не дал, и было принято решение писать свое приложение.

Что из этой затеи получилось:


Читать дальше →
Total votes 105: ↑105 and ↓0+105
Comments91

Бесплатные ресурсы IBM Bluemix для разработчиков

Reading time2 min
Views5.7K


Сначала я поставил красивую картинку с роботом, чтобы привлечь внимание, ведь мы все любим роботов. Но потом заменил вот на этот скучный скриншот с сайта IBM Bluemix, ведь мы все любим деньги. Точнее не любим их тратить. Скриншот вполне информативный, но ниже я немного распишу детали. Итак, что же получает разработчик бесплатно?
Читать дальше →
Total votes 6: ↑5 and ↓1+4
Comments0

Go как первый язык программирования для школьников

Reading time5 min
Views37K
Перевод рассказа об опыте обучения программированию группы школьников, с использованием языка Go. Оригинальный текст в почтовой рассылке тут

(ориг. фото)
Читать дальше →
Total votes 27: ↑19 and ↓8+11
Comments62

.NET Native – что это означает для разработчиков под универсальную Windows-платформу (UWP)?

Reading time7 min
Views46K
В Windows 10 универсальные Windows-приложения на управляемых языках (C#, VB) проходят в магазине процедуру компиляции в машинный код с использованием .NET Native. В данной статье мы предлагаем вам познакомиться подробнее с тем, как это работает и как это влияет на процесс разработки приложений. Ниже вы найдете видео-интервью с представителем команды разработки .NET Native и перевод соответствующей статьи.




Что такое .NET Native?


.NET Native – это технология предварительной компиляции, используемая при создании универсальных Windows-приложений в Visual Studio 2015. Инструменты .NET Native компилируются ваши IL-библиотеки с управляемым кодом в нативные библиотеки. Каждое управляемое (C# или VB) универсальное Windows-приложение использует данную технологию. Приложения автоматически компилируются в нативный код прежде, чем они попадут на конечное устройство. Если вы хотите погрузиться глубже в то, как это работает, рекомендуем статью “Компиляция приложений с помощью машинного кода .NET”.
Читать дальше →
Total votes 22: ↑20 and ↓2+18
Comments14

Программировать с нуля. «Сейчас» — самое подходящее время, чтобы начать

Reading time7 min
Views365K

(Иллюстрации к статье А.П. Ершова «Программирование — вторая грамотность»)

Стив Джобс не написал ни строчки кода, Билл Гейтс — написал. Пол Грэм — первоклассный программист, Питер Тиль — юрист по образованию, сооснователь PayPal и владелец Palantir (написал ли он что-нибудь?), а Илон Маск в детстве написал свою игру и успешно её продал.

Никита truesnow из #tceh сказал мне, что на курсе «Врубаемся в Ruby» они научат программировать любого человека, даже с нуля. Я спросил его: «А с гуманитарием справитесь?» И мы задумались, были ли случаи, когда «гуманитарий» выучил язык программирования?

На ум сразу пришел бомж-программист, но после успеха с его приложением он предпочёл остаться «дзен-монахом». Есть ли еще примеры? Вдохновляющий пример, что научиться кодить может каждый — слепой программист. Когда я прочитал статью на Хабре «Смотря на код с закрытыми глазами», то понял, что нет преград, кроме собственных отмазок.

А у меня для вас есть три истории из моей жизни. Просто три истории.

История первая — ламер


Слово «ламер» я прочитал в «Компьютерре». Там давалось такое определение: «Ламер — отнюдь не безграмотный человек, не умеющий (как бы это помягче выразиться?) программировать». Окрылённый истиной я побежал и рассказал об этом друзьям-одноклассникам, но они предпочли поиграть в футбол, вместо того чтобы освоить суперспособности. Забавно, что потом все они зарабатывали программированием деньги, а я нет. Через неделю я записался в краевую станцию юных техников (КСЮТ), где был кружок по программированию. Там для новичков давали qbasic. А боги прогали на C.
Читать дальше →
Total votes 36: ↑29 and ↓7+22
Comments62

Полезные ресурсы Microsoft для ИТ-специалистов

Reading time2 min
Views28K
Приветствую, коллеги!

Для меня ИТ-специалисты — главная и самая ценная аудитория, люди, с которыми и для которых я работаю каждый день. В конечном итоге смысл того, чем я занимаюсь, — сделать жизнь айтишников немного лучше. Например, предоставив интересную и полезную информацию. Наша небольшая команда постоянно работает над тем, чтобы такая информация всегда была у Вас под рукой.
Читать дальше →
Total votes 25: ↑18 and ↓7+11
Comments11

Google Developers Launchpad — всё что нужно для успешного старта

Reading time1 min
Views13K
Привет, Хабр! Мы стараемся поддерживать разработчиков инструментами, технологиями, информацией и вниманием. Одно из направлений нашей деятельности — программа Google Developers Launchpad, система поддержки стартапов и разработчиков приложений. Она была не так давно запущена в мире и практически сразу пришла и в Россию.



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

Программа перспективная и ряд российских проектов уже прошел или сейчас проходит через неё. Вместе с проектом AppTractor.ru мы отобрали шесть участников Launchpad и поговорили с ними об их работе.
Читать дальше →
Total votes 15: ↑13 and ↓2+11
Comments5

Почему Go превосходит посредственность

Reading time3 min
Views29K
В апреле 2001 Пол Грэм написал статью «Превосходя посредственность» («Beating the averages» — ориг).

Этот пост о том, почему Go, следуя статье, и есть то самое секретное оружие, которое должно быть у каждого стартапа.

Секретное оружие


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

Процитированный параграф описывает то, насколько важна большая скорость разработки для стартапа. И это логично, ведь стартапы всегда ограничены во времени и деньгах.
И достижение высокой продуктивности это именно то, где Go блистает.
Читать дальше →
Total votes 62: ↑43 and ↓19+24
Comments183

7 правил написания программ, которые не умрут вместе с вами

Reading time5 min
Views59K
Ваши программы – это ваше наследие. Решайте сами, как долго оно будет существовать.

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

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

Что можно получить, выдавая хороший код? Разве не имеет права на жизнь подход в обучении под названием «двигайся быстрее, ломая всё на своём пути?» Нет. Обучиться писать код – это навык, это доступно каждому. Обучиться писать хороший код – это искусство. Это требует усилий, времени и целеустремлённости.
Читать дальше →
Total votes 49: ↑39 and ↓10+29
Comments17

Лекции Технопарка. Программирование в управлении. История одного студента Бауманки

Reading time28 min
Views25K
Сегодня мы продолжаем цикл публикаций лекций Технопарка (кстати, недавно проекту исполнилось 3 года). В этой лекции Кирилл Маркин, студент МГТУ им. Баумана, поделится своим опытом по созданию небольшой компании «Диафентис», которая занимается внедрением различных программных комплексов. Конспект лекции смотрите под катом.



Подписывайтесь на наш youtube-канал, там будет еще много интересного!
Читать дальше →
Total votes 48: ↑41 and ↓7+34
Comments9

Information

Rating
Does not participate
Registered
Activity