Рубрика «разработка программного обеспечения»

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

Почему чтобы переместить кнопку, нужно две недели - 1

Допустим, мы строим пирамиду из кирпичиков Lego размером 2x2 блока. Сколько потребуется времени на создание MVP (minimum viable product) пирамиды? Столько, сколько требуется для установки одного кирпичика! Допустим, это 1 секунда. То есть мы создали MVP пирамиды за 1 с. Сколько потребуется времени на реализацию v1? Нам нужно установить ещё три детали на уровне 0 и одну на уровне 1. Ещё 4 детали, то есть ещё 4 секунды. А для версии v2? Ещё пять деталей на уровне 0, три детали на уровне 1 и одна на уровне 2 — суммарно девять деталей и ещё девять секунд.
Читать полностью »

Делаем систему параллелизма надёжнее

Сегодня посмотрим как смоделировать программу с конкурентностью на FSP. Сначала давайте разберемся, зачем вообще нужна конкурентность. Вот что можно сделать с её помощью:

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

Строим надёжную конкурентность с FSP и моделированием процессов - 1


Сгенерированная инструментом LTSA диаграмма состояний
Читать полностью »

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

Лучше брать пример с Тэйлора Отвела, который создавал Laravel в свободное от основной работы время. В ноябре он опубликовал мини-серию подкастов, в которой поразмыслил над успехом своих программных продуктов — за последние 5 лет они принесли ему больше 10 млн долларов. В четырех выпусках подкаста Тейлор поделился советами, которые затрагивают ряд тем от поиска идеи и формирования лояльной аудитории до сохранения мотивации и преданности качеству.

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

Итак, поехали.

Читать полностью »

Тренер дает наставление перед игрой:
— Вот ты, Иванов, сколько забьешь бразильцам? Ты же старший ответственный нападающий, мне нужна точная цифра!

Верстаешь экран, и как-то лого не так в правом нижнем углу, начинаешь двигать его вправо-влево-вниз, фигак — уже на обед зовут, два часа улетели куда-то. Или вот сложный таск, разбил его на части: библиотечный и клиентский код; пилишь скромную библиотечку, прям хорошо! Тестами обложил, но в душе знаешь, что будут изменения под клиентский код (а там и тесты нужно будет править :(

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

И потом оправдываешься: но вы же знаете, есть три стадии написания кода: 1) сделай, чтоб работало; 2) сделай, чтоб работало правильно; 3) сделай, чтоб работало быстро. Ну ok, до третьей стадии редкий фронтэнд-разработчик допишет, но все же — код был переписан дважды. Или так подробно разъясняешь: любой html разработчик решает задачу: a) просто и неправильно; затем б) сложно и неправильно; затем в) сложно и правильно; затем г) просто и правильно. И это не так просто — многие начинают с пункта «б», да там и остаются.
Читать полностью »

В МойОфис появилось более 200 новых функций - 1

Хабр, привет, это МойОфис. 2019 год стал для нас знаковым. Нам доверяет всё большее число пользователей. Объемы проданных лицензий измеряются сотнями тысяч, более 1 млн бесплатных лицензий было передано в систему образования.

Стремительный рост числа клиентов не позволяет нам сидеть сложа руки. Мы постоянно улучшаем продукт, и в том числе работаем над уникальными функциями которых нет ни в одном другом редакторе, и хотим дать пользователям более приятную и комфортную среду для работы. В этом году наибольшее количество новых функций было реализовано в релизе 2019.03, который мы опубликовали за неделю до наступления Нового 2020 года. И нам не терпится подробно рассказать вам об этом.
Читать полностью »

Российская отрасль инженерного программного обеспечения насчитывает более 50 компаний-разработчиков. По меркам мирового рынка САПР это уже заметная величина. Но знаете ли вы, что российский след есть и в известных западных продуктах, например, в CATIA, BricsCAD, Altium Designer? Многие зарубежные САПР-вендоры открыли в России свои R&D центры или сотрудничают с местными аутсорсинговыми компаниями. Кто они – узнаем под катом.

image
Читать полностью »

Кажется, что сфера интернет-рекламы должна быть максимально технологичной и автоматизированной. Ещё бы, ведь там работают такие гиганты и эксперты в своём деле, как Яндекс, Mail.Ru, Google и Facebook. Но, как оказалось, нет предела совершенству и всегда есть что автоматизировать.

image
Источник

Коммуникационная группа Dentsu Aegis Network Russia — крупнейший игрок на рекламном digital рынке и активно инвестирует в технологии, пытаясь в оптимизировать и автоматизировать свои бизнес-процессы. Одной из нерешенных задач рынка интернет-рекламы стала задача сбора статистики по рекламным кампаниям с разных интернет-площадок. Решение этой задачи в итоге вылилось в создание продукта D1.Digital (читать как ДиВан), о разработке которого мы и хотим рассказать.
Читать полностью »

Перед вами перевод статьи из блога Better Programming на сайте Medium.com. Автор, Indrek Lasn, рассказывает об инструментах для отладки кода, которые предоставляет JavaScript.

Прокачиваем навыки отладки JavaScript с помощью консольных трюков - 1Читать полностью »

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

TDDx2, BDD, DDD, FDD, MDD и PDD, или все, что вы хотите узнать о Driven Development - 1

  • TDD — ну, это все знают, сначала пишем тесты, а потом остальной код.
  • BDD — что-то знакомое, вроде как, тоже тесты, но особенные.
  • TDD — снова? Так, стоп, тут речь уже не о тестах совсем. Но почему называется так же?
  • DDD — bound contexts, ubiquitous language, domain...
  • FDD — да сколько можно?
  • MDD — cерьезно, на основе диаграмм?
  • PDD — ...

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

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

Читать полностью »

Перед вами перевод статьи из блога Better Programming на сайте Medium. В ней программист Daan делится простыми правилами, следуя которым вы сможете давать хорошие имена функциям и переменным.

Как придумывать содержательные имена для вашего кода - 1

Будучи разработчиком, вы наверняка тратите много времени на создание переменных и придумывание их имен. Имена повсюду: они нужны для файлов, классов, методов и тех самых переменных.

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


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js