Как стать автором
Обновить

FDA опубликовало принципы разработки ИИ-устройств

Время на прочтение 2 мин
Количество просмотров 1.4K
Машинное обучение *Законодательство в IT Научно-популярное Искусственный интеллект Здоровье

Управление по санитарному надзору за качеством пищевых продуктов и медикаментов США (Food and Drug Administration, FDA) вместе с Британским управлением по регулированию обращения лекарственных препаратов и медицинских товаров и Министерством здравоохранения Канады разработали и опубликовали принципы разработки ИИ-устройств. Предполагается, что производители будут использовать их для повышения качества медицинских приборов, работа которых основана на ИИ и машинном обучение.

Читать далее
Всего голосов 12: ↑10 и ↓2 +8
Комментарии 2

Программирование — это не Дженга

Время на прочтение 9 мин
Количество просмотров 2.1K
Чулан
Перевод
Чувствуете ли вы себя игроком в Дженгу (игра, в которой игроки попеременно добавляют по одному элементу к возводимой конструкции, проигрывает тот, чье действие приведет к её разрушению), когда программируете? Насколько легко вносить изменения в ваши программные системы? Опасаетесь ли вы, что после внесения изменений ваш код неожиданно перестанет работать? Если вы утвердительно ответили на один из этих вопросов — это явный признак некачественно спроектированного кода, который приводит к замедлению вашей работу уже на следующий день после его появления. А приходилось ли вам когда нибудь разрабатывать код, который сложно было понять уже на следующий день? Мне посчастливилось присутствовать на многих презентациях Боба Мартина (Uncle Bob) и мне очень нравится та часть его выступления, где он спрашивает слушателей, сталкивались ли они с существенным замедлением скорости разработки из-за плохого кода. Когда большинство слушателей поднимали руки, он спрашивал: «Так зачем же вы его так написали?».

Читать дальше →
Всего голосов 14: ↑14 и ↓0 +14
Комментарии 7

Минифест (манифест разработчиков-минималистов)

Время на прочтение 6 мин
Количество просмотров 49K
Разработка веб-сайтов *Программирование *
Перевод
От переводчика

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

Снова прошу прощения за отсутствие перевода словосочетания “computer science”.


Кратко


  • Боритесь за закон Парето, следите за тем, чтобы 20% вашего труда давало вам 80% результата;
  • Расставляйте приоритеты, ведь минимализм нужен для того, чтобы делать то, что нужно, а не распыляться по мелочам;
  • Лучшее — враг хорошего: сначала просто сделайте, потом сделайте правильно, потом сделайте лучше;
  • Убивайте в зародыше, не бойтесь начать всё сначала. Чем быстрее ошибётесь, тем быстрее научитесь;
  • Повышайте свою ценность. Постоянно думайте о том, чем можно помочь команде, — и развивайтесь в этом направлении;
  • Сперва основы. Мыслите последовательно, ориентируясь на лучшие практики мира Computer Science;
  • Посмотрите с разных сторон. Простое получается тяжелее, чем сложное, поэтому включайте воображение;
  • Синтаксис — основа взаимодействия. Мы пишем код для людей, а не для машин;
  • Не запутывайте. Старайтесь проектировать слоями, по мере возможности не зависящими друг от друга;
  • Вычищайте оставленное-на-всякий-случай. Минимализм борется с отвлекающим от основного.

Читать дальше
Всего голосов 131: ↑120 и ↓11 +109
Комментарии 39

Спорные, но актуальные принципы разработки

Время на прочтение 2 мин
Количество просмотров 16K
Блог компании НТЦ Метротек Разработка веб-сайтов *Программирование *
В нашей компании в процессе разработки принято придерживаться нескольких простых принципов. Возможно, кому-то они покажутся спорными, кому-то наивными, но, так же как и календарь, про который писал в прошлом году наш IT-директор (aka paulig), эти принципы — результат собственного опыта и ошибок. Кроме того, мы верим, что следование им даёт возможность решать задачи быстрее и эффективнее.

Зачем это было написано, если есть множество книжек по методологиям разработки (в том числе extreme programming, scrum, tdd), по программированию в целом и в частности, о том, «как пасти котов» и про «идеальный код»? Книг много, но разработчики, к несчастью, их читать не любят. Ну, ладно, любят, но не все. У них, мол, своя специфика. Квинтэссенция нужна. И проще, ближе, понятнее. Вот поэтому. И в жизни чаще всего приходится вспоминать, вернее, не забывать, именно те, которые перечислены ниже.

