Компания «Дядя Милтон» с 1956 года продавала муравьиные фирмы детям. Пару лет назад я вспомнил, как я с другом вскрывал одну из них. В коробке не было самих муравьев. Вместо них в ней была карточка, в которую нужно было вписать свой адрес, а фирма бы отправила вам немного муравьем. Мой друг удивился тому, что можно получить муравьев в посылке.
Я ответил: «Что тут действительно интересно, так то, что эти люди отправят трубку с муравьями любому, кто их об этом попросит.»
Чтобы узнать, посолен ли борщ, достаточно опустить в него два электрода, а затем пустить по ним ток. Если появится запах хлора — значит, борщ уже посолен :)
В физике есть такое понятие как «эффект наблюдателя»: если над системой ведется наблюдение, то оно вносит изменение в ее поведение. Очень интересно этот эффект проявляется в организации работы команд разработчиков (да и в любых производственных процессах). Как только мы начинаем считать любые метрики, мы вносим изменения в поведения команды и отдельных ее членов.
По долгу службы нам часто приходится общаться с фрилансерами. Это общение часто выходит за рабочие рамки, становясь приятельско-дружеским. В приватных беседах о тяготах фрилансерской жизни часто приходилось слышать об одинаковых проблемах, возникающих у них при общении с непосредственным клиентом. Давайте рассмотрим три совета, которые приходилось давать чаще всего:
Не ограничивайте общение перепиской
Объясняйте клиенту рабочий процесс
Главный вопрос на все случаи жизни: «Какова цель?»
Стояла задача: найти или создать загрузчик файлов на сервер, использующий возможности HTML5 для мультизагрузки. Загрузчик должен:
отправлять методом POST любые параметры вместе с файлом;
отправлять куки;
предоставлять возможность выбора сразу нескольких файлов (или нескольких тысяч – тут как пользователь захочет);
отправлять файлы группами;
файлы собираются в группы до определенного количества мегабайт, или до определенного количества файлов в группе; (это связано с тем, что на сервере есть ограничение на размер POST запроса и на количество файлов в одном пакете)
Именно по причине отсутствия опыта работы с флешем, для создания загрузчика был выбран только JavaScript.
У каждой компании есть свой стандарт оформления кода и важно придерживаться его. Встроенные в IDE форматеры кода решают это задачу частично, так как они в основном позволяют лишь добиться простого выравнивая кода. Помимо этого хочется еще и порядка в последовательности объявления как полей, методов, так и вложенных классов. Причин, по которым код-стандарт не соблюдается масса: программист перед отправкой кода в репозиторий может не заметить отклонение от стандарта; новый разработчик недостаточно внимательно прочитал документ; в погоне за хот фиксом о формате забыли; либо из-за банальной усталости или лени программиста; автоматического рефакторинга и так далее. Регулярный код-ревью не решает суть проблемы, так как занимает слишком много времени и тормозит разработку — нужна автоматизация проверки соответствия кода в момент его написания!
Частые проблемы:
конструктор неожиданно появляется в середине класса;
внутренний класс объявлен где-то в середине внешнего класса;
абстрактный метод объявлен где-то в середине большого абстрактного класса;
@Autowired метод тоже расположен где угодно но только не на самом видном месте;
статические билдер методы разбросаны по коду класса;
поле класса затерялось где-то между внутренним классом и методами.