Сообщество - Лига программистов
Добавить пост

Лига программистов

1 514 постов 11 412 подписчиков

Популярные теги в сообществе:

Как программисту оценить собственную эффективность?

“Как правило, самый простой подход оказывается самым эффективным” Д. Трамп.
Сейчас работаю над интернет-магазином. Раньше у них был сайт на Битриксе, но видимо надоело им засилье кода из начала 2000-х, поэтому решили перейти на Laravel. Нашли меня в качестве фрилансера на этот проект.


Как обычно новые требования появляются постепенно, по мере вхождения во вкус. Если с Битриксом многие вещи просто не видны и невозможно сделать, то при использовании Laravel, как под микроскопом начинают просвечивать вполне такие интересные моменты, которые естественно хочется улучшить, а главное — это возможно сделать без критического усложнения алгоритмов и нагрузки на сервер.


Пример: cначала товары выводились в обычном порядке и одна из сортировок по цене выполняла упорядочение по возрастанию или убыванию.


Затем придумали начислять скидку на товар в зависимости от категории. Например, для категории А – сегодня будет скидка 10% и все товары в ней получают новое обозначение цены. Сверху перечеркнутая старая цена и ниже большим шрифтом цена со скидкой. Сверстали и красиво вывели в списке.


Клиент смотрел на это нововведение и ему не понравилось, что в общем списке товаров некоторые товары со скидкой идут в неправильном порядке. Ведь в коде сортировка идет по реальной цене, а не скидочной. Надо чтобы скидочная цена участвовала наряду с остальными безскидочными.


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


Ход моих мыслей был таков: если у нас есть таблица для хранения товаров и по одной из колонок идет сортировка, но при этом визуально отображается два значения, то почему бы не сделать дополнительную колонку для хранения вычисляемого значения, а уже по нему будет сортировка, тем более во многих СУБД есть такой функционал.


Чтобы в будущем другим программистам было проще понять, что колонка, по которой идет сортировка, является вычисляемой по триггеру обновления категории, то мы просто называем ее соответствующим образом price_calculated_by_category_trigger. Теперь в самом названии поля мы заложили ключевые слова, по которым можно догадаться о природе этого поля.


Получился рабочий вариант. Причем количество изменений в коде было минимальным.


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


Многие начнут писать про сложное документирование, отладку и прочее. Тут нужно соблюдать баланс, естественно не стоит выгружать всю бизнес-логику в хранимки. Если есть инструмент, то нужно оценить плюсы и минусы.


В конце рабочего дня, когда анализируешь полученный опыт. Понимаешь, что стал чуточку взрослее. В копилке решений появилось еще один полезный рецепт.


Такое же происходит, когда долго читаешь фантастику или фентези и дико фанатеешь от этих жанров. А затем, вдруг, попадается «Доктор Живаго» или «Сто лет одиночества», после которых внутри происходит что-то такое, что заставляет в книгах искать не только удовольствие от эфемерных фантазий, но еще и настоящие чувства реальной жизни, переживаемые героями, то, как это менять взгляд на мир. Сложно передать словам, но после некоторых книг, словно спадают розовые очки. Мысли теперь уже мало полета на драконе, мысль повзрослела и требует того, что может остаться в памяти, как собственное переживание.


Вывод


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


Ничего сверхъестественного, все укладывается в пару часов чтения документации, внедрения и тестировании, полученного решения.

Показать полностью

10 шагов, чтобы стать Android разработчиком ч. 2

10 шагов, чтобы стать Android разработчиком ч. 2 Android, Программирование, Личный опыт, Android разработка, Длиннопост

Продолжаем двигаться по нашему плану развития Android разработчика. Следующий пункт относится к языку Kotlin.


Предыдущую часть и сам план можно посмотреть по ссылке


3. Изучить язык Kotlin.

Если вы начнёте искать учебные материалы по Android разработке, то заметите, что все они про язык программирования Kotlin. Язык был одобрен Google как основной для мобильной разработки, и поэтому это будет ваш основной инструмент. Если до этого пункта вы уже успели освоить Java, то изучение основных принципов языка Kotlin для вас будет не проблема. Я за выходные прочитал вот эту книгу: Head First. Kotlin и уже мог что-то писать на Kotlin. Книгу при желании можно бесплатно скачать в электронном виде, но лично я решил её купить. Вид книги на полке как бы настраивает тебя на продолжение практики, плюс бумажные книги всегда приятнее читать. Практиковаться вы будете на следующем пункте, при создании мобильных приложений. Главное - понять основные принципы языка и периодически подглядывать в книгу, когда какой-то код вам покажется непонятным. Практику из книги выполнять не нужно.

