Блог Android-разработчицы
846 subscribers
13 photos
179 links
ex-VK, ex-MTS, 6+ лет опыта. Team Lead

Заметки, интересные задачи с работы (в рамках NDA) и просто мои мысли.

Блог: https://dzen.ru/android_junior

Личный канал: https://t.me/android_junior_notes

Мой аккаунт: https://t.me/bagena
Download Telegram
Мы упорно игнорировали вирус и говорили, что всё в порядке, но он всё равно к нам пришёл. Весь день в голове одна мысль: "Ты можешь уйти с удалённой работы, но она всё равно найдёт тебя". Последние 5 лет я работала удалённо, поэтому специально искала работу, чтобы ходить в офис и общаться с людьми. Плюс, как джуниору, мне мега-важно, чтобы я могла подойти, показать что-то и спросить в стиле "Ну вот тут какая-то непонятная штука. И показывает вот это. Что делать?". И мне помогают, потому что видят, что у меня происходит.

Сейчас нас переводят на удалённую работу. Это не только мы. Во многих компаниях принудительно уже перевели. В некоторых только начинают. У нас вот, например, даже есть выбор: можно дома сидеть, а можно ездить в офис. Конечно, я предпочла второй вариант. Но теперь беда в том, что мой любимый ведущий программист, которого я всегда мучаю вопросами, решил работать из дома (надеюсь, не из-за меня). Немного радует, что есть всё-таки разработчики, которые тоже будут ходить в офис.

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

А вообще: не болейте, пожалуйста. И будьте осторожны. Пусть учёные побыстрее найдут лекарство и всех вылечат.
Не могу не поделиться. Вы только посмотрите, какая потрясающая вещь. Карты для разработчиков, чтобы оценивать время для задач. Сегодня меня учили это делать в игровой форме. Было интересно и продуктивно. И даже когда я называла завышенные цифры, то все было ок и ответ принимался как будто это и ожидалось.

После стажировки я немного боялась, когда меня начнут просить оценивать время. Потому что там тимлид был очень прямолинеен и прямо сразу просил конкретные цифры. А когда я один раз рискнула назвать, то в ответ было «И это столько времени всего на две кнопки?!». Он очень хороший руководитель, но немного жесткий для меня. Ну не умеют начинающие точно понять, сколько времени понадобится. Все-таки как мне повезло с командой в этот раз ❤️
Как здорово, что даже во время карантина продолжается какая-то активность. Ура. :)
Forwarded from Android Dev Virtual Meetups
Первый митап понедельник 23 марта в 19-00 по московскому времени.

Денис Неклюдов об IoT хобби:
Internet of Things-хобби в связке с Android. Разберем что такое ESP8266, Raspberry Pi, Arduino, MQQT и как это все контролировать с Android за 30 минут

Эфир уже доступен для подписки: https://youtu.be/_tDcYDUNr3c
Уже неделю наша команда работает удалённо. Я ужасно боялась этого момента. Мне важно взаимодействовать с командой и общаться. Плюс, как джуниору, мне надо задавать миллион вопросов всем подряд. Я очень боялась, что в итоге немного останусь в стороне и не смогу полноценно работать и познавать новое. Что получилось в итоге:

— Первые дни и правда тяжелые. Сложно проснуться и заставить себя одеться и идти работать. Постоянно хотелось отвлечься на помыть посуду/помыть пол/приготовить еду. Немного помог таймер помодоро;
— Очень важно не бояться писать вопросы в чате. Вот раньше я подходила ко всем, а теперь можно эти вопросы писать. Иногда так даже удобнее. Никого не отвлекаешь и тебе ответят, когда будет время;
— Очень помогают ежедневные созвоны. Это помогает остаться в рабочем ритме;
— В скайпе нужно выключать микрофон, если не разговариваешь. А разговоры одновременно — кошмар. Но зато мы научились слушать друг-друга;
— Сложно остановиться и не работать, если время закончилось. Но отдыхать надо. Не стоит смотреть всего один маленький баг/PR в час ночи;
— Работу вполне получается выполнять удалённо, но мы все безумно скучаем по офису и общению. Быстрей бы вернуться.
— Можно играть в удалённое бинго. Я близка к победе. :)
Я тут подсела на https://leetcode.com. Так как карантин и делать нечего, то сначала я вспомнила про https://www.hackerrank.com. Его я тоже очень люблю, но вы только посмотрите какой литкод красивый! А ещё мне очень нравится, что он считает скорость. ❤️
Вчера я участвовала в https://leetcode.com/contest/biweekly-contest-23. Само соревнование длилось 1,5 часа. За это время надо было решить 4 задачи: 1 легкая, 2 среднего уровня и 1 сложная. И у меня ушло минут 15 просто на то, чтобы перестать пугаться заданий и понять их. Кстати, за это время многие уже решили все 4 задачи. У первого места время 14:15.

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

