Size: a a a

Заметки техдирские

2018 September 20
Заметки техдирские
У какой CRM кунг-фу круче?
public poll

Microsoft Excel – 13
👍👍👍👍👍👍👍 54%
@lexasoft123, @vladon, @zhmaevnn, @AlexGx_test, @dmitriy_grechukha, @treyr, @igormyzgin, @che_bunin, @pelixm, Igor, @anomi1202, @systemnik, Владимр

Bitrix 24 – 4
👍👍 17%
@lecho, @kiltum, @ahiddenseeker, @Roofcat

AMO CRM – 3
👍👍 13%
Anton, @kozabrodin, @kolesa_corp

Microsoft CRM – 3
👍👍 13%
@janitorrb, @d_kovalenko, @VeryBlackBox

SAP – 1
👍 4%
@antonbezkrovnyy

👥 24 people voted so far.
источник
2018 September 21
Заметки техдирские
источник
2018 September 22
Заметки техдирские
[Переслано от @AlexCAD]
xxx: чувак, это эпик!
yyy: опять унылые истории из старого офиса?
xxx: они самые! Сегодня завхоз нанимала сантехника на постоянную работу, показывала где трубы перекрывать, котлы и т.д.
xxx: в общем, этот кадр пока ходил по коридорам мельком услышал про какую-то проблему с нашими серверами, посоветовал решение и... оно сработало, потом разговорился с одним из коллег и теперь работает у нас админом.
xxx: завхоз недовольна - это уже второй сотрудник, которого так увели - первого забрали в отдел продаж...
yyy: ты это... скажи когда в следующий раз кто-то на сантехника придет, нам тут почтовый сервак, сервер доменов и фтп держать некому
источник
2018 September 26
Заметки техдирские
Кто из dns-ов гибче и быстрее?
anonymous poll

bind – 13
👍👍👍👍👍👍👍 76%

powerdns – 3
👍👍 18%

dnsmasq – 1
👍 6%

👥 17 people voted so far.
источник
Заметки техдирские
Про форматы ошибок микросервисов при общении между собой:

Я спросил у ясеня, где моя любимая? Ясень мне ответил, качая головой:

Я ЕСТЬ ГРУТ!
источник
Заметки техдирские
Знакомый ходил в Яндекс собеседоваться на питониста

Собеседований было 4 штуки.

Первое (вводное + кодирование):
* общие вопросы
* одна простая задача по получению размера папки сколько она весит с вводной, что команда "du" не работает. Кратко про моё решение: нужно получение папок и файлов в текущей папке, определение это файл или папка, проверить что не сим линк и проверить, что не ссылается на уже пройденную inode.
* задача на коде ревью, в целом почти все ошибки нашёл

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

Алгоритм решения следующий:
* итерируемся по баннерам
* на каждой итерации рассчитываем ранд интервал от 0 до длины массива, сохраняем в результирующий массив баннер с ключам от текущего ранд и ещё если ключ указывает на последний символ, то удаляем из массива, если меньше, то в этот момент тот массив с ключом ранд вставляем последний элемент массива.
* в коде с первого раза была ошибка, со второго раза все норм

Третье (кодирование + процессы):
* фронт базовые вещи
* задачка sql совсем простая.
* обсуждение рабочих процессов: как давать задачу, как её оценить, действия при срыве сроков и тд

Четвёртое (алгоритмическое):
* Задача: первая задача была такая даётся строка ctr и текст catrow функция должна вывести true а если бы строка была cartow то false.
* Решение: есть счётчик он указывает на индекс в паттерн и итерируемся по тексту, если символ совпадает с  элементом паттерн где индекс наш счётчик то увеличиваем индекс, в конце проверяем если счётчик меньше чем длина массива то возвращаем false иначе true. Реализовал код и он был правильным с первого раза

* Задача: даётся массив с парами координат x y. Нужно написать функцию которая возвращает True если через это облако точек можно провести асимптоту и если все эти точки симметричный относительно этой асимптоты.
* Решение: перегоняем массив в 2-уровневый словарь, первый уровень X, следующий уровень Y а значение y это счётчик, так как точки могут накаладываться друг на друга.

В этой перегоне попутно вычисляем максимальный и минимальный x. Находим среднее между ними и это есть координала x по которой можно провести асимптоту.

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

Далее итерируемся по словарю сначала по x внутри потом по y далее если x левее асимптотуы то пытаемся найти есть ли точка с правой стороны если есть, то уменьшаем счётчик у двоих точек.