Если так случилось, что вы решили не следовать предыдущему пункту, а начали именно с этого языка ваш путь разработчика, то для изучения языка я вам рекомендую курсы создателей языка hyperskill Плюсы и минусы курса вы можете почитать в предыдущей статье. В нём изучается голый Kotlin без привязки к мобильной разработке. Возможно, на данном ресурсе курс мобильной разработки с языком Kotlin появится позже. Сами курсы на момент написания статьи бесплатные, т.к. находятся на стадии бета-тестирования. Их я начинал проходить для ознакомления, и прошёл где-то 30 процентов. Курсы мне очень понравились. Там также есть возможность автоматически проверять задания, поэтому вы можете сами планировать скорость прохождения курсов. Другие ресурсы по изучению Kotlin я не тестировал, но думаю, - там работают те же принципы, что и при изучении языка программирования Java, - продавец курсов не главное, главное - это хороший преподаватель.


4. Освоить Android Studio с применением языка Kotlin.

Когда я сам дошёл до этого пункта, я решил начать изучение с книг, уж больно мне понравилась серия книг про программирование Head First. И в этой серии как раз-таки была книга Head Firsе Android. Я нашёл эту книгу в электронном варианте и начал погружаться в мир Android. Прочитав где-то 20 процентов книги и делая очередное практическое задание оттуда, я заметил, что мой код не работает. Какая-то функция из какой-то библиотеки выдавала ошибку. Я начал искать подобную проблему в интернет и узнал, что не один я такой, кто занимался таким же способом, по книге. Я попал на сайт overflow, где на данную проблему ответили, что библиотека обновилась, и названия методов также обновились. Так я впервые узнал, что Android разработка очень быстро меняется и те способы решения определённых задач, которые описаны в книге, могут уже не использоваться, т.к. устарели. В то же время я заметил, что когда ты ищешь какие-либо решения по Android разработке, то почти всегда в свежих записях используется Kotlin, а не Java. А книга Head Firsе Android подразумевала разработку именно на языке Java. Меня это смутило, и я решил, что мне нужна более новая книга, и чтобы там было обучение с использованием языка Kotlin.


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


Разочаровавшись в книгах, я начал искать другие способы освоить Android Studio. Я смотрел в сторону разных курсов: как платных, так и бесплатных. В какой-то момент я наткнулся на курс Udacity от Google. Мне подумалось тогда, что если курс от самих Google, то там наверняка будет самая актуальная информация на текущий момент, т.к. все изменения в библиотеках и способах разработки создаются с помощью Google. К сожалению, курс стоил 400$ и не имел пробного периода. Но мне повезло: когда я через неделю снова зашёл посмотреть курсы на Udacity, на этом курсе было написано, что первый месяц подписки будет бесплатным. Я, конечно же, воспользовался такой возможностью, а потом на сайте курса мне было предложено проходить его за 100$ в месяц, и я решил согласится, т.к. курс мне очень понравился.


Теперь перечислю плюсы и минусы курса:

+ на курсе самая актуальная информация по андроид-разработке, и она постоянно обновляется;

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

+ задания, которые даются в конце каждого раздела, проверяет живой человек, и если что-то не так в вашем коде, то он пишет вам об этом и просит переделать;

+ Вы можете проходить курс в удобном для вас темпе;

+ В курсе очень хорошо подаётся материал. И если чего-то не понял в видео, то можно прочитать его текстовый вариант. Текстовый вариант — это не перевод речи из видео в текст. Это объяснение темы, другими словами;

- В каждом разделе разные преподаватели, которые читают лекции в видео. Это плохо тем, что некоторые чуть похуже объясняют, чем другие. Поэтому не забываем пользоваться текстовым вариантом курса;

- Курс на английском языке. В курсе есть как видео, так и дублирующие видео текстовые версии. Видео даётся с Youtube, а это значит, что можно выводить субтитры и переводить их с помощью встроенных возможностей Youtube. Текст же переводится встроенным в браузере переводчиком (мне показалось, что Yandex браузер переводит лучше Google Chrome);

- Курс, по мне, стоит дорого, если брать его без скидки. Если бы не скидка, я бы не мог себе его позволить. 400$ - это реально дорого, тем более, если вы работаете и проходите курс, то вы можете потратить на него полгода или даже больше.

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