Посмотрев на историю страницы в нашем корпоративном twiki, я обратил внимание, что небольшой список с пояснениями, на основе которого сделана эта публикация, начал своё существование в 2006 году и неспешно дополнялся до 2011 года. Потом почему-то заглохло. Может быть, у кого-нибудь из читателей появится желание что-то добавить?
Принципы под катом
Всего голосов 32: ↑24 и ↓8 +16
Комментарии 19

Разработка взаимодействия с пользователем мобильных устройств — ключевые принципы

Время на прочтение 7 мин
Количество просмотров 13K
Анализ и проектирование систем *Графические оболочки *Разработка мобильных приложений *Тестирование мобильных приложений *
Перевод


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

Хорошая разработка пользовательского интерфейса решает обе эти проблемы проектирования:

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

Ниже изложены 9 принципов разработки, являющиеся, по моему мнению, ключевыми при обеспечении, действительно, высококачественного взаимодействия с пользователем.
Читать дальше →
Всего голосов 22: ↑21 и ↓1 +20
Комментарии 13

Чистый код для TypeScript — Часть 1

Время на прочтение 4 мин
Количество просмотров 15K
Разработка веб-сайтов *JavaScript *Программирование *TypeScript *
Из песочницы

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


Читать дальше →
Всего голосов 22: ↑15 и ↓7 +8
Комментарии 32

Чистый код для TypeScript — Часть 2

Время на прочтение 6 мин
Количество просмотров 11K
Разработка веб-сайтов *JavaScript *Программирование *TypeScript *

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


Читать дальше →
Всего голосов 14: ↑13 и ↓1 +12
Комментарии 24

Чистый код для TypeScript — Часть 3

Время на прочтение 9 мин
Количество просмотров 8.5K
Разработка веб-сайтов *JavaScript *Программирование *TypeScript *
Перевод

Заключительная часть статей, посвященных тому, как можно использовать принципы чистого кода в TypeScript(ps. Все эти принципы относятся не только к языку TypeScript).


Читать дальше →
Всего голосов 6: ↑6 и ↓0 +6
Комментарии 7

Принципы SOLID в картинках

Время на прочтение 4 мин
Количество просмотров 239K
Блог компании Productivity Inside Совершенный код *
Перевод


Если вы знакомы с объектно-ориентированным программированием, то наверняка слышали и о принципах SOLID. Эти пять правил разработки ПО задают траекторию, по которой нужно следовать, когда пишешь программы, чтобы их проще было масштабировать и поддерживать. Они получили известность благодаря программисту Роберту Мартину.

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

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

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

Ну, приступим.
Читать дальше →
Всего голосов 64: ↑59 и ↓5 +54
Комментарии 25

Почему принципы SOLID не являются надежным решением для разработки программного обеспечения

Время на прочтение 6 мин
Количество просмотров 10K
Программирование *Анализ и проектирование систем *Совершенный код *Проектирование и рефакторинг *ООП *
Перевод

Роберт Мартин представил принципы SOLID в 2000 году, когда объектно-ориентированное программирование стало настоящим искусством для программистов. Каждый хочет создать что-то долговечное, которое можно использовать повторно, насколько это возможно, с минимальными изменениями, которые потребуются в будущем. SOLID - идеальное название для этого.

Фактически, объектно-ориентированное программирование работает лучше всего, когда мы можем отделить то, что останется, от того, что изменится. Принципы SOLID помогают разделять это.

Мне лично нравится идея, лежащая в основе принципов SOLID и я многому из нее научился.

Читать далее
Всего голосов 28: ↑17 и ↓11 +6
Комментарии 19

Почему принцип программирования на уровне интерфейсов в большинстве случаев ошибочен и приводит к плохой архитектуре

Время на прочтение 3 мин
Количество просмотров 39K
Программирование *Анализ и проектирование систем *Проектирование и рефакторинг *

(Disclaimer!) Данная точка зрения не претендует на роль абсолютной истины и является лишь результатом моего опыта, чтения, наблюдений и размышлений.

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

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

Читать далее
Всего голосов 137: ↑112 и ↓25 +87
Комментарии 123

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

Время на прочтение 4 мин
Количество просмотров 38K
Блог компании Хекслет Программирование *IT-стандарты *ООП *Управление разработкой *

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

Читать далее
Всего голосов 49: ↑31 и ↓18 +13
Комментарии 51

Еще раз о KISS и трендах

Время на прочтение 4 мин
Количество просмотров 12K
Python *Программирование *

Последние несколько лет async вообще и asyncio в частности в питоне все больше набирают популярность и их все чаще используют. При этом иногда забывают о принципе KISS (Keep it simple, stupid) и о том, какие вообще проблемы решает асинхронный код и зачем он нужен. В этой статье я бы хотел описать пример, когда задачу можно и, на мой взгляд, нужно решать без использования async. И вообще, практически без всего.