Если счётчик равно 0, то удаляем элементы и в итоге если словарь пуст, то возвращаем true так как все точки симметричны

Важно чтобы задача решалась самым быстрым способом. Я же в начале проговаривал первое решение, которое приходило в голову. Говорил, какая сложность решения типа О(n*n), а они типо неа, нужно O(n*log(n)) и тут же пытался найти где я просаживаюсь. Например на удалении элемента их массива. Окей не удаляю, делаю вместо этого счётчик или делаю очередь или хеш таблицу и тд

* * *

В целом кто собеседовал они не валили, подсказывали и направляли в нужное русло. После сессии все листочки мои забирались, даже черновики, а если решение на доске, то фоткали.
источник
Заметки техдирские
Вопрос из зала к Дмитрию Симонову: когда Яндекс забирает черновик с кодом, коллеги видимо преследуют цель, чтобы тестовые задания не расходилось по интернету? А как же права на код?

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

Что касается прав на код и расходимости тестовых заданий по интернету, - если есть главный принцип в голове, ни кто не мешает придумать новые задачи. Тут важны не столько результаты, сколько процесс решения кандидатом.
источник
2018 September 27
Заметки техдирские
О людях и скромных замкнутых айтишниках

- Знакомые рассказали про техдира-гопника, которому только кепки не хватает, семак и жигулёвского

- Насмешил))) И что, хороший у него опыт, как у эксперта? Всегда думала, что айтишники  это чистые ботаники. Гопников ещё не видела)

- Бгг ))) Ну тут же как, - всегда надо различать профессию человека и самого человека. Вот гопник - это человек ))) А техдир - профессия. И то и другое может быть совершенно разным и очень слабо зависеть друг от друга.

- Но общее то есть, айтишники чаще в его замкнутые, стеснительные, разве нет?

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

https://t.me/ctorecordschat/17921
источник
Заметки техдирские
"Обсуждения техдирские" обогнали "Заметки техдирские" со счётом 447:435
источник
Заметки техдирские
Понтовый сертификат SSL для интернет-сервиса must have?
public poll

Можно и бесплатный поставить – 50
👍👍👍👍👍👍👍 89%

Нужен для галочки – 5
👍 9%

Не нужен – 1
▫️ 2%

👥 56 people voted so far.
источник
2018 September 29
Заметки техдирские
Ульяновская команда аутсорсной разработки продала Evgeniya Konovalova за 2 млн руб и 3 месяца разработки страницу логина: http://dev.ilovehack.ru

ЧАСТЬ 1.

Сегодня я подала иск в арбитражный суд, после того как проиграла в местном Ульяновском.
История длится уже почти год и я только сейчас решила ее рассказать, благодаря смелой Darya Vaulina, которая после своего столкновения с "Кнопкой" теперь чувствует поддержку комьюнити.

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

✔️КАК БЫЛО

Год назад я решила написать софт для всех ребят, которые проходят через мои хакатоны. У нас уже очень большое комьюнити, мы выросли до приблизительно 6000 человек, которые получают еженедельные рассылки, читают наши посты в соцсетях, приходят на наши мероприятия, участвуют в хакатонах.
Я сменила несколько команд, разработчиков софта, к которым не могла найти подход в силу того, что у меня не было опыта разработки программного обеспечения, я не знала, как строятся бизнес процессы, как ставить задачу и проверять работу.

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