Во время прохождения курса, я нашёл бесплатный текстовый курс на сайте anroid.development. Я обратил внимание, что курс структурирован таким же образом, как и мой платный курс, только в текстовом виде и без заданий, которые проверяются живыми людьми. Сам курс находится по этой ссылке. Там даже примеры даны такие же, как на моём курсе от Udacity. Я считаю, что данный курс может полностью заменить тот платный, на котором я занимаюсь, единственный важный момент: в конце каждого раздела вам самим нужно будет придумывать себе задания, используя те знания, которые вы прочитали. И так после каждого раздела. Иногда, когда я смотрю видео курса Udacity, и мне кажется, что ведущий непонятно объясняет, я захожу на текстовый курс и уже оттуда изучаю тему. Есть несколько причин, по которым я до сих пор занимаюсь на платном курсе: это возможность сдать задание на проверку, получение сертификата в конце и, конечно, факт, который стимулирует меня заниматься более активно - трата денег на курс.


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

В следующей статье я продолжу более подробно рассматривать путь Android разработчика и мои планы по поводу трудоустройства. Не пропустите.


Оригинал статей на dzen: Android Head First

Показать полностью

Победа бастовавших работников Frontier

Победа бастовавших работников Frontier Профсоюз, Забастовка, США, IT

2 тыс. работников в Калифорнии (США) закончили забастовку 24 августа после того, как компания согласилась ограничить количество договоров по субподряду с привлечением низкооплачиваемого труда.


Участники профсоюза CWA (Communications Workers of America) организовали забастовку 19 августа и спустя 6 дней уже праздновали победу, договорившись с Frontier Communication. Работники протестовали против нарушений коллективного договора, а именно использования субподряда для проведения ряда работ. Отдельно требовалось привлечь внимание к рискам при найме субподрядчиков для важных телекоммуникационных сервисов.


Работники добились соблюдения компанией коллективного договора. Теперь компания обязана:

— Разместить более 100 новых штатных вакансий.

— Проводить регулярные встречи с представителями профсоюза по статусу проблем.

— Предлагать рабочие места членам профсоюза вместо найма субподрядчиков.

— Использовать реферальные программы для членов профсоюза при поиске квалифицированных кандидатов.


«Это значительная победа для членов CWA в Frontier. Борьба продлилась ровно столько, чтобы дать понять, что мы не намерены довольствоваться оправданиями и пустыми обещаниями компании. Это доказывает, что мы способны дать отпор, когда мы объединяемся и действуем в наших интересах»,
— Кении Уильямс, исполнительный вице-президент ячейки CWA Local 9510.

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


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


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


Сотрудники работали без коллективного договора фактически с 16 апреля 2022 года, когда истёк срок действия предыдущего договора. В марте 2022 года члены CWA отклонили предложенное предварительное соглашение, которое не учитывало интересы сотрудников. Вскоре после этого CWA и Frontier начали переговоры о новом коллективном договоре. Компания обязана сохранять ограничения на субподряд, которые были частью предыдущего соглашения, до тех пор, пока новый контракт не будет согласован.


Работники Frontier оставались преданными клиентам и компании даже после её недавнего банкротства. Работали в пандемию, занимались установкой и поддержкой связи для клиентов, обеспечивали местным сообществам возможность удалённо работать, получать образование и медицинскую помощь, общаться с друзьями и членами семьи.


Проблему привлечения неквалифицированных специалистов по субподряду неоднократно поднимали в тематических докладах, в том числе обсуждали влияние этого явления на рабочую культуру, условия труда и качество оказываемых услуг.


Стоит ли говорить, что такая проблема остро стоит не только в США?

Показать полностью

Ответ MaximVT в «Ты слишком много хочешь за работу, каторую делаешь быстро»

Была похожая ситуация, тоже в плоскости ИТ, но в плане разработки
Работал я, горя не видывал, поднимал целину прикладных разработчиков(платформенные задачи, облегчение использования API)
Наработал достаточное для себя время по получению опыта, ну и думаю, а че не попросить повышения зарплаты
Ок, попросил на 15-25% больше зарплату у своего CTO
Удивился, что повысили только на 15%
Дальше уже думал, посмотрю ка я вилки зарплат на рынке.
Что я увидел, не передать словами(в общем компания не могла конкурировать с другими в плане вилок по зарплате)
По итогу уволился с увеличением зарплаты на 200%
Контакты сохранились, старичков в компании не осталось, кто куда поувольнялся)
Причем все ребята толковые были.
Остались только те, кто любит "стабильность"
И да, я уволился не из за денег
Толчком была ситуация, которая больше похожа на жадность
До этой ситуации я вообще в сторону хх.ру не смотрел