После окончания соревнования можно посмотреть, что написали соперники. Было интересно видеть, как победители в несколько строчек элегантно вместили мой код на 500 строчек.

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

В целом, мне очень понравилось и я буду пробовать ещё! 🏆
Почему не получается придумать красивое название для метода

Вчера я очень сильно злилась, потому что с ревью вернулся код уже второй раз. И снова были комментарии про названия. При этом я стараюсь называть нормально, а не в стиле abc15. Конечно, сначала я психанула. Ну ведь очевидно, что метод делает вот это, а потом вот это. Ну что тебе ещё надо от меня? Уже вечером, после бокала вина, я успокоилась и посмотрела комментарии ещё раз. И тут до меня дошло, почему я не могу придумать идеальное название. Да просто потому что мой метод занимается двумя разными вещами, которые в принципе не совместимы. Не могу же я его назвать methodDoThisAndThenDoThat. И вот так вот просто комментарий про название привёл к большому рефакторингу. Зато теперь из названия сразу видно, что именно происходит.

Пока что у меня есть такой недостаток, что я иногда забываю, что один метод должен заниматься чем-то одним. Постоянно кажется, что если добавить ещё одну маленькую детальку, то ничего не изменится, но нет. Вероятно, надо всё-таки начать читать "Чистый код". Как раз карантин и самое подходящее время для этого.
Наткнулась я сегодня на LeetCode на, казалось бы, простую задачку: Given an array nums of integers, return how many of them contain an even number of digits. Надо просто из массива чисел найти сколько из них имеют чётное количество цифр.

Думаю, многие решат эту задачку обычным делением. Я тоже изначально так сделала, а потом начала искать более оптимальные способы и нашла статью: https://www.baeldung.com/java-number-of-digits-in-int#3-repeated-multiplication

И вот интересные выводы, которые я сегодня сделала:

1. Это мне посоветовал друг. Чтобы оценивать, что сложнее: умножение, деление или логарифм — надо взять листочек, два числа и выполнить каждое действие с ними. Будет очевидно, что умножение самое простое и экономит примерно 30% времени;
2. Логарифм самый сложный. И это не только на листочке. Во-первых, даже смотреть на формулу сложно. А во-вторых, там внутри есть ещё перевод int в double и обратно;
3. Варианты со String и сравнением я сразу отбросила. Они даже выглядят не очень. Если я в проекте применю где-то такое сравнение, то, боюсь, моего тимлида потом придётся отпаивать вином и валерьянкой;
4. Даже самая простая задачка может привести к интересным выводам.

А ещё я тут познаю codeforces и topcoder. Визуально они выглядят намного хуже чем литкод, но я решила дать и им шанс.
Недавно мне дали две задачи, которые я никак не могу сделать. Обе на изучение и в обеих мой ответ: без понятия что тут происходит.

На фоне этих задач, которые бесконечно вводят меня в печаль, когда я их вижу, вспомнились мне дни работы в техподдержке. К нам часто приходили пользователи с багами. Мы эти баги относили разработчикам, а в ответ довольно часто было "Хз. У меня не воспроизводится". И тогда я злилась, потому что ну как так? Вот же пользователь! У него всё плохо! Чините давайте. Не воспроизводится у них видите ли.

А вот теперь я встала на позицию разработчика и теперь у меня не воспроизводится. Но в моей компании я не могу ответить "Хз". Надо решить проблему и помочь, чтобы никто не остался расстроенным. И вот уже второй день мой диалог с коллегой выглядит примерно так:

— Слушай, а может это? У меня воспроизвелось с такими настройками.
— Нет. У клиента правильные настройки.
— Блин.

И это циклично повторяется примерно каждые пять часов. Я даже попыталась сделать перерыв, чтобы с новыми силами потом вернуться к задачам, но и это не помогло. Просто какой-то тлен и безысходность. Надеюсь, завтра я проснусь и придёт озарение, что именно могло пойти не так.
Озарение не пришло. Но зато поняла, что если по логам ничего не понять, то всегда можно попросить ещё логов. И ещё. Больше логов! К сожалению, это не помогло. Думаю, это возмездие за то, что работая в поддержке я вечно относила подобные проблемы разработчикам 😭
Заметка для себя. Все время забываю, как в студии отменить последний коммит, который ещё не запушен, но оставить изменения. Все-таки проще это делать в терминале: git reset --soft HEAD~1
http://Hyperskill.org — это определенно один из лучших курсов, которые я встречала. И сделано очень красиво + бесплатный. А ещё мне интересен пункт "Hypercoin 800: Get a code review for a stage of your project. Our mentor will give you personal feedback on your architecture and code style." Попробую его достичь и посмотреть на CR :)
Забавно получилось. Последнюю неделю я разбиралась с даггером и сейчас искала картинку для статьи. Ввела Dagger, а в ответ появились всякие ножи. Так я узнала, что Dagger переводится как кинжал :)