Я заключила договор с командой разработчиков, условия были time to material, и тогда я не знала, что так лучше не делать, но меня убедили, что все хорошо, команда проверенная, надежная. Проект оценили в 1,8 миллиона, пообещали скидки. Деньги у меня на счету, готова вкладывать, команда в сборе, жизнь прекрасна.
Мы прописали роадмэп, в котором было установлено что именно хотим сделать и сроки. И начали работать.
Сейчас в меня полетит куча камней, но ТЗ мы тоже не делали, т к очень спешили- срок на разработку был 3 месяца, мы готовили прототип, который потом хотели доделать.
Дальше внешне для меня все было идеально- ежедневные летучки, на которых я не понимала термины, но очевидно, понимал СТО, завели таск-менеджер, деньги с карточки списывались за сервер.
В январе все было хорошо, слажено, четко, я ждала первые результаты. Когда мне показывают код и спрашивают: «Ну все круто же, да?», - я говорю: «Ну да!», и подписываю акт. В феврале уволился СТО со словами, что мы ничего не успеваем.
В начале марта команда разработчиков сказала мне, что они ничего не успевают, и за дополнительные несколько месяцев они тоже не успевают, и даже если сократить версию до прототипа-прототипа, то тоже не успевают.
На мой вопрос- а что нужно чтобы все-таки доделать все как есть?
Ответ меня поразил: еще 2 000 000 рублей и минимум 4 месяца...
Сказать что я чувствовала?
Что меня конкретно кинули. Все.
Мои мечты про классную, удобную для моего комьюнити платформу, отъехали в сторону на неопределенный срок. Дебиторка для ряда компаний разъедала изнутри, а ведь платформа должна была уже зарабатывать! Я чувствовала разочарование в людях, злость на себя, обиду, что мир такой несправедливый, непонимание, где я поступила неправильно. Я очень люблю себя закапывать и жечь огнем за самые маленькие ошибки. Я была очень близка к депрессии, что сказывалось на всем. Бесконечный хаос и стресс.
Что помогло мне не сойти с ума в этот момент- разговор с другом, который в сложной ситуации, когда он мог потерять все- нашел в себе мужество трезво оценить ситуацию и поделиться своими проблемами с людьми, которые его окружали.
Самое важное оказалось- не замыкаться в себе. Миллион людей имеют похожие проблемы и опыт, который они прожили.
источник
Заметки техдирские
Ульяновская команда аутсорсной разработки продала Evgeniya Konovalova за 2 млн руб и 3 месяца разработки страницу логина: http://dev.ilovehack.ru

ЧАСТЬ 2.  ЧТО Я УЖЕ ПОНЯЛА И ПРЕДПРИНЯЛА.

Я многое изменила:
▪️У меня появился партнер по бизнесу, с которым я делю ответственность в своих решениях.
▪️Я читаю договоры сама и задалбываю правками до тех пор, пока мне не становится спокойно, потому что в этой стране я очень слабо защищена как предприниматель и еще более слабо как работодатель.
▪️Я не спешу.
▪️У меня есть HR, который нанимает хороших сотрудников.
▪️К сожалению, я стала циничнее и отказываюсь от многих своих идей, которые меня драйвят, и вижу, как их реализуют другие.
▪️Но теперь мой бизнес больше похож на бизнес, а не на хобби, как раньше, в нем появилось больше структуры и появился баланс между кайфом и реальностью, которого раньше не было.

Если бы я вернулась назад, я точно сделала бы как минимум три вещи:
🔻 список бэк-лог и роадмэп нужно было сделать в виде приложения к договору, зафиксировать юридически
🔻 нужно было найти команду, которая согласится на оплату по факту сделанной работы, особенно когда продукт понятен
🔻 свой vision продукта я передала CТО устно и в виде текстового документа, а нужно было прописать бизнес-требования письменно и закрепить это юридически, возможно совместить это в договоре с командой, которая была им найдена.

▪️Сейчас я начала новый проект, я закрываю старые долги, я мечтаю о новых горизонтах и масштабах, у меня собирается новая крутая команда, я умнее и осторожнее.
И я благодарю комьюнити за помощь во всем, чего бы это не касалось.
источник
Заметки техдирские
Ульяновская команда аутсорсной разработки продала Evgeniya Konovalova за 2 млн руб и 3 месяца разработки страницу логина: http://dev.ilovehack.ru

ЧАСТЬ 3. РЯД ВОПРОСОВ

Есть вещи, которые мне до сих пор не ясны. Я буду благодарна всем, кто поделится своим опытом и знаниями касающимися оформления отношений с командами разработки, а также деталями судебных процессов, т к я проиграла битву, но хочу выиграть войну.
Мне важно знать, права ли я, можно ли дальше судиться?
Есть ли в комьюнити кто-то, кто в таких делах разбирается.
Я не подписала акт о выполненных работах за последний месяц и хотела бы вернуть хотя бы это.