Выбор между Java и PHP

Всем доброго дня!


Нужен совет, пожалуйста, не топите в минусах сразу.

Ситуация такая - в конце прошлого года начал изучать Java. Всё нравилось, всё интересно, прогресс был. Учился в основном на джавараше (не реклама) + литература + кодварс, брал частные уроки.

Но потом началась СВО, и стало как-то совсем не до учёбы - пришлось сосредоточиться на работе, плюс подготовка к свадьбе + высокий сезон на работе.

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


Проблема вот в чём.


Мне нравится работать с CRM системами, настраивать всё это дело, чтобы оно всё между собой взаимодействовало (товары переливаются из одной учётной программы в CRM и так далее). Все популярные системы написаны на PHP - amoCRM, МойСклад, ну и много ещё чего. Да и в принципе веб разработка интересна, особенно в части бэкенда.

Меня не смущает то, что зарплаты у PHP несколько ниже, чем в Java.


Мне очень нравится Java, и я бы продолжил без сомнений учить её дальше, но проблема в том, что на Java в основном один финтех, а я в жизни не пройду не одну СБ в силу подмоченной репутации (не криминал). Да и плюс финтех это достаточно скучно, а это - прямой путь к выгоранию.

При этом сама Java как язык мне очень нравится, очень понятна, плюс есть несколько хороших книг по ней, плюс оплаченная подписка на джавараше.


И вот я не знаю, что делать.

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

"Осложняется" всё ещё немного тем, что мне скоро 32 года, и нет уже столько времени на раскачку, поэтому нужно определяться и уже ебашить, а я всё не могу решить, кем стану когда вырасту.


Короче, посоветуйте, что бы Вы учили, Java или PHP и почему?


P.S., прошу прощения за сумбур.


P.P.S., я даже в своё время сел и в табличку всё внёс, что думаю, и всё равно не могу определиться с одним языком, и из-за этого не учу не один и буксую.

Выбор между Java и PHP PHP, Java, Javarush, Мат, Программирование
Показать полностью 1

Девушки в АйТи?

Недавно прочитала пост некой Юлии (одиозная личность в JS коммьюнити как оказалось, кто знает тот знает) о том как несправедливо к ней относятся на работе. И, мол, одна из причин - ее пол.


Я тоже девушка в АйТи и у меня не было проблем в 99.9% случаев работая с парнями. Но я работаю в ЕС, может в родных постсоветских странах сейчас другая атмосфера?


Вопрос вам:


Если вы парень - какой опыт работы с девушками в АйТи у вас был? Положительный? Негативный? Интересные истории?


Если вы девушка - тот же вопрос. Была ли какая-то дискриминация? Положительные истории?


Начну с себя. Всем все равно какого ты пола.


Единственный мой негативнй опыт был с чувачком который травил NSFW шуточки во время стендапов и смотрел именно на мою реакцию из всей команды. (Не надо так.  :) ) .


В остальном - положительный опыт в тимах с большинством парней. Один проект пилила в тиме где были 4 девушки и 1 парень - тоже хороший опыт. Единственная разница которую я заметила - девушки больше комментят код. :)

Показать полностью

Сентябрьский набор на бесплатные курсы по основам java

Всем привет! 18.09 в 15:00 стартует новый поток обучения java с нуля!
В программе: основы синтаксиса java, погружение в объектно-ориентированное программирование, знакомство со средой intellij idea, знакомство с git и github!
Продолжительность: 1 месяц
Расписание: по воскресеньям в 15:00, и в четверг в 20:00.
Формат обучения: онлайн в zoom, длительность 1,5 - 2 часа
Кому подойдет обучение: для тех кто хочет научиться программировать с нуля или переключается с другого языка
По записи обращайтесь в телеграмм @Ablazzing

КАК РАБОТАЮТ ЧИСЛА С ПЛАВАЮЩЕЙ ТОЧКОЙ?

Типы данных, которые мы используем работают не совсем так, как мы этого ожидаем.

Некоторые дроби невозможно представить в двоичном виде.

Как компьютер хранит такие числа в памяти, что привнес стандарт IEEE-754 - узнаете в данном видео.

Отличная работа, все прочитано!