Нужно больше практики.
Если вы хотите больше практических заданий и владеете английским (или хотя бы умеете гуглить перевод), то у меня для вас хорошая новость! Пару дней назад Кирилл подсказал неплохой сайт-тренажер-задачник. Я его опробовал, и теперь опишу свои мысли. Ах да, сервис называется codewars и наверняка кто-то из вас уже слышал о нем.
Коротко о коудворс
Для меня лично codewars стал местом, где можно попрактиковать технику написания кода + узнать чужие, более интересные техники. Сервис реализован в стиле «восточных единоборств». Сам сайт уже не просто сайт, а – додзё; задачки – ката; вы – солдат, воин, а не просто студент-программист, а код-ревью – кумите, спарринг. Восточная тематика создает специфическую атмосферу – здесь хочется непрерывно развиваться и становиться искуссным мастером. Порадовала сегментация задачек-ката по сложности. В общем, заходи и развивайся, самурай!
Что такое ката?
Если по-простому, ката – это практическая задачка. Есть несколько уровней сложности: от 8 kyu до 1 kyu (возможно есть и другие, пока что мне не известные). Причем чем ниже кью, тем сложнее задача. Вот так выглядит страница с выбранной катой:
Верхний блок: Уровень сложности, название, статистика, выбор языка, «Приступить», «Пропустить». Нижний блок: Детали (условие задачи), Решения (открывается после того, как вы решите задачу), Форк каты, Обсуждения, Добавить в коллекцию (Избранное), кнопки расшаривания.
Как выглядит ката?
Ката выглядит вот так:
Слева – уровень сложности, название, статистика. Чуть ниже условия задачи и окошко вывода. Сверху справа можно выбрать язык, переключиться на дневной/ночной режим, режим редактора Vim или Emacs, полноэкранный режим. Ниже – окошко для написания решения, часть тестов (да-да, это не все тесты, их на самом деле больше).
Кстати, заметил только что, у меня на 12-дюймовом экране поползла верстка. И кнопки «Запустить Sample tests» и «Подтвердить решение» уплыли вниз за экран, и прокруткой их не достать =( Помогает небольшое сужение экрана по ширине.
Альтернативные решения задачи
Очень классно, что после прохождения каты можно увидеть решения других бойцов. Также интересна сортировка: Лучшая практика – рекомендуем использовать эти решения; креативность – красиво, интересно, но в продакшн лучше такое не писать; новые – новые решения вперед, старые – вначале старые решения. Т.е. сразу учимся и практичности, и креативности.
Кланы
Регистрируйтесь на codewars, вступайте в клан Hexlet, практикуйтесь, развивайтесь, соревнуйтесь и становитесь мастерами, а возможно и сенсеями в будущем! Если вы знаете еще какие-то фишки codewars, напишите о них в комментариях.
Ranks
Ranks are used to indicate the proficiency of users and the difficulty of Kata. There are two classes of ranks, Kyu and Dan, which are divided in 8 levels each. By increasing order of proficiency/difficulty:
Why the names Kyu and Dan? The terms are borrowed from a system in Japanese martial arts, which is in turn borrowed from the game of Go. Kyu (or Kyū) indicates the number of degrees away from master level (Dan). This is why they count downward. Once you reach master level, we count upward. Black belts in martial arts are Dan level.
User Rank Breakdown#
When you visit your profile on Codewars, you can see that you have an Overall rank as well as individual ranks for each language you have completed kata in:
The wheel on the left indicates your progress toward your next rank. For example, if you see the 1 dan badge in the wheel and your overall rank is 1 kyu / 70.0% that means you have earned 70% of the progress needed to go from 1 kyu to 1 dan (see required score).
The overall rank increases each time you successfully complete kata you never did in any language before. This increase occurs only one time per kata. On the other hand, you can complete the same Kata in different languages and each one of the related score will increase accordingly.
Note that you cannot gain progress if you forfeited a kata.
Leveling Your Rank#
As said before, the only way to «rank up» is to complete Kata. However, the rank of the Kata you complete makes a huge difference on the evolution of your rank and its progress.
As you can see in awarded score and required score to rank up, if your main goal is to level up your rank, you should aim for completing hard kata above your current user rank. On the contrary, completing a lot of low level kata will give you a lot of honor but will not increase your rank very quickly.
Remember, every kata completion counts toward the rank of that language, but only the first completion of a given kata counts toward your overall rank/score.
Awarded Score by Kata Rank#
| Completed | Score Awarded |
|---|---|
| 8 kyu | 2 |
| 7 kyu | 3 |
| 6 kyu | 8 |
| 5 kyu | 21 |
| 4 kyu | 55 |
| 3 kyu | 149 |
| 2 kyu | 404 |
| 1 kyu | 1,097 |
Required Score to Rank Up#
| Rank | Required Score |
|---|---|
| 8 kyu | 0 |
| 7 kyu | 20 |
| 6 kyu | 76 |
| 5 kyu | 229 |
| 4 kyu | 643 |
| 3 kyu | 1,768 |
| 2 kyu | 4,829 |
| 1 kyu | 13,147 |
| 1 dan | 35,759 |
| 2 dan | 97,225 |
Note about the conversion between rank score and rank progress percentage:
New users are often surprised when they realized that some kata of rank 4 kyu rewarded them with 5% progress or so, then the amount suddenly dropped to 1.7%. This kind of thing happens each time your rank levels up: since the actual score earned for completing a Kata is constant (see table) while the score required to reach the next level increases a lot, the % awarded for the same Kata rank becomes lower and lower when you level up.
To give you a general idea about the process, here are the approximate percents you may gain when comparing your rank with the rank of the Kata you completed:
Польза от codewars?
Оценить 1 комментарий
Не знаешь как решить. Сядь и нарисуй блоксхему алгоритма без привязки к ЯП
Скорее, там можно подсмотреть однострочники и дикую функциональщину
Что также полезно для развития
Вначале сам часто думал «а что так можно было?»
Когда решил что основным ЯП у меня теперь будет JS, надо было переформатировать мозги, для этого сотню-другую часов интенсивно что-то кодить, не важно что, важно чтобы на JS и в хорошем темпе.
Тут, как раз, Кодварс подвернулся. Прокачался до 2.5 qyu и подзабросил, но эффект получил должный, теперь на php кодить не так комфортно (иногда совсем не так).
Чужие решения смотреть тоже интересно, иногда думаешь вот ведь круто, но в прод я бы такое не выпустил.
Сами алгоритмы с кодварс в реале вряд ли понадобятся, а вот составные их части очень даже.
в общем для меня кодварс оказался весьма приятным и эффективным способом привыкнуть к ЯП.
codewars отличный ресурс.
Ключевой вопрос, пользуетелесь ли вы открытием решений или как впринципе выстраиваете свою работу на данном ресурсе?
Codewars
09 Jul 2020 в 23:09
09 Jul 2020 в 23:09 #1
Какого Kyo надо достичь, чтобы претендовать на junior позицию? Добрался до 5 kyo, пока норм, буду дальше долбить это дело
или этого не достаточно? Вообще они там много чего спрашивают на задачах, практика хорошая, но иногда всё сводится к тому, что надо написать программу прямо под тесты.
09 Jul 2020 в 23:57 #2
Кату 3-4 лвла не решил, на работу не взяли
09 Jul 2020 в 23:57 #3
Кату 3-4 лвла не решил, на работу не взяли
надо решать 3-4 каты? видел стрим, как такие каты сеньёр решает
09 Jul 2020 в 23:59 #4
надо решать 3-4 каты? видел стрим, как такие каты сеньёр решает
10 Jul 2020 в 01:02 #5
10 Jul 2020 в 06:09 #6
Ау, о про джуна говорит. Это как правило люди без опыта, но с потенциалом который пытается найти хороший интерьвювер.
10 Jul 2020 в 06:42 #7
Ау, о про джуна говорит. Это как правило люди без опыта, но с потенциалом который пытается найти хороший интерьвювер.
Нет абсолютно никаких проблем получить опыт и первые собственные проекты в портфолио. И никто не требует от джуна в портфолио иметь собственный фейсбук, амазон и гугл. Но элементарные проекты которые ты сможешь на интервью показать и рассказать о них там должны быть. Даже если они сделаны из говна и палок и это клон популярного сайта/приложения/программы.
Иначе не пробьешься среди таких же «джунов», потому что на большинство вакансий джунов прилетает минимум по 20-30 откликов. К нам на вакансию фронтенд джуна в Москве прилетело порядка 70 откликов когда нам срочно понадобился джун в команду и мы были готовы предложить не самую плохую зарплату. И большинство откликов были как раз таки вот такие, с бесполезными сертификатами, курсами, какими-то достижениями на codewars/timus/codeforce. Думаю, не стоит упоминать что такие люди даже не рассматриваются серьезно.
10 Jul 2020 в 06:46 #8
Нет абсолютно никаких проблем получить опыт и первые собственные проекты в портфолио. И никто не требует от джуна в портфолио иметь собственный фейсбук, амазон и гугл. Но элементарные проекты которые ты сможешь на интервью показать и рассказать о них там должны быть. Даже если они сделаны из говна и палок и это клон популярного сайта/приложения/программы.
Иначе не пробьешься среди таких же «джунов», потому что на большинство вакансий джунов прилетает минимум по 20-30 откликов. К нам на вакансию фронтенд джуна в Москве прилетело порядка 70 откликов когда нам срочно понадобился джун в команду и мы были готовы предложить не самую плохую зарплату. И большинство откликов были как раз таки вот такие, с бесполезными сертификатами, курсами, какими-то достижениями на codewars/timus/codeforce. Думаю, не стоит упоминать что такие люди даже не рассматриваются серьезно.
Понял, хороший развёрнутый ответ. Спасибо.
Скажи, а какие направления, тенденции ты видишь? Какие проекты будут показательными как самостоятельная работа, а какие сойдут за копипаст (на первый взгляд), хоть может ты даже к ним даже и прилогал усилий? Так сказать и мне любопытно и ТСу этим ответом поможешь, я думаю. 🙂
10 Jul 2020 в 07:11 #9
Понял, хороший развёрнутый ответ. Спасибо.
Ну автор не написал в какую область он собирается идти джуном. Сам проходил путь верстальщика и фронтендера, поэтому личный опыт имеется только там. Немного работал фулл-стэк разработчиком, но там была необходимость в этом на уже рабочем месте, поэтому собеседование не проходил.
Для верстальщика это, вполне очевидно, пару сверстанных макетов. Желательно разной сложности и с разными подходами (без всего, БЭМ, с Bootstrap, Mobile First). Чем больше разных макетов тем больше вероятность что люди заинтересуются. Не лезть к фреймворкам, препроцессорам, сборщика и прочему пока не научитесь верстать всё на чистом HTML и CSS. Собеседовал верстальщика который показал сверстанный резиновый макет на Bootstrap но не смог объяснить как реализована резиновая верстка. Довольно жалкое зрелище.
Для бэкэндера можно сделать простой клон твиттера или форума, чатик. Можно без дизайна, от вас его требовать никто не будет. Главное показать что вы знаете как сервер работает с вашим приложением и что происходит когда вы им пользуетесь. Знать что происходит за кулисами и на сервере. Опять же, усложнять можно до бесконечности и чем сложнее результат тем лучше. И, опять же, я бы сосредоточился на знании основного языка, а не на его фреймворках.
Какой уровень на CodeWars = Уровню Джуниора
13 Jan 2021 в 18:26
13 Jan 2021 в 18:26 #1
Я вот уже скоро перейду к решениям 5 куев и мне стало интересно, каков примерно уровень джуниор разработчика в куях на КодВарс?
Я смотрел некоторые топы там вообще не решают 4-1 куи, а просто по кд делают мелкие.
13 Jan 2021 в 18:30 #2
13 Jan 2021 в 18:30 #3
на стажировку фронтом в яндекс дают решать 4 кью задачки
13 Jan 2021 в 18:31 #4
на стажировку фронтом в яндекс дают решать 4 кью задачки
Не, я планирую в обрыгаловку какую то в конце года попробовать устроиться.
Яндекс мне никогда не светит.
13 Jan 2021 в 18:34 #5
Никакой, для работы нужен в первую очередь практический опыт, способен сделать произвольный маленький сайт/приложение в одиночку то ты уже джун.
13 Jan 2021 в 18:37 #6
Никакой, для работы нужен в первую очередь практический опыт, способен сделать произвольный маленький сайт/приложение в одиночку то ты уже джун.
У меня даже нет идей для приложения на с++, ну мб ты и прав, лучше стоит пробовать делать какое-то мелкое приложение, чем решать задачки
13 Jan 2021 в 18:49 #8
Практикуйся в разработке своих проектов, а идей много ведь, на гитхабе можешь находить какие-то для начала несложные вещи, попытаться понять что там к чему.
И С++ лучше не юзать для чего то более сложного чем задачка из кодварса, тебе стоит научиться для начала вообще понять, как в целом создаются более менее объемные программы, это на любом ООП языке одинаково. А потом уже переписать на С++, в нем слишком много тонкостей и просто так преобразовывать идею в код плюсов тяжело (естественно, если не говнокод). Python/Java куда лучше для этого
13 Jan 2021 в 18:51 #9
Тоже делаю только мелкие, максимум пару раз решал 4, обычно это 6-5 уровень, просто потому что для решения каты 1-4 нужно потратить много времени, а я больше хочу по быстрому порешать задачки когда есть настроение, при этом не просто решить, а сделать решение оптимальным по скорости работы и читабельности кода
По сути то какие каты ты решаешь вообще не показывает твой уровень (конечно если решаешь прямо жесткие 1-4 то молодец, джуном назвать себя можешь), уровень показывает твой опыт на реальных задачах в реальных проектах
13 Jan 2021 в 18:52 #10
Практикуйся в разработке своих проектов, а идей много ведь, на гитхабе можешь находить какие-то для начала несложные вещи, попытаться понять что там к чему.
И С++ лучше не юзать для чего то более сложного чем задачка из кодварса, тебе стоит научиться для начала вообще понять, как в целом создаются более менее объемные программы, это на любом ООП языке одинаково. А потом уже переписать на С++, в нем слишком много тонкостей и просто так преобразовывать идею в код плюсов тяжело (естественно, если не говнокод). Python/Java куда лучше для этого
13 Jan 2021 в 18:55 #11
Не, я планирую в обрыгаловку какую то в конце года попробовать устроиться.
Яндекс мне никогда не светит.
Именно по этой причине там зп ниже средней по рынку
Можешь пример задачи кинуть? Чем ниже уровень, тем сложнее?
13 Jan 2021 в 18:56 #12
У меня даже нет идей для приложения на с++, ну мб ты и прав, лучше стоит пробовать делать какое-то мелкое приложение, чем решать задачки
Так тебя никуда не возьмут если ты ничего не умеешь. Ща бы брать чела который еще пол года учиться будет, никому нафиг не всрались эти задачки потому что в реальности задачи совершенно другие, с чистым с++ даже хрен устроишься знал бы хотя бы qt, нужен именно стэк, c++ unreal c++ qt и так далее, с чистыми плюсами никуда
13 Jan 2021 в 18:57 #13
Понял, я тоже решаю онли 6-5, ибо чем дальше, тем больше описания и деталей нагружающих мозг, пока не готов браться за них.
Не люблю когда описание задачи идет в 100000 строк
когда описание больше чем строк 10 я сразу скипаю, иду искать следующую, еще ставлю фильтр для задач на знание алгоритмов, сложные математические задачи (для меня большинство математических задач сложные) или задачи на подобии «дается строка 4+4, вам нужно создать функцию которая посчитает это» тоже скипаю, больше захожу туда чтобы потренировать структуры данных и алгоритмы
Недавно наткнулся на простенькую задачку где как раз можно было придумать интересное решение со структурами данных (https://www.codewars.com/kata/5277c8a221e209d3f6000b56)
p.s ну еще нравятся таски где можно потренировать регулярки, но такие редко нахожу
13 Jan 2021 в 19:01 #14
Именно по этой причине там зп ниже средней по рынку
Можешь пример задачи кинуть? Чем ниже уровень, тем сложнее?
К примеру вчера решил эту
Given n, take the sum of the digits of n. If that value has more than one digit, continue reducing in this way until a single-digit number is produced. The input will be a non-negative integer.
You are given an array (which will have a length of at least 3, but could be very large) containing integers. The array is either entirely comprised of odd integers or entirely comprised of even integers except for a single integer N. Write a method that takes the array as an argument and returns this «outlier» N.
You are given an array (which will have a length of at least 3, but could be very large) containing integers. The array is either entirely comprised of odd integers or entirely comprised of even integers except for a single integer N. Write a method that takes the array as a argument and returns this «outlier» N.
Новый фильм «Avengers» только что вышел! В кассе кинотеатра очень много людей, стоящих в огромной очереди. Каждый из них имеет один 100, 50 или 25 долларов купюры. Билет на «Avengers» стоит 25 долларов.
Сейчас Вася работает клерком. Он хочет продать билет каждому человеку в этой очереди.
Может ли Вася продать билет каждому человеку и дать сдачу, если у него изначально нет денег и он продает билеты строго в том порядке, в котором люди следуют в очереди?
Возврат YES, если Вася может продать билет каждому человеку и дать сдачу. В противном случае верните NO.


















