• Как заменить switch case паттерном стратегия?

    lexxpavlov
    @lexxpavlov
    Программист, преподаватель
    Switch
    public enum DamageType { Melee, Range, Magic }
    public class Monster
    {
        public double Health { get; private set; }
        public double MeleeDamage { get; private set; }
        public double RangeDamage { get; private set; }
        public double MagicDamage { get; private set; }
        public DamageType FavoriteDamageType { get; private set; }
    
        public Monster(double health, double meleeDamage, double rangeDamage, double magicDamage, DamageType favoriteDamageType)
        {
            Health = health;
            MeleeDamage = meleeDamage;
            RangeDamage = rangeDamage;
            MagicDamage = magicDamage;
            FavoriteDamageType = favoriteDamageType;
        }
    
        public void AttackTo(Monster monster, DamageType damageType)
        {
            switch (damageType) // используется switch
            {
                case MonsterType.Melee: monster.Health -= MeleeDamage; break;
                case MonsterType.Range: monster.Health -= RangeDamage; break;
                case MonsterType.Magic: monster.Health -= MagicDamage; break;
            }
        }
    
        public void AttackTo(Monster monster)
        {
            AttackTo(monster, FavoriteDamageType);
        }
    }


    То же самое, но со стратегией
    public class Monster
    {
        public double Health { get; set; }
        public double MeleeDamage { get; private set; }
        public double RangeDamage { get; private set; }
        public double MagicDamage { get; private set; }
        public IDamageStrategy FavoriteDamageStrategy { get; private set; }
    
        public Monster(double health, double meleeDamage, double rangeDamage, double magicDamage, IDamageStrategy favoriteDamageStrategy)
        {
            Health = health;
            MeleeDamage = meleeDamage;
            RangeDamage = rangeDamage;
            MagicDamage = magicDamage;
            FavoriteDamageStrategy = favoriteDamageStrategy;
        }
    
        public void AttackTo(Monster monster, IDamageStrategy damageStrategy)
        {
            damageStrategy.Attack(this, monster); // не используется switch
        }
    
        public void AttackTo(Monster monster)
        {
            AttackTo(monster, FavoriteDamageStrategy);
        }
    }
    
    
    public interface IDamageStrategy
    {
        void Attack(Monster attacker, Monster defender);
    }
    public class MeleeDamageStrategy : IDamageStrategy 
    {
        public void Attack(Monster attacker, Monster defender)
        {
            defender.Health -= attacker.MeleeDamage;
        }
    }
    public class RangeDamageStrategy : IDamageStrategy 
    {
        public void Attack(Monster attacker, Monster defender)
        {
            defender.Health -= attacker.RangeDamage;
        }
    }
    public class MagicDamageStrategy : IDamageStrategy 
    {
        public void Attack(Monster attacker, Monster defender)
        {
            defender.Health -= attacker.MagicDamage;
        }
    }

    Отличие класса Monster только в коде первого метода AttackTo. Ну и свойства FavoriteDamageType или FavoriteDamageStrategy.

    Стратегия может быть полезна, если код атаки, в зависимости от типа, сильно отличается, используя внешние данные (не из класса монстра), например, день или ночь, ясно/дождь и пр. Использование стратегии переносит часть кода из класса монстра (и так сложного класса) в несколько простых классов.
    Ответ написан
    1 комментарий
  • Как найти работу аналитику требований в Германии без знания немецкого?

    @enoizze
    Антон, полагаю, что для аналитика требований умение общаться с бизнес-пользователями это ключевая компетенция, а без свободного владения языком это будет крайне сложно.
    Думаю, что в вашем случае нужно крепко поработать над уровнем немецкого и попытаться приобрести опыт работы именно с немецкими проектами, чтобы вы могли в своем резюме приводить артефакты на немецком. Или попытаться применить себя в англоговорящих странах (например, в той же Голландии на английском говорят больше).
    Однозначно разработчику гораздо проще найти работу, так как общения у него на порядок меньше.
    Ответ написан
    Комментировать
  • Есть ли смысл дальше учить?

    JackShcherbakov
    @JackShcherbakov
    Было такое. Проблема решилась бональным перечитыванием и конспектированием учебника, по которому я учился. Ваше состояние - следствие неполучения ожидаемого результата + осознование того, что Вас тащют. Вас не должен никто тащить.
    У меня чуть ли не депрессия была когда я думал о том, что все зря. Дело в том, что наш мозг считает все бессмысленным то, от чего мало пользы, тем более, когда на это ушло куча врмени. У Вас, к тому же, наверное, просто нету мотивации и прчины это все изучать.
    Ответ написан
  • Почему разработчики выбирают себе дешевые технологии?

    @entermix
    • Низкий порог вхождения
    • Возможность быстро заработать первые деньги
    • Хайп
    Ответ написан
    Комментировать
  • Как решить проблему с пониманием sql?

    Смешались в кучу кони, люди...
    SQL - это декларативный ЯП, основанный на РМД.
    NoSQL - это общее название все что не SQL, но БД.
    В каждом случае нужно учить/понимать что-то свое.
    Т.е. общего понимания для SQL/NoSQL нет.
    Но если понимать РМД и знать SQL, то можно более-менее работать со всеми SQL БД.
    С NoSQL - не так. Каждый NoSQL уникален. Соответственно понимать нужно каждый по отдельности
    Ответ написан
    Комментировать
  • Насколько легко трудоустроиться программисту в 40+, 50+ итд лет?

    un1t
    @un1t
    Просто есть много контор, где пыщ-пыщ и в продакшн. Там особой квалификации не нужно, зарплаты, маленькие, переработки постоянные. Конечно им нужен "до 35 лет ... молодой, энергичный", а по факту просто низкоквалифицированный чувак с низкой зарплатой.

    Опытные программисты и сами в такие конторы не пойдут.
    После 50 знакомых программистов нет, но после 40 вроде никаких проблем с трудоустройством не замечено.
    Ответ написан
    Комментировать
  • Насколько легко трудоустроиться программисту в 40+, 50+ итд лет?

    no_one
    @no_one
    Всем привет. Вставлю-ка и я свое словечко. Даа, жесть :)), уже не первый читаю такие статьи, так как самому 32, по образованию медик, мне не так повезло как многим прогерам которые начинали в 13-14л, у меня первый комп появился в 11 классе (тогда появился интерес к компьютерам), и то я его видел иногда, по выходным так как уехал в город после 10-го учиться в мед, в школе информатика была, но так для галочки. Свой комп купил только в 23 (ровер бук как помню), а потом семья, дети, в 28 пытался сесть за программирование, но встретил сопротивление членов семьи, родителей, непонимание, "что можно делать столько времени за компьютером", "делать тебе нечего, ерундой страдаешь", в их представление комп только для игр, "вк" и "ок". Но я не сдаюсь. Мне 32, нет профильного образования, семья, дети, но вроде как не дурак, (закончить медицинский тоже мозги нехилые нужны), понемножку пробовал изучать разные языки, остановился на Python и C#, в планах С/С++. Преодолевая сопротивление и непонимание окружающих иду к своей цели, потому что знаю, уверен что я делаю все правильно, и нужно было делать по своему раньше, слушать себя, а не других. Сначала было тяжело, но начал понимать принципы, суть и уже становиться по проще. По чему эти языки? Потому что есть другой интерес - трейдинг, вот и хочу объединить два удовольствия в одно. Кстати из окружающих тоже никто это не одобряет и не понимает :). Но мне пофиг, я знаю чего хочу, куда иду, и получаю огромное удовольствие от программирования. Конечно хочется найти работу программистом, просто что бы не разрываться между основной работой и программированием и не вариться в собственном соку, а полностью уйти в ИТ сферу. Даже если не устроюсь, буду пробовать замутить свой маленький "стартап". Как сказал один мудрец "не корректируй цель, корректируй действия", "дорогу осилит идущий". Думаю самое главное быть профессионалом своего дела, тогда работа сама тебя найдет. Знаю таких профи (не в области ИТ), к ним очередь клиентов постоянная.
    Так что как говорил У. Черчиль "никогда, никогда не сдавайтесь!". А преподы в меде: "не пускают в дверь, лезьте в окно".
    Ответ написан
    2 комментария
  • Насколько легко трудоустроиться программисту в 40+, 50+ итд лет?

    @ralaton121
    В сфере ИТ не было кризиса даже в разгар кризиса. Переориентация была в некоторых направления, но вакансий незаполненных как было много, так мгоно и оставалось в кризис. Спрос в сфере ИТ огромнейший. Не найти своего места в нем в 20, 30, 40 или 50 лет - нонсенс. Возможно, что вы просто выбрали не ту профессию.

    Плохой программист в 20 лет воспринимается нормально. Он еще выучится. Он еще и должен ничего не уметь. Он и должен получить копеечную зарплату.

    Если вы к 40-50 так и не станете специалистом и так и будете искать свое место в жизни, то у меня для вас сюрприз. Неприятный. На 40-50 летнего который умеет на уровне 20 летнего не смотрят уже снисходительно.

    ПС
    Мне немного за 50. Не испытываю проблем со спросом на свои услуги. Напротив, считаю, что только после 45 жизнь начинается. Я в этот момент бросил старый бедных клиентов, которых до этого боялся бросить. Как оказась оставшиеся те что побогаче достаточны. Работы меньше, денег больше. Работа сложнее, работа интереснее.
    Ответ написан
    3 комментария
  • Насколько легко трудоустроиться программисту в 40+, 50+ итд лет?

    Чушь, на самом деле.

    1) Довод первый, личный. Ну вот у нас в команде есть разработчик, которому за 40, занимается JavaScript. Ощущения исключительно положительные. Товарищ имеет большой опыт и очень хорошо знает что делает. Да ещё и изучает что-то новое, куда-то движется в своей области.

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

    2) Довод второй, социологический. Как известно, у человека в течение последних веков продолжительность и всей жизни в целом, и составной её части - детства стала гораздо больше. В пушкинские времена крестьянские девочки в 13-14 лет были на выданье, на них ложилась вся тяжесть семейной жизни. Сейчас это совершеннейшие дети, им только в куклы играть.

    Двадцать лет назад парень 20 лет был взрослым и уже зачастую женился. Сейчас 20 - это молодо-зелено; крепко стать на ноги к этому возрасту, стать профессионалом в интеллектуально ёмкой отрасли деятельности - да невозможно практически; посему и о семье говорить рано, что бы там ни вопили охранители. Ну и естественным образом, коль скоро детство и молодость растягиваются, то и период активной интеллектуальной деятельности - тоже должен сдвигаться. Захватывая и 40 лет, и 50, а может и 60-70. Тут уж зависит от индивидуальных усилий.

    3) Довод третий, профессиональный. Слышал ли кто-нибудь, чтобы грамотного, квалифицированного профессора математики выгоняли в 50 лет? Конечно, он наверняка уже не может генерировать идеи, как он это делал в 20; математика - дело молодых. Но опыт его огромен, он пользуется уважением, учит студентов и аспирантов; совет его ценится и может серьёзно помочь молодым коллегам; он далеко не вне профессии. Почему так происходит? Потому что математика - это устоявшаяся область, математика - это профессия в полном смысле.

    Программирование пока не вполне созрело как профессия, потому что оно несколько моложе математики (ну, не менее чем на пять тысяч лет, если считать от Московского математического папируса с задачами по стереометрии). О том, что программирование должно стать профессией - см. пост Роберта Мартина, который мне очень нравится: blog.cleancoder.com/uncle-bob/2016/07/27/TheChurn.html

    UPD. Другие ораторы упомянули о психологических причинах: тим-лиду, которому 25, боязно показать команде своё невежество в сравнении дядькой, которому 40. Ну это больше говорит о тим-лиде, а не о дядьке. Тим-лиду следует посидеть вечерком в тиши и подумать, правильно ли он живёт в этом мире, коли руководствуется мерками каменного века и правилом "я начальник, ты дурак".
    Ответ написан
    2 комментария
  • Насколько легко трудоустроиться программисту в 40+, 50+ итд лет?

    @Matar
    что то какой то бред написали )
    я пошел в программисты в 37 (!) лет. Причем, сознательно шел на слом своего мозга, ибо до этого 15 лет работал гуманитарием в сфере рекламы и маркетинга.
    И когда я пошел устраиваться на работу, на меня все смотрели не как на прыщавого джуна, а с уважением.
    Возрастных ограничений не увидел вообще, когда менял вторую работу программиста, то оценивался именно опыт как программирования, так и опыт тупо возрастного опыта.
    сейчас я заведую it отделом. справа от меня сидит программист 25 лет, слева 27 лет.
    Причем оба сильнее меня, как спецы. А начальник я. А почему? Потому что опыт )
    вот таки дела, малята )
    Ответ написан
    2 комментария
  • Как найти удаленную работу в команде?

    IDriuk
    @IDriuk Автор вопроса
    программист
    Поработаю пока с вот этим https://github.com/lukasz-madon/awesome-remote-job... нашел где-то тут на Тостере.

    Исследовал ситуацию дальше, понял , что без портфолио не стоит рыпаться.
    Нашел список типовых проектов, по которому можно делать портфолио: https://goo.gl/UPx4Sn
    Еще хочу добавить , что сейчас никто не будет слушать: "я что-то немного знаю и что-то делал, а вы меня доучите, дайте попробовать, я буду стараться", сейчас правильно общаться вот так: https://goo.gl/8RNNJY , то есть в ответ на "ищем программиста на такой-то проект на том-то" надо отвечать "о круто у меня уже есть такой проект в портфолио, вот ссылка, надо только текст и фотки ваши вставить" :)

    Что касается javascript, то оптимальным выбором, чтобы позиционировать себя как javascript или frontend программист, выглядит сконцентрироваться на react.js . У ангуляра больше своих специфических особенностей, vue слишком новый, к jquery в нагрузку будет идти какой-нибудь wordpress или будет только верстка, node.js для серьезного бекенда довольно ненадежный (например сервер на ерланге может лет десять без перезагрузок проработать, имеет крутую асинхронность и параллельность, есть серьезная система перезапуска падающих частей через супервайзеров), хотя в качестве сервера-заглушки для реакта подойдет вполне :) .
    Ответ написан
    Комментировать
  • В какой момент можно считать, что знаешь язык программирования?

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

    Но я решительно не понимаю, зачем нужны ответы на такие вопросы. Например 'когда я перестаю быть джуном?'. Или 'когда я становлюсь настоящим веб программистом / специалистом / небыдлокодером / etc?'
    Абсолютное знание английского языка все ещё позволяет сморозить глупость. Знание языка программирования все ещё позволяет написать фиговый код. Человек - синьер в крупной конторе но пишет какую-то чушь. Вы видите пропасть между ярлыком и человеком, который за ним стоит?
    Досконально владея языком, можно выбрать ужасное решение для поставленной задачи просто потому что вы с такими задачами никогда не сталкивались
    Ответ написан
    Комментировать
  • Как правильно начать изучение django?

    alxpy
    @alxpy
    Я бы посоветовал учить дальше в такой последовательности:
    Питон: Читая Лутца, можно состариться ;-) Для начала прочтите Укус Питона и Погружение в Python 3 (да, учите сразу 3й питон). Лутца и потом можно полистать, по мере необходимости.
    Джанго: Документация: en | ru | форумы
    БД: Для старта вам хватит просто познакомиться с SQL и пройти уроки.
    Дополнительно:
    Прочитайте про такие уязвимости: XSS, CSRF, SQL injection и т.д.
    Еще гляньте flask (можете даже начать с него, а не с джанго) и tornado.
    Ответ написан
    Комментировать
  • Обязательно ли использовать какой-либо фреймворк?

    27cm
    @27cm
    TODO: Написать статус
    Если проект будет активно развиваться, то без фреймворка не обойтись. Но давайте попробуем рассмотреть поближе разные варианты.

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

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

    2. Использование готового фрейморка, с которым вы никогда не работали
    Готовьтесь потратить массу времени на его изучение. Порой даже на решение тривиальных задач в некоторых фреймворках придется потратить несколько дней, если вы с этим никогда не работали. По собственному опыту могу сказать, что если сравнивать варианты (2) и (4), то готовьтесь потратить в 3 — 4 раза больше времени. Однако у этого варианта есть и плюсы: вы освоите ещё один фреймворк и в следующих проекта сможете выбирать вариант (1), другим разработчикам знакомым с данным фреймворком будет гораздо проще разобраться в коде, последующая разработка и развитие проекта существенно ускорятся.

    3. Использование собственного фреймворка
    Рекомендуется только строго после того, как вы несколько лет поработали с разными фреймворками, точно знаете их недостатки, четко можете сформулировать, почему в данном проекте не подходит ни одно из готовых решений. Плюсов у такого решения масса, но основной — ваш фреймворк будет оптимальным образом решать именно ваши задачи, он не будет «комбайном», пытающимся угодить всем вокруг. Но и минусов хватает, крупные фреймворки как правило развиваются огромным сообществом, сотни и тысячи разработчиков ежедневно находят и исправляют в нем ошибки, расширяют функциональные возможности, улучшают производительность, заменяют устаревшие решения на новые.

    4. Вообще без фреймворка
    Такой проект сильно рискует превратиться в спагетти-код. Но абсолютное большинство новичков начинает именно с этого. В этом нет ничего страшного, если это ваш первый проект, вы освоитесь с языком и его возможностями, набьете кучу шишек, и неизбежно рано или поздно перейдете к вариантами (1), (2) или (3).
    Ответ написан
    5 комментариев
  • Что делать? Что изучать?

    GavriKos
    @GavriKos
    Хочется двигаться в сторону веба - садитесь и программируйте для веба! Книги и все вот это - только ПАРАЛЛЕЛЬНО практике, причем практики должно быть МНОГО. А там - читайте что угодно.
    Ответ написан
    1 комментарий
  • Как въехать в программирование (ООП, паттерны)?

    @Wentixon
    Шаблоны проектирования с человеческим лицом
    К сожалению, не успел к началу вопроса, многое уже посоветовали, но эту статейку вроде не успели еще кинуть. Недавно нашел ее и просто поразился как просто и доступно это изложено + с примерами кода на php. Просто шикарный перевод великолепной статьи!

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

    Так что посоветую 2 варианта изучения.
    1) Тупо работаешь над сложные проектами, только действительно сложными, а не сайтиками на cms. И со временем ты начинаешь встречаться с проблемами. Тогда открываешь паттерны и тебе не придется даже как то их особо понимать, потому что это будет естевственно для тебя. Я думаю ты используешь ide вместо редактора кода. Но к примеру я помню тот момент, когда я пользовался саблаймом и знал, что есть ide, но я писал на тот момент простые вещи и когда мне говорили, почему я не юзаю ide, ведь в ней столько всего, я не понимал их потому что мне и саблайма за глаза хватало. Но пришло время, когда надо было то и се и саблайма стало мало. И тут открываю ide, а там уже есть все необходимое и думаешь в такие моменты, как я раньше этим не пользовался. А дело в том, что раньше и не надо было. Может неудачный пример, но вы поняли ) Конечно, этот вариант изучения не совсем реален, по скольку сложный проект еще найти надо, да еще попасть в команду, которая не говнокодит, так как и крупные проекты бывают достаточно плохо написаны. Но можно как вариант к примеру делать свою cms и применять в ней как можно больше паттернов.

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

    Также советую четко понять uml диаграммы. Таким образом, чтобы освежить паттерн вы не будете читать примеры, а просто посмотрите диаграмму и сразу вспомните, зачем он нужен и как его можно реализовать.
    Вот пожалуй и все
    Ответ написан
    1 комментарий
  • В сторону какого ЯП для web смотреть с дальнейшей перспективой?

    Привет

    1) В странах СНГ и Европы самый популярный веб-язык: PHP. На Ruby и Python - работы значительно меньше, и она в столицах. Живешь не там - даже можно не учить.
    2) С Python в другие области, ты особо не уйдешь, ибо там либо биг-дата, либо девопс, либо тесты (но там еще и Java нужна), так что все области специализированные - https://habrahabr.ru/post/340894/
    3) Ruby - в США Ruby любят, у нас же его использовали во время хайпа 2008-2012 годов всякие туристические стартапы, сейчас же его особо не юзают (Вакансии чаще всего в компании, как раз из этих 2008-2012 годов).
    4) Я свои проекты пишу на Python (так как быстро и клево), а деньги получаю за Java (так как платят много и работы много).

    Ну а вообще, если у тебя более менее адекватный it-универ и it-специальность, то шел бы в .net/java, потом через стажировку устраивался в большую компанию и не парился особо. Если просто хочется в IT, то брал бы PHP - с работой будет попроще.
    Ответ написан
    Комментировать
  • Что отличает freelance программиста от корпоративного?

    Тут сложный момент. Не рискну говорить за всех, но расскажу о своём личном опыте и опыте моего друга.
    Мне на данный момент 33 и я всю жизнь проработал в офисе, никогда ни одного дня не фрилансил. Хотя понимаю, что во фрилансе больше денег. Но. Находясь в офисе ты находишься во взаимодействии с коллегами, а значит возможен очный обмен опытом, который, как ни крути, более интенсивен и более значим, нежели заочное общение на форумах. Просто потому что очно общаться проще и продуктивнее. Кроме того, для фриланса важна сильная самодисциплина: слишком много дома есть отвлекающих факторов и, лично мне, трудно находясь дома сосредоточиться на работе; далее, я разделяю среду обитания: на работе я работаю, а дома я отдыхаю. Ввиду таковой психологической установки мне трудно дома переключиться на рабочий режим. Ну и плюс к этому, о доходе в полмиллиона деревянных мне можно лишь мечтать, но меня деньги не интересуют как таковые, а потому мотивацией являются не деньги, а делание полезного и большого продукта, т.е. относительно маленькие проекты (с ограниченным сроком разработки и поддержки) меня не интересуют. Потому я всегда работал в ай-ти-шных интернет-компаниях над большими проектами, но никогда не рассматривал возможность трудоустройства в студию.

    Далее про друга. Он фрилансит уже более 10 лет. И, когда начинал, то немного троллил на тему "а я вот не работаю на дядю". Спустя 5 лет, он понял, что всё-таки работает. Но только на много разных дядь.
    Далее, есть момент в сложности самообразования: когда он не взаимодействует с большим коллективом таких же умных людей, то обмен опытом происходит гораздо слабее (писал выше), а потому знания необходимо самостоятельно подчерпывать из разных источников (хабр, англоязычные статьи, книжки, блоги умных разработчиков, и т.д.), но вот ведь вопрос: а когда это всё читать?, и каким образом это можно опробовать (если только не вести собственный(ые) опен-сорс проектики)? А значит, если нет жажды знаний, то варясь в зафиксированном стеке технологий начинается профессиональная стагнация. На что друг стал жаловаться мне 3 года назад: он понял, что очень много не знает, что появилось много нового и интересного, но он из-за того, что "просто решал прикладные задачи конкретного заказа" пропустил это всё. Было интересно за ним наблюдать, когда рассказывал ему про Git, DIC, модульное тестирование и т.д. --- то были удивлённые глаза ребёнка.
    Кстати, о детях. Упомянул выше, что для фриланса нужна сильная самодисциплина. У него тоже было такое: когда начал фрилансить, то он уже жил с девушкой (ныне женой) и она никак не могла понять почему нельзя отвлекать: ну вот же он!, что такого, чтобы помочь что-нибудь сделать по дому по-быстрому (например помыть посуду или вынести мусор): работа ж не убежит?, а что такого, чтобы подойти и спросить что он хочет на ужин? В конечном итоге проблема решилась тем, что договорился с ней о том, что в период с 2-х часов дня до 6-ти часов вечера, она к нему даже близко не подходит, не спрашивает, не отвлекает и вообще старается не шуметь. Вроде, всё стало хорошо... пока не родился ребёнок, а вот там уже не объяснить ребёнку, что папа работает и не надо мешать. Поэтому всё закончилось тем, что он снял комнату в офисе и теперь каждый день, как и многие другие люди, ездит работать в офис.

    Собственно к чему я это всё. И там и там есть плюсы и минусы. И каждый находит и занимается тем, что ему интересно, к чему больше лежит душа.
    Но лично я с большой настороженностью отношусь к найму фрилансеров в штат компании лишь по одной причине: если недостаток знаний всегда можно восполнить общением и обучением, то вот с коммуницированием возникают (по моему опыту) значительные проблемы: нежеление (а иногда и саботаж) в части принятия используемого код-стайла; нежелание исправлять замечания, оставленные во время код-ревью; притаскивание сторонних говно-библиотек без необходимости; нежелание писать модульные тесты; а в отдельных случаях, даже эгоизм. При этом, уточню, что это относится не ко всем! Далеко не ко всем! Во всей моей практике такое было лишь дважды и то были молодые фрилансеры. Так же замечу, что опытные фрилансеры (ввиду большего жизненного опыта) гораздо спокойнее и легче вливаются в команду (такие тоже приходили и у меня был опыт работы с ними).
    Ответ написан
    2 комментария
  • Как стать Junior Java Developer, имея немалый опыт разработки на этом же языке?

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

    Пишешь резюме, указываешь свой опыт, идешь на собеседование:

    1) Либо тебя берут
    2) Либо тебе говорят, что бы безрукий мудак (уточняешь почему).

    Учишь, тыкаешь то, где у тебя были проблемы - повторяешь снова.

    Если ты не конченный тип, то одной книжки по языку и один учебный проект(который ты делал сам примерно месяц) достаточно для того, чтобы тебя взяли джуном на работу.
    Ответ написан
    Комментировать
  • Как лучше всего выполнить задание на должность Junior QA?

    Привет.

    1) У тебя должно быть по итогу два документа: Тест-план и Тест-кейсы (табличкой). Их ты сможешь сделать, если прочитаешь базовую теорию по тестированию софта. Обычно тест-план занимает одну страничку, а тест-кейсы содержат от 5 до 10 страничек на собеседованиях.

    2) Надеюсь, ты у них спросил какие они дают тебе ограничения по тестированию игру. Так как при тестировании игры в вакууме, получается такой же "вакуумный ответ". Поэтому, хорошо бы выписать все спорные и пограничные моменты, которые у тебя есть, и уточнить их у продакта (того, кто тебя собеседует). Это любят на собеседованиях, так как если ты этого не спрашиваешь, они понимают, что ты в этом вообще ничего не шаришь.

    3) Не делать тупую ошибку - пытаться ломать игру с самого начала. Твоя задача для начала проверить, что игра работает правильно (согласно требованиям), потом проверить пограничные случаи, а только потом делать негативные тесты.
    Ответ написан
    1 комментарий