Обещал тред про js, делаю тред про js.

На чистом джаваскрипте нельзя делать большие проекты. Только по одной причине - динамическая типизация. Она не подходит для крупных проектов - совершенно не подходит. В этом треде объясню, почему
Если ты юзаешь js док, где описывешь типы, и IDE это подхватывает - это не динамическая типизация, и это окей. Правда не понятно, зачем это делать, если есть тайпскрипт, но бог с ним.

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

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

Даже со всеми этими вещами мы постоянно ошибаемся
Но с ними - на порядок меньше, чем без них. Особенно, если умеешь ими пользоваться.
Кроме предостережения от ошибок, типы помогают другим программистам работать с кодом, который ты написал. IDE умеют показывать по наведению, что вернет функция. При этом типы, в отличие от коментов в коде, проверяются компилятором, а потому сохраняют актуальность
Я, будучи новичком, почти не лез в доку родных библиотек в дотнете - большая часть ответов на мои вопросы, как работает тот или иной класс, содержалась в типах, с которыми он работал.
Один раз нас, целую команду разрабов, бросили на проект, где фронт был на чистом жс и без документации. Первый пуллреквест я отправил через три месяца. Коллеги - ещё позже. Проект был гигантский. Со временем мы перевели большую часть на тайпскрипт
Когда на наше место пришла новая команда, их первый пуллреквест был сделан через неделю. Потому что типы кратно повышают понятность кода.
Причем прикол в том, что если пишешь на чистом джс, типы у тебя тоже есть. В рантайме. А при разработке ты закрываешь глазки, и делаешь вид что их на самом деле нет. А они ведь есть, ты же понимаешь, да? Будут баги. Будет нереально поддерживать.
Кроме читаемости, типы ещё помогают мыслить при проектировании. Когда пишешь код на жс, ты ведь все равно используешь типы, у себя в голове. Потому что описываешь процессы реального мира, где наше сознание тоже выделяет у всего типы.
Но при проектировании на TS ты гораздо четче понимаешь, что ты работаешь в первую очередь с типами. Что типами ты описываешь процессы, типы составляют твою архитектуру, от типов ты пляшешь
Это конечно спорный тейк, но у меня работает именно так.

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

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with jsunderhood

jsunderhood Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @jsunderhood

14 Apr
Есть одна тема, на которую мне никогда не надоест говорить. Лайвкодинг на собеседовании.

Это злое зло, которое не должно существовать в принципе - вот моя железобетонная и непоколебимая позиция.

Это достаточно очевидно, но видимо, только мне

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

Писать код быстро и под стрессом - это тоже навык. Но с нашей работой он не связан
Задачки, которые дают на таких собесах - синтетические. По сути, решить их правильно - значит задать сто тысяч уточняющих вопросов - а это тебе сделать никто не даст. При этом, если ты вдруг поймешь неправильно - будет тебе минус.
Read 10 tweets
13 Apr
У меня всегда было много забот. Две дочери, куча работы, ремонт. Душащие амбиции и всё такое.

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

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

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

Но многие - нет. Сами страдают, других тоже учат страдать. А кто не слушается - того стравливают, высмеивают и унижают.

Типа, вот мы выжигаем свою жиззнь ради разработки, а ты кайфуешь - ублюдок
Read 11 tweets
13 Apr
Сегодня хочу поговорить про удаленку. Я на удаленке уже лет пять, и представить себе не могу, чтобы это изменилось

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

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

А потом все стали работать из дома, и никто не умер, ничего не просело
И какие у них остались аргументы? Тут очевидный конфликт интересов. Разработчикам лучше всего, когда офис есть, но визиты туда - опциональные.

А менеджмент, патологически стремящийся к контролю, хочет видеть своих рабов как на ладони
Read 9 tweets
12 Apr
Для начала хочу поговорить про зарплаты в IT. Российские компании очень часто не хотят платить рыночную цену.

Когда нанимаешь нового человека, у тебя нет выбора, недоплатишь - и он выберет других

Но когда твой сотрудник вырос, и просит больше денег, начинается пидорство

тред
Много лет назад мы с моимм братаном пришли работать в одну галеру за 30к рублей в месяц. С тех пор я поменял десять работ, и вырос по деньгам так, что мне уже просто наплевать, какая у меня будет зп. С тем моим братаном на днях встретились в кофейне. Он всё ещё там. У него зп 70к
Почему так? Всё очень просто. У них, если ты хочешь получить больше денег - тебе нужно сдать внутренние экзамены другим разработчикам. Которые являются акционерами этого бодишопа. Это значит, что их заработок, это то, что было сэкономлено на твоей зарплате
Read 15 tweets
12 Apr
Для начала коротко расскажу о себе, и как я отнушусь к js.

Если коротко - хуёво отношусь.
Если чуть чуть по длиннее: я сам не фронтендер, но писать фронтенд приходилось. Сейчас у меня в одчинении три фронтендера, и я, кажется, справляюсь

Мой основной стек - .net/C#/F#, и когда я первый раз столкнулся с джаваскриптом, сказать что я охуел - ничего не сказать
Это было ещё в то время, когда вся индустрия не успела привыкнуть к тому, что у нас на передний план вышла технология, качество которой серьезно оспаривается
Read 9 tweets
11 Apr
На этом прощаюсь, для меня это был интересный опыт, надеюсь не в последний раз 👍
Подписывайтесь на мой личный акк @denisx ⭐🎃
Смотрите котанов на @catunderhood 😺
Read 6 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal Become our Patreon

Thank you for your support!

Follow Us on Twitter!