Кот сам себя не напишет
Это нужно знать каждому программисту (или ядреный кликбейт про программерский сленг)
YAGNI, KISS, DRY, WET, SLAP, ASAP, YOLO — что все это вообще значит?
Аве, Кодер!
Если ты когда-нибудь читал англоязычную литературу по программированию, проходил курсы на английском языке, работал с англоязычными коллегами-кодерами или просто даже переписывался с ними, ты наверняка встречал эти аббревиатуры и, когда один бородатый кодер говорил другому KISS — гарантирую, что твоя бровь хотя бы немного приподнималась.
В этой статье мы разберем, что означают эти популярные в среде англоязычных IT-шников словечки, а точнее аббревиатурки.
Визуалам сюда: youtu.be/ub0YtnSwqRA
KISS («Keep it simple, stupid» )
Это не паттерн, не анти-паттерн и даже не рок группа из семидесятых, в данном случае, это один из самых популярных принципов или подходов к программированию чего-либо.
По сути, этот принцип требует, чтобы твой код был как можно проще, ведь нагромождение ненужных функций, дублирующих друг друга, и привычка чесать левое ухо правой рукой — не являются признаком профессионализма программиста.
Чем проще код, тем легче его понять, соответственно тем меньше шанс сжечь стул под человеком, который будет после тебя этот код разгребать.
Стив Макконел как-то сказал: «Пишите код так, как будто поддерживать его будет склонный к насилию психопат, который знает, где вы живете».
Поэтому лучше и вправду не усложнять вещи, которые этого не требуют.
DRY («Don’t repeat yourself»)
Принцип «Не повторяй себя» по своей природе очень похож на KISS. Это довольно просто и в то же время имеет широкое значение. Это довольно просто и в то же время имеет широкое значение — поняли шутку?
Копирование-вставка и дублирование фрагментов собственного кода как сколиоз или ухудшение зрения — со временем этим страдают все программисты. В этом нет ничего плохого. Каждому иногда нужно быстро что-то проверить (ожидаемое поведение или что-то еще), чтобы потом определить, стоит ли писать это правильно. Но, безусловно, недопустимо отправлять такой код в производство.
DRY напоминает нам, что каждое повторяющееся поведение в коде может и должно быть извлечено (например, внутри функции) для последующего повторного использования. Наличие двух фрагментов одного и того же кода в вашей кодовой базе — не очень хорошо. Это часто может привести к десинхронизации и другим ошибкам в вашем коде, даже не говоря об увеличении размера программы.
WET («We enjoy typing»)
Решения WET широко распространены в многоуровневых архитектурах, где разработчику может быть поручено, например, добавить поле комментария в форму в веб-приложении. Текстовая строка «comment» может повторяться в метке, HTML-теге, в имени функции чтения, закрытой переменной, DDL базы данных, запросах и т.д. Подход DRY устраняет эту избыточность за счет использования платформ, которые уменьшают или исключают все эти задачи редактирования, кроме самых важных, оставляя возможность добавления новых переменных в одном месте.
YAGNI («You ain’t gonna need it»)
Тебе это не понадобится — это принцип, который может противоречить взглядам некоторых программистов, а также тех, кто добавил дециметры в школьную программу.
Быть готовым к будущему, как правило, хорошо, но не в программировании. Оставлять любой код, предназначенный только для расширения в будущем — так себе затея.
Но если ты по натуре киберплюшкин и от самой мысли оставить только необходимое начинает плавиться стул под твоими булками, то давай разбираться — это плохой подход к программированию или все же клиника по жизни?
Кодерские проекты — это не те вещи, которые имеют четкое окончание. Если автор не откажется от идеи (и не передаст ее кому-то другому), проект, по сути, продолжается. Поэтому всегда есть и будет место для улучшения, будь то концепция, архитектура или даже сам код.
Одно дело — как идеальный код выглядит у тебя в голове — без ошибок и костылей, другое дело — что происходит на самом деле.
Естественно, легкий налет грусти и апатии может постичь кодера промозглым осенним вечером и кодер может решить понаоставлять в программе, так называемые, «точки расширения» (места, предназначенные для легкого учета новых функциональных возможностей), если они не используются разумно или не являются обязательной функцией, то превращаются просто в памятник прокрастинации и добавляют ненужную сложность и увеличивает размер кодовой базы. Если подумать, это даже противоречит ранее обсужденному принципу KISS.
SLAP («Single level of abstraction principle»)
Принцип единого уровня абстракции (SLAP) определяет, как мы должны организовать свой код (функции, чтобы быть конкретным), дабы сохранить его поддерживаемым.
С длинными и сложными функциями трудно жить. Их трудно понять другим разработчикам и их затруднительно тестировать. Если совсем на пальцах, то, как только мы сталкиваемся с такой мерзостью, мы должны немедленно преобразовать ее в несколько небольших функций!
Как говорил Роберт Мартин: «функции должны делать только одну вещь, и они должны делать это хорошо».
Но как именно мы должны организовывать свои функции? По мере того, как ты, мой пушистый друг, будешь приобретать больше опыта в программировании, ты начнешь больше понимать практическую, эстетическую и функциональную составляющую программирования и принцип, называемый SLAP, который призван помочь.
Грубо говоря, твои функции должны делать только одно, или другими SLAP-словами, должны иметь только один уровень абстракции.
По сути, функция, которая, например, читает пользовательский ввод, не должна также его и обрабатывать. Вместо этого, нужно будет использовать отдельную функцию, которая находится на другом, более низком уровне абстракции. Чем более общая функция и чем больше других функций она использует, тем выше она в иерархии абстракций.
FOOBAR (“F****d up beyond all recognition”)
Если перефразировать по-русски: «сломано так, что не восстановить».
Это чудесное выражение, пришедшее в IT из милитарного сленга, наряду с иными шедеврами, такими как, например, SNAFU — «Situation Normal — all f****d up»; это что-то вроде: «ситуация вполне естественная, но все оказалось напрасно».
По легенде, C-программисты использовали для переменных имена «foo» и «bar» в качестве, так называемых, «placeholder» или заполнителей места, особенно в учебных примерах. Так, их светлые головушки освобождались от бремени придумывания новых названий и могли сконцентрироваться на решении задач.
Со временем, это стало традицией и перекочевало из C во многие уже не такие древние языки, поэтому примеры таких имен можно встретить в учебниках повсеместно, а само слово «FooBar», применимое к проекту, означает, что можно начать подыскивать себе что-то другое.
ASAP («As soon as possible»)
«Так скоро, как только это возможно».
В последнее время стало трендом «As soon as reasonably possible» — «так скоро, как только это возможно, но в разумных пределах».
Вошло в обиход также из армейского сленга аж во время первой мировой. Активно используется по сей день, если данный акроним часто применяется в переписке с вышестоящими, то это может красноречиво указывать на уровень организации в компании или навыков управления и умения приоритизировать у начальства. Но бывают, конечно, и исключения, когда ситуация вышла из под контроля и вообще Foobar.
FYI («For your information»)
Официальное значение — «довожу до вашего сведения», а в вольном переводе: «чтобы ты знал». Встречается в переписке по мейлу повсеместно, особенно когда переписка ведется не лично с тобой, ясным солнышком, но тебя, все-таки, решили поставить в известность.
TL;DR («Too long; didn’t read»)
Аналог нашего «многабукв, неосилил». Такое можно частенько увидеть под длиннопостами, в которых автор раскрывает свою душу и срывает покровы, но читателю бывает лень вникать в сей опус.
DIY («Do it yourself»)
Сделай сам. Происходит от названий небольших строительных лавок, продающих товары для, скорее, починки дома, нежели его постройки. Подразумевалось, что работа — мелочевка и ты можешь сделать это сам, без найма квалифицированного персонала.
Впоследствии, понятие перекочевало в IT и может подходить, к примеру, в ситуациях, когда специалисту нужно сделать работу из смежной области, но она настолько мелкая и тривиальная, что проще сделать ее самому.
YOLO («You only live once»)
«Ты живешь только один раз». По аналогии с латинским «carpe diem» («лови момент»)- это призыв к полной жизни, даже к поведению, которое может нести некий риск. Является последним аргументом на границе с неразумным опытом или безудержным весельем, но порой может нести и более разумный посыл: глупо позволять страху верховодить твоими решениями, потому как ты живешь лишь раз.
И помни — YOLO, так что — KISS. Это был Ви. До встречи на канале! Аве!
«Форвард кобот» — инструмент фильтрации сообщений в Telegram-чатах
Буду краток, мне надоело читать бесконечный спам и скроллить тысячи сообщений в чатах, поэтому вместе с командой мы создали решение, которое позволяет читать только интересных людей в Telegram.
Боль
Неудобно и долго искать комментарии и новости от экспертов или интересных людей в толще скопленного спама в чатиках Telegram, к тому же это быстро забивает мозги и порой сильно психологически выматывает.
Исследование
Так как большинство информации я узнаю через Telegram и провожу около 5 часов в нем каждый день, то решил проанализировать вместе с командой интерфейс и провести интервью с пользователями, чтобы оптимизировать под себя наш общий канал получения информации.
Мы нашли 5 решений:
1) Клиенты Telegram:
— С тредовой структурой, как в Slack.
— С возможностью прочтения всех комментов человека в одном месте, как в Twitter.
— С возможностью читать все сообщения от одного пользователя в том же чате, как в Telegram X.
— Который предоставляет возможность создать в чатах отдельную комнату для живого обсуждения конкретной темы.
— Алгоритм которого подстраивался бы под тебя и предоставлял только интересную тебе информацию.
2) «Хранители знаний» с профессиональной FOMO-деформацией в чатах Telegram.
3) Закрытые, профессиональные, приватные, платные чаты — очень узкоспециализированные.
4) Дайджест чата, который делает либо алгоритм запилиленный человеком со своими когнитивными искажениями, либо модератор со своими когнитивными искажениями.
5) Нейроинтерфейс
«Текст, который тысячелетиями был универсальной формой передачи информации, стремительно уступает различным визуальным сущностям. Даже самые стойкие любители высокого слога не заметили, как гифки вытеснили голосовые (хвала!) и смайлы. А потом и саму речь: вместо тысячи слов мы стали коммуницировать анимированными изображениями».
Но будущее за новым форматом адаптации — феноменологическим, интуитивным способом получения полезной информации минуя всевозможные костыли в виде экранов
Общение с пользователями
Параллельно мы проводили интервью с пользователями и в ходе исследования выяснили, что 99!? спама генерят люди, которых не интересно читать, они не являются для них экспертами. Комментарии 1!? экспертов спрятаны в толще от 500 до 2000 сообщений, которые генерируются каждый день.
Во-вторых, выявили, что когда люди переходили к чату с накопленными 2000+ сообщений, то вначале испытывали микрострах, а потом принимали решение — либо мучиться, скипать и упускать сообщения от экспертов, либо читать и убивать часы времени.
Итог
Ни один из найденных инструментов не решал нашу проблему, а касдев подтвердил уже ставшую привычной боль у пользователей Telegram
Решение
Поэтому вместе с командой решили принести пользу и за недельку запилили свой первый прототип, который позволил автоматизировать скроллинг и фильтровать тонны мусорной информации, для того, чтобы разгружать наши мозги, экономить драгоценное время, извлекать инсайты от интересных людей и быть в тренде.
Добро пожаловать в мир фильтров.
Как работает
Все очень факен изи.
Планы на будущее
Мы еще находимся в самом начале пути и это здорово. Дальше — больше!
Наша стратегическая ставка — способствовать развитию глобальной русскоязычной экосистемы Telegram, нашей самой большой и перспективной национальной компании.
Более того, Telegram — самое большое русскоязычное сообщество. А комьюнити — это новый социальный лифт двадцатых для талантливых молодых людей, пришедший на смену иерархическим структурам. Поэтому в эпоху «экономики сообществ» мы намерены способствовать развитию Telegram в самую любимую и удобную платформу для русскоязычных сообществ и сообществ всего мира.
Dream Team
Антон Белозеров — чемпион в ML WorldSkills 2019. С ним мы познакомились через OpenLand, сообщество Mesto, co-founder. Telegram @wifelly
Илья Поселеннов — челябинский питанист, co-founder. Telegram @iparinile
Александр Овчинников — со-основатель комьюнити «Корпус», co-founder. Telegram @sashovchinnikov
И я — автор текста, Степа Пелевин. Мне 18 лет, я тот самый russian hacker, геймер и стартапер. Недавно я взял gap year в учебном заведении, специально, для того чтобы материализовать все свои идеи и создать продукты, которые любят миллиарды людей по всему миру. Telegram @playAgaain
Happy end
Давайте дружить! Я очень люблю общаться со всеми в социальных сетях. Думаю, что зарегистрирован везде, где только можно, поэтому пиши, с удовольствием отвечу на вопросы.
И, пожалуйста, напишите свой фидбек и задавайте любые вопросы, моя команда будет очень рада ответить на них.
Ну и обязательно добавляйте кобота в свои уютные чаты и пробуйте использовать всю его силу. Смело скипайте накопленный флуд, кобот поможет отфильтровать тысячи сообщений, разгрузить мозги и сэкономить драгоценное время для фокусировки на самом главном. Удачи и да пребудет с нами сила @forward_cobot!
P. S.
Топ 5 наших принципов работы с информацией:
— Если звезды зажигаются, значит, это кому-то нужно (Владимира Маяковский). Кому и зачем выгодно, чтоб информация была представлена именно так?
— Мысль изреченная есть ложь (Федор Тютчев). Все что говорится и пишется, обязательно имеет целью сокрытие истины. Никогда не принимайте к сведению любую информацию в тексте.
— Основным источником информации в любом тексте являются оговорки, ошибки, описки автора (Фройд).
—Сопоставляйте источники. Обращайте внимание на все логические противоречия внутри текстов и между текстами различных источников. Старайтесь интерпретировать противоречия на основе известных Вам элементов и свойств контекстов, имеющих отношение к обсуждаемому предмету (Народные аналитики).
—Абсолютной истины не существует. В дискуссии мы не ищем истину, а проясняем позиции — как свою, так и партнеров. Такое прояснение полезно для целей выработки адекватных стратегий поведения и повышения адаптивности к окружающей информационной среде (Народный фольклор).
Где посмотреть прежний IP-адрес?
Мне нужно узнать один из вчерашних IP-адресов (смартфон раздает интернет на компьютер и постоянно меняет IP при выключении)
Если это важно, то я еще не выходил из Гугл Хром на компьютере, на котором установлена Windows 7
UPD Есть ли способ вернуть прежний IP адрес? Где-то в настройках указать IP или еще какие-то данные, если я буду точно знать, какой IP был вчера. Чтобы провайдер автоматически подключил к прежнему IP?
Стажировка в it
Наткнулся на "НЕБЕЗЫЗВЕСТНОМ" сайте по поиску работы, на вакансию java разработчик стажёр в Aston. Скажите пожалуйста, кто нибудь проходил там? Желательно по подробнее. А то так вышло, что я получил сертификат основы java Core и в гит разбираюсь, а там это минимальный порог. Я как бы и дальше учусь на курсе, плюс самоучка с разных источников (чтобы не говорили, мол вот с курсов дно), ещё раз повторюсь, я и сторонне учусь(книги, задачи, с помощью ИИ, степик и т.д). Просто я толком не нашёл отзывов, либо чистят, либо они старые (2022 года). В общем, поделитесь подробно мнением, кто там работает или только начал, либо был опыт. Всем мир)
Как стать программистом в 2021 (мой опыт)
Буквально лет 5 назад начинающие программисты были нарасхват. Но сейчас вчерашние «войтишники» выросли и стали требовательнее к текущим. При этом профессия тыжпрограммиста все еще престижная и хорошо оплачиваемая, поэтому многие ребята и девчата в нее стремятся, но не всегда знают, с чего начать и куда двигаться.
Поскольку я много работаю, как с программистами, так и с их работодателями, решила вкратце поделиться своим мнением, что нужно, чтобы стать программистом сейчас и в ближайшей перспективе. Куда стоит вкладывать усилия, и чего на первых порах ждать от работодателей.
Кто подумывает «войти в айти», велкам.
1. Выберите сферу, в которой хотите программировать
Руководителей раздражают ребята, которые пришли устраиваться на начальную позицию программиста с позицией «Ну я учил html, css и js, потому что… так проще… ну не знаю…».
Сфер много: есть IoT (интернет вещей), есть встраиваемые системы, есть бэкэнд и фронтэнд, есть мобилка в конце концов. И если уж совсем плохо и вы не знаете, что вам интересно, тогда смотрите рейтинги языков и выбирайте самый востребованный. Хотя я считаю, что в целом это не способствует осмысленному выбору.
2. Изучайте технологии
Когда вы выбрали сферу, сформируйте список технологий, который нужно изучить. На написании кода свет клином не сошелся. Помимо него вам нужно как минимум: знать Git, уметь немного в Linux и желательно влезть в методологию Devops.
Важно понимать: программирование ради программирования никому не нужно. Программист должен уметь решать задачи.
3. Нарабатывайте практику
Это называется «хард скиллс» - те навыки, которые будут вас кормить.
На всю жизнь запомнила, лучшая практика для начинающего программиста, когда он сам себе ставит задачу и решает ее. Любите котов? Сделайте соцсеть для котиков… ну если хотите в веб.
Таких людей сразу видно на собеседовании, они мыслят более самостоятельно.
Даже если ваш домашний проект в целом для мира бесполезен, работодатель оценит то, как вы его делали и какие проблемы в процессе решили.
Кстати, если вас бесят такие слова, как «хард скилл, брейншторм, митап», просто привыкайте. А лучше погуглите их значение, чтобы быстрее освоить язык айтишников.
В погоне за навыками не забывайте и про «софт скиллы» - коммуникативность, инициативность. Они дадут вам первую работу.
4. Учитесь
Обучение будет сопровождать вас всю профессиональную деятельность. Если, конечно, останетесь в программировании. Я не знаю ни одного опытного разработчика, который не проходит стотысячные по счету курсы.
Айтишная среда очень динамичная. В ней появляются новые технологии, новые фишки. А еще, эта среда международная и англоязычный гугл содержит намного больше полезной информации. Поэтому учите сразу английский.
В плане онлайн-курсов я бы рекомендовала составить траекторию обучения из платных и бесплатных. Начинать лучше с бесплатных, чтобы понять вашу мотивацию. Вероятность, что вы отвалитесь, есть. Лучше это сделать с минимальными потерями в финансах.
5. Гуглите, как в последний раз
Гугл - наше все. Не знаю, скажет ли тебе кто-нибудь про это, но знай:
Ничто так не бесит опытного программиста, как зеленый пень, который даже не удосужился загуглить свой вопрос. Ведь ответ обычно находится на первой странице.
Так что учись гуглить и сразу на английском языке. Ведь при написании кода ты будешь делать это постоянно.
На этом я заканчиваю свою краткую памятку, можете листать ленту дальше :3. А если понравилось, предлагаю посмотреть видео по теме. Там я также рассказываю, как устроиться на первую работу, насколько важно найти грамотного наставника и немного рефлексирую:
Спасибо за внимание!