С моим защитником в суде мы решили выбрать стратегию о том, что ребята просто ничего не делали. А так и было- за 2 миллиона рублей, я получила "недотаймпед", (результат работы этой команды за 3 месяца: http://dev.ilovehack.ru) вместо целой экосистемы с личными кабинетами, чатиками, видеостримом и прочими прикольными штуками. Мы были уверены, что выиграем, у нас были заверенные у нотариуса роадмэп, все переписки из почты и куча других документов, подтверждающих, что с нашей стороны договоренности не были нарушены, а со стороны компании разработчиков- провал. Так как платформа все равно разрабатывается силами комьюнити и мы уже делали закрытое тестирование на 3 хакатонах, мы решили моральный и материальный ущерб и упущенную выгоду возместить на следующем шаге, после успешного первого суда. Местный Ульяновский суд вынес решение, что я должна заплатить команде, не важно что бы они там не кодили. Стратегия защиты разработчиков в суде была примерно следующая: "Вот я Вася и я кодил, вот я Петя и я тоже кодил, и я вот Коля, я тоже кодил!"

Я не буду разглашать название компании, т к надеюсь, что мы еще договоримся.
Но если я не выиграю, то как же имидж и доброе имя команды, которая за обещанное время и прототип не смогла сделать?
источник
2018 September 30
Заметки техдирские
Использование куклы вуду для снятия стресса на работе

Требования к нетоксичности, неиспользованию мата, лояльному отношению к слоупокам и начальству и вот это вот все. Знакомо?

Есть простенький рецепт: со всей дури вонзаем в апельсин зубочистку! И вторую! По самые помидоры! И третью! И далее до достижения эффекта.

В чем суть? Суть в запахе апельсина, являющегося природным антидепрессантом. А зубочистки - это способ извлечь запах из одного и того же апельсина много раз.
источник
2018 October 01
Заметки техдирские
@olegkovalov записал свои идеи про работу техдира

Часть 1. Git
* 1 commit per change, do squash: you can easily work with changes
* there might be few (alredy squashed) commits in a pull request: don't make huge changes they will bury truth
* touch few things at once: it's kinda obvious
* rebase instead of merge: no merge commits, cleaner git history
* pull request must have at least 1-2 approvals: changes must be visible to the team members
* master is read-only: it's a rule. Always. No exceptions.
* delete branches after a merge: better navigation and git performance
* use SemVer as a standard for versioning: do not reinvent wheel
* release tags: tracking releases/deployments are simpler
* omit release branches for patches (aka 0.1.x): use release tags for that
* no global history changes: prevents git history misuse
* commit message format: clear, well explanatory, structured
* no big binary files inside a repo: slowdowns without a reason

Часть 2. CI
* auto-revert on failure: roll back changes, no broken code in the master
* run at any commit: the obvious ability for CI
* CI plan in git: know all plan changes and have consistency
* warn about formatting verification: no developer disruption in the future
* warn about coverage illness: coverage is quite important thing
* track test failures and flakiness: statistics, hints, conclusions
* store build logs for 3+ months: having analytics and working links to them
* do not remove builds/PR/issues: unexpected 404 will help no one, will not save disk space also
* docs are generated from the code: end-user changes must be explicit
* locally reproducible builds: re-run part of a job on my local machine
* use Makefile, Bash: simple, easy, well known
 
Часть 3. Deploy
* configuration files must be validated before start: unless difficult debug is your goal

Полная версия тут:
https://github.com/cristaloleg/awesome-manifesto
источник
Заметки техдирские
@olegkovalov записал свои идеи про работу техдира

Часть 4. Code health
* document your code: giving a small context for API will save a lot of time
* use linters and code analysis all the time: the best handling for the best code
* touch legacy, often: it becomes non-legacy faster
* remove deprecated stuff: having a bloated dead code is a mistake
* also remove old code: it adds even less reasons to the new code
* use TODO, BUG, XXX in code: jumping to the issue tracker can be minimised
* no experiments in the master: use your 20% time as a playground, please
* allow to change log-level on the fly: this will simplify production's debug routine
* limit your log file, 'cause it might grow unlimited: this might cause troubles to your app, be careful
* store your config in /etc/myapp and logs in /var/log/myapp: this will make everything more structured and well defined
* all modules must have the same structure: similar environment everywhere is a good idea
* if you can’t show a bottleneck, don’t start to optimise it: it might be interesting and challenging, but useless

Часть 5. Database
* think about your data: don't use SQL/NoSQL without a reason
* keep models normalized: less storage, better performance
* but don't normalized without a reason: everything is a trade off
* use timestamp to store a date/time: this will save you from formatting hell
* log slow queries: see what is happening in database and who is too greedy
* don't put business logic into db or at least make it loosely coupled: this will give you an easy migration to another db

Часть 6. Dependencies
* bump libs on a permanent basis: the new version is expected to be better
* have a local cache-server with deps: adds stability to the infrastructure
* pin your dependencies to a specific version: accidental commit to dependency's master will break nothing
* prefer mature technology, rather then hyped one: mature will die slower, then hyped
* fork instead of hack: it might be better to fix a lib instead of wrapping for desired behaviour

Часть 7. Tests
* use one test framework: a similar environment is better
* show results, not just stack traces: some failures are obvious with visible result
* isolated tests: use beforeTest and afterTest aggressively
* TDD: it really works
* measure a code coverage: quick and easy way to eliminate bugs  
* test your backups: they might be broken
* do not hard code ports in tests: unless you're interested in random flaky tests

Полная версия тут:
https://github.com/cristaloleg/awesome-manifesto
источник
Заметки техдирские
@olegkovalov записал свои идеи про работу техдира

Часть 8. Team
* pairing, 50% and more: you're doing better, you're not bored
* high-level stand-ups, time bounded: less info about irrelevant stuff
* 2-3 week sprints: have an achievable sprint goal: UPD: deppends on team/project, might be unuseful
* per sprint roles: it's quite comfortable time bounds
* only urgent topics are face-to-face: fewer distractions for unimportant things
* friendly atmosphere: no insulting environment, respectful trolling
* 'coding rockstar': it is a demotivation, not an inspiration
* if you're on the vacations - specify date range: it'll be easier to find someone else or postpone the question
* FAQ for newcomers: 30-day plan with all stuff that they should accomplish
* all features must be protected by feature flag: in case of accident it will(might) be enough to turn it off

Часть 9. Meetings
* I can skip if I'm out of scope: do not waste team and own time
* if you're organising a meeting - prepare an agenda: to have a way how to drive a meeting
* action points after the meeting: who does what and when
* avoid bus factor as much as possible: moving/cancelling unimportant meeting because of 1 person is a bad sign

Часть 10. Communications
* use the best apps: fast, flexible, pleasurable
* outcomes of important discussions should be on a wiki: better visibility for outcomes
* only important notifications: @all should be rare for irrelevant updates
* easy access to any team room: that's obvious, hey
* do not delete personal chats with inactive users: some chats contains interesting ideas
* closed ticket must contain a link to the changes: every change must be easy accessible and visible for others


Полная версия тут:
https://github.com/cristaloleg/awesome-manifesto
источник
Заметки техдирские
@olegkovalov записал свои идеи про работу техдира

Часть 11. Permissions
* Git, CI, SSH read-access to everything: reading server logs cannot cause troubles
* SSO to anything: better organisation of credentials
* each office should have global admin: different timezones are a bottleneck
* ability to start/stop a job on CI: waiting for an approval to make this action is a horrible bottleneck

Часть 12. Space
* engineers apart from non-engineers: fire & ice
* quiet open-space: someone might be sensitive to a noise...
* quiet zones: ...really sensitive
* the kitchen isn't for chill-out: the play room is a thing
* nothing smelly near working area: even coffee/cinnamon/mowed grass might irritate

Часть 13. Network
* VPN access from home: work from home is a cool thing
* Wifi must work all the time: obvious
* LAN must be even more stable: uber-obvious

Часть 14. Life
* how often should my salary be reviewed?: worth asking
* work from home is a must have: family, health, even weather might be a reason
* educational budget to anything related to dev stuff: I would like to learn new technologies, why not?
* allow committing to the open-source: company_karma++
* skipping team events must be acceptable: well...obvious
* 20% time is a vacation like time: creating anything that might help someone is awesome
* brown bags sessions must be rewarded: sharing knowledge is the best way to inspire
* monthly geek swag <3: t-shirts, hoodies and all other stuff
* health food in the kitchen: candies are cool, but I would like to live longer


Полная версия тут:
https://github.com/cristaloleg/awesome-manifesto
источник
Заметки техдирские
Config management
anonymous poll

Ansible – 16
👍👍👍👍👍👍👍 84%

Puppet – 2
👍 11%

Vault – 1
▫️ 5%

👥 19 people voted so far.
источник
2018 October 02
Заметки техдирские
Как централизовано следить за неснижаемым остатком на предоплаченных сервисах? Домены, сертификаты и вот это вот всё.
anonymous poll

Настроить точечный мониторинг. – 23
👍👍👍👍👍👍👍 74%

Назначить ответственного человека – 6
👍👍 19%

Заложить в календарь ежедневную проверку – 2
👍 6%

Другое... Напишу текстом в чатике.
▫️ 0%

👥 31 people voted so far.
источник