Читать далее
Всего голосов 13: ↑10 и ↓3 +7
Комментарии 16

Взгляд тестировщика на SOLID

Время на прочтение 24 мин
Количество просмотров 7.8K
Блог компании Lineate Тестирование IT-систем *ООП *Тестирование веб-сервисов *Тестирование мобильных приложений *

Привет, Хабр! Меня зовут Оля, и я старший инженер по тестированию в Lineate. Хочу рассказать о своей попытке осознать SOLID принципы и понять, где их место в автоматизированном тестировании. 

Сегодня можно найти тысячи статей о SOLID. Только на Хабре их как минимум пара десятков. Эту я пишу по двум причинам: за время изучения не видела материала, в котором бы все принципы SOLID раскрывались на сквозном примере, и в сети нашла минимум информации про применение SOLID в автоматизации тестирования.

Соответственно, этот материал состоит из двух частей:

- в первой возьмем простое приложение на Java и улучшим его с помощью SOLID принципов - от программы с парой классов, которые делают все подряд, дойдем до приложения, разбитого на несколько модулей с конкретными функциями (да, это еще одно объяснение SOLID - смело пропускайте, если уже и так представляете о чем это);

- во второй части посмотрим, где во фреймворках автоматизированного тестирования может использоваться SOLID.

Читать далее
Всего голосов 11: ↑7 и ↓4 +3
Комментарии 17

Принципы Solid и как они помогают сделать код лучше

Время на прочтение 10 мин
Количество просмотров 20K
Блог компании ITentika C# *

Про принципы Solid написано немало, в том числе на Хабре. Показывали в картинках, рассказывали на примерах.  

Так чем же будет отличаться эта статья, спросите вы? А мы скажем: подходом. Сначала мы расскажем про ситуации, которые порой возникают на проектах, как код разрастается, становится сложнее и как сделать так, чтобы этот самый код не потерял в качестве и был читаем. 

Читать далее
Всего голосов 12: ↑8 и ↓4 +4
Комментарии 14

Принцип «Fail Fast!» в разработке приложений

Время на прочтение 6 мин
Количество просмотров 2.9K
Программирование *IT-стандарты *
Перевод

В этой статье описан принцип "Fail Fast!". Что это? Зачем он нужен? Как этот принцип поможет нам писать лучший код?

Всякий раз, когда в запущенном приложении происходит ошибка, есть три возможных подхода к её обработке:

Ignore! - ошибка попросту игнорируется, приложение продолжает свою работу как ни в чём не бывало

Fail Fast! - приложение завершается с ошибкой

Fail Safe! - приложение учитывает ошибку в своей работе и продолжает свою работу по наилучшему сценарию из возможных

Какой подход является лучшим? Какой из них следует применять в приложении?

Читать далее
Всего голосов 9: ↑8 и ↓1 +7
Комментарии 10

Про ООП через призму косвенности. И «Галя, отмена!»

Время на прочтение 5 мин
Количество просмотров 3.7K
Программирование *Objective C *ООП *
Из песочницы

Да, мы все знаем, что это такое из первых двух статей по запросу "Что такое ООП?" или из потоковых лекций первых семестров ВУЗа.

Казалось бы, ООП – Объектно ориентированное программирование. Там что-то про классы, что-то про объекты, если повезет, то, возможно, вспомним, что такое абстракция, инкапсуляция, наследование и полиморфизм. Что там еще надо знать?
И хорошо, если ты прочитал нормальную статью, и не будешь объяснять инкапсуляцию вот так: "ну это история про private, данные скрываются!".

Никогда не хотелось копнуть поглубже? Узнать почему у нас есть эти принципы?

Узнать про ООП побольше
Всего голосов 10: ↑7 и ↓3 +4
Комментарии 9

Эпистемология качества программного обеспечения

Время на прочтение 7 мин
Количество просмотров 2K
Блог компании МойОфис Читальный зал Софт IT-компании
Перевод

Допустим, вы приняли руководство новой командой. У вас есть картбланш на внедрение любой выбранной вами политики, чтобы сделать работу сотрудников более продуктивной, а код — менее «глючным». Что же вы предпримете?

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

Исследования показывают, что на качество нашей работы в наибольшей степени влияет человеческий фактор. Почему же мы делаем такую большую ставку на технические решения? Об этом в своей колонке рассуждает Гиллель Уэйн*, консультант по формальной верификации и автор книги Practical TLA+. Под катом — наш перевод авторского материала.

*Обращаем ваше внимание, что позиция автора может не всегда совпадать с мнением МойОфис.

Читать далее
Всего голосов 29: ↑27 и ↓2 +25
Комментарии 5