Dec. 15th, 2016

love5an: (R)
Давно ничего не писал. Набросаю тут важные вещи, которые за долгие годы работы в этом вашем айти, четко сформировались в голове. Чтобы самому не забыть, в том числе.

Итак, "сегодня мы многое поняли":

1. Никогда не доверяйте хайпам, они приходят и уходят, а разброд и шатание после них чинить вам же.

2. Если у вас действительно важный проект и/или ограниченный бюджет, никогда не нанимайте дешевых разработчиков и/или т.н. джуниоров и мидлов уровня среднестатистического аутсорса. Это будет провал проекта, или же большие убытки. Опытные разработчики с большим стажем, хорошей эрудицией и солидным послужным списком - всегда дешевле, несмотря на необходимость платить высокую заработную плату.

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

4. При любой возможности, уточняйте любую мелочь, неточность и неясность в техзадании. Любую.

5. Не прикасайтесь к проектам без техзадания и четкого видения проекта. Никогда. Сами же окажетесь виноваты в провале.

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

7. Скрам не работает. Как и вообще, весь этот Agile. Не стоит тратить время на все эти митинги и прочий бред, если вы, конечно, не скрам-евангелист, и не зарабатываете этим бабки(позор на весь ваш род, в таком случае).

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

9. За каждую задачу и группу задач, должен быть кто-то ответственнен. Сделайте так чтобы, каждый разработчик был за что-то ответственнен. Нет личной ответственности - провал проекта гарантирован.

10. Все сроки проваливаются. Умножайте оценки не в 2 раза, а в 5-10.

11. По часам оценивать задачи смысла нет. Только по дням, а иногда, по неделям.

12. Программист не может продуктивно работать больше 4-5 часов в день. В принципе.

13. У NoSQL очень ограниченная область применения. Применим он только там, где данные можно потерять.

14. Микросервисы не работают. Просто не работают. "Не пытайтесь повторить это дома". Зато, отлично работает грамотная модульность в сервисах. Грамотно продуманные интерфейсы и DI, если у вас ООП.

15. Под REST все понимают не то, что нужно. Впрочем, это не так плохо, потому как "настоящий" REST мало где применим.

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

17. Никогда не допускайте веб-разработчиков до работы с СУБД. В принципе, никогда не допускайте до СУБД разработчиков на следующих платформах и языках: Ruby, Python, ASP.NET, PHP, Node.js, и подобных им. Никогда. Пусть используют ваше API.

18. Всегда делайте stateless API. Да, с вебсокетами и прочим дуплексом, это тоже возможно, правда.

19. Всегда заранее планируйте возможность горизонтального масштабирования серверной части. Заранее выберите Message Broker, например RabbitMq. Заранее подумайте об общем хранилище сессий веб-приложений, например о Redis, и так далее. Вообще, всегда планируйте это, если пишете не лендинг.

20. Одна из главных проблем разработки программного обеспечения - инвалидация кеша. Не кешируйте там, где огромная польза кеширования не очевидна, потом пожалеете. Лучше воткните под СУБД коробку побольше.

21. Не держите систему на собственных серверах, особенно в РФ. Используйте облачные сервисы, в частности, AWS. Не жалейте на них денег.

22. В конечном счете, проблемы с производительностью всегда идут от I/O и СУБД.

23. UI это всегда боль. Терпите, или уходите в Backend.

24. Отдельный DBA, с возможностью давать линейкой по рукам, в том числе и вам самим - это очень хорошо.

25. Отдельный DevOps - тоже.

26. Не так страшна винда, как её малюют. Во многих отношениях - очень даже хороша.

27. Мало кто знает, как правильно использовать индексы РСУБД. Но еще меньше кто знает, насколько сложно их использовать правильно, и часто ли имеет смысл это делать.

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

29. Генераторы и конструкторы UI - отличная вещь. Если вам наплевать на внешний вид.

30. Пишите документацию по ходу разработки. Будет полезна в том числе вам самим. Комменты в коде не пишите, их никто не читает.

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

32. Наличие большого коммьюнити и большого количества opensource библиотек у платформы/языка сильно переоценено. Не касаясь качества, как коммьюнити, так и библиотек, возможности кастомизации и прикручивания библиотек под свою задачу, а это всегда проблемные вопросы, скажу что большую часть кода вам все-равно придется писать самому, на выбранной платформе и языке программирования, а здесь - возможности и выразительность этой платформы и языка - играют огромную роль. Если касаться вопросов поиска сотрудников, то поверьте, любого грамотного человека можно обучить любой платформе, хоть тому же Лиспу или Хаскелю. А с неграмотными работать просто не стоит, как я выше сказал. И, да, я по-прежнему считаю, что Лисп это круто.

33. Вообще, фундаментальные принципы и идеи - знать и понимать гораздо важнее, чем какие-то мелочи и конкретику. Выучите лисп, в конце-концов!

34. Знать английский язык очень важно. Постоянно совершенствуйте уровень владения английским, как устным, так и письменным. Смотрите обучающие ролики на ютубе, и кино на английском, в конце концов. Американский английский - важнее, чем другие разновидности. По возможности старайтесь избавиться от акцента.

35. Не мучайте соискателей на собеседовании. Лучшие два вопроса это "работать будешь?" и "сколько хочешь денег?". Впрочем, всегда интересуйтесь их бэкграундом и взглядами на жизнь и IT.

36. Нет, математика, за исключением арифметики, вам в IT не пригодится. Алгоритмику и прочий CS я за математику не считаю, но впрочем, и оно вам мало где пригодится.

37. Пить вредно.

-- Ваш Капитан Очевидность.

Profile

love5an: (Default)
Dmitry Ignatiev

December 2016

S M T W T F S
    123
45678910
11121314 151617
18192021222324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 23rd, 2017 03:50 am
Powered by Dreamwidth Studios