Задать вопрос
  • Сколько стоит час веб-разработчика-фрилансера?

    @deliro
    Ты веcь такой кругом молодец, то знаешь, это знаешь. А теперь представь себе среднестатистический проект, который должен приносить бизнесу деньги. За две недели работы ты едва напишешь хлипкий CRUD для данных, неправильно смаппив бизнес-сущности в объекты ORM, ещё через месяц натянешь какой-то слайдер на jQ, попутно захватив 2мб JS кривых библиотек, а через два заказчик поставит тебе плохую оценку, потому что твой ценник он оплатил не за то, что ему нужно, а потому что ты знаешь монады, которые ему даром не сдались.

    А теперь давай представим простого программиста. Из алгоритмов он с трудом вспоминает сортировку пузырьком, а двусвязный список — предел его знаний о структурах данных, и даже этим списком он пользовался два раза в жизни. Хаскель он никогда не видел в глаза, C++ учил только в школе, вместо этого пишет неэффективный код на PHP. И у него есть опыт. За день он распишет сущности, за второй сделает универсальный CRUD, на третий день поднимет фронт на React'е с SSR. Да, внутренности проекта будут "медленными". Вместо O(logN) что-то будет выполняться за O(N) или даже O(N^2), но всем похер. Пока всё работает на приемлемом уровне — бизнес радуется.

    Кстати, к чему эта поучительная лапша? Я хотел сказать, что всеми этими модными словами можно пугать друзей и преподавателей, но в реальной жизни все алгоритмы уже реализованы, все типы данных уже подобраны оптимально. Знать их полезно для себя (чтобы мозг не атрофировался), но не для работы. Для работы тебе нужны такие навыки как:

    * Оптимальный баланс между говнокодом и идеальным кодом
    * Оптимальный баланс между скоростью разработки и оптимизацией кода
    * Оптимальный баланс между поддерживаемым кодом и костылями
    * Умение использовать те инструменты, с которыми ты работаешь. Опять же, для того, чтобы писать быстро, при этом имея минимальное количество говнокода и обеспечивая максимальную поддерживаемость (в пределах сроков). Например, можешь выкинуть в помойку свой Vim, как бы круто ты себя не чувствовал, разрабатывая в консольном редакторе, если продукты от JetBrains позволят за это же время сделать что-то лучше или чего-то больше
    * Чувство "знаю больше менеджеров". Это то чувство, когда тебе кажется, что "вот эта фича скоро изменится" и надо сделать архитектуру заранее более гибкой. Или "вот эту фичу мы через месяц выпилим" и не надо тратить на неё силы — напиши костыль и через месяц с чистой совестью удали его
    * Знания, как сделать ту или иную фичу. Потому что фичи повторяются (немного видоизменяясь) от проекта к проекту. И если ты сделал что-то за два дня, в следующий раз ты похожее сделаешь за три часа

    Что касается инструментов, выбери любой полноценный фреймворк, который умеет решать 90%+ потребностей "из коробки": Symfony, Django, Laravel

    Всякие "минималистичные" поделия вроде Falcon, Flask (в PHP не знаю, я на питоне пишу) оставь хипстерам. Пусть они говорят: "Мой фалкон такой быстрый, он написан на Cython". Тебя это не должно волновать, потому что бизнес с твоей скоростью разработки уже заработал достаточно денег, чтобы купить ещё десять серверов, пока фалконисты неделю гуглили, как прикрутить миграциии и запустить юнит-тесты на VPSке за пять баксов.
    Ответ написан
    5 комментариев
  • Какие программы писать новичку в Java?

    @frozen_coder
    Java-developer
    Есть у меня список ссылок на такой случай, но вам придётся самой выбрать. Я не знаю на каком вы этапе освоения java, но думаю, что надо выбирать что-то небольшое (чтобы не тянулось очень долго и был быстрый результат) и что-то интересное вам лично, чтобы вам было приятно и увлекательно это делать. Не бойтесь, если чего-то не знаете - гуглите как сделать нужную вам задачу и найдёте или подсказки, или описание на обычном языке, или решение, на которое можно посмотреть, закрыть и повторить самостоятельно, разобрать как оно было сделано. Итак:

    1. https://www.codementor.io/npostolovski/40-side-pro...
    2. https://github.com/karan/Projects-Solutions/blob/m...
    3. https://habr.com/ru/post/345092/
    4. Вот это просто отличный список идей для любых языков - https://eax.me/programming-language-learning/
    5. Тут есть список того, что хорошо бы знать любому разрабу и в конце список проектов - https://gist.github.com/gabriel-fallen/5337067
    6. www.itmathrepetitor.ru/zadachi-po-programmirovaniyu
    7. https://docs.google.com/document/d/16h9Qw2vkAlhw-T...
    8. https://docs.google.com/document/d/1wHTv7y-KZnBg6b...
    9. Тут много всяких тестовых заданий по разным языкам, в том числе и Java - https://github.com/Hexlet/ru-test-assignments
    10. https://github.com/peterservice-rnd/new-job/blob/m...
    11. https://github.com/peterservice-rnd/new-job/blob/m...
    12. https://github.com/peterservice-rnd/new-job/blob/m...

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

    P.S. Тостер обрубает отображение ссылки по длине, если что и последние 3 ссылки - это разные :)
    Ответ написан
    1 комментарий