Более того, ни компоновка схожего функционала в одном месте, ни разнесение функционала над каким-то типом в различные части программы(неправильное использование которого как раз приводит к размазыванию и создаёт проблемы) не противоречат инкапсуляции и не обязательно её подразумевают. Это уже проблемы God Object, Single Responsibility и т.д.
Ну вообще всё описанное про Воронеж в статье — бред сивой кобылы. Там достаточно фирм в которых будучи миддлом можно получать шестизначные суммы в месяц. И спрос достаточен. Так что если автор не из этого города, «условный» был выбран крайне неудачно.
Ах да, в статье нет вообще ничего про аутсорс компании, в которых наиболее вероятно найти такой доход.
Поэтому за разобраться в теме «2» и на пересдачу.
Да и вообще скрытый посыл статьи выглядит как «я посредственный айтишник в своём городе, почему меня не считают царём?».
Ну а теперь по теме:
1) Если у вас в городе нет хороших айти компаний и мало хороших вузов, готовящих программистов, то лучший вариант уезжать и это правда.
Второй вариант это удаленка, но учиться всему будет сложнее и конкурировать тоже. Так что готовьтесь тратить огромное количество своего времени на прокачку необходимых hard и soft скиллов. И да, если вы справитесь, вы точно будете в 5% жителей с максимальным доходом в этом городе. Но я бы рекомендовал первый вариант, к примеру в тот же Воронеж.
2) Если айти в вашем городе достаточно развито(как например в Воронеже), то у вас есть гораздо больше вариантов. И если вы не из тех, кто хочет ничего не делать и получать зарплату, то прокачивайте свои навыки и выбирайте путь, который вам подходит(остаться, переезд или удаленка).
И хочется ещё сказать, что для начинающих программистов возможность учиться и прогрессировать куда важнее стартовой зарплаты, ибо через два-три года вы скорей всего окупите недополученную разницу и уйдёте в сильный плюс.
Хотел было высказать свою точку зрения, но поймал себя на мысли, что в подобных дискуссиях зачастую люди хотят, чтобы было удобно именно им(зачастую, чтобы потешить самолюбие) и судя по всему считают эти идеи объективными.
Мои 5 субъективные копеек по теме:
Практически не читаю письма рекрутов, когда захотел сменить работу последние 2 раза — сам просмотрел доступные варианты, нашёл компанию, которая устраивает, написал им и в итоге устроился туда. С трудом представляю зачем бы я стал разгребать письма от каких-то случайных рекрутов кроме как от скуки.
Я бы сказал, что «идеальный» язык программирования должен быть минималистичен, но при этом иметь четкий и однозначный синтаксис. Большинство удобных синтаксических штук должны подключаться с помощью расширений. К примеру вам нужно много классных математических функций — подключили расширение и решаете математическую задачу.
Нужна вариантность — подключили и её. Функциональные фишечки — пожалуйста. И т.д.
Возможно что-то нужно будет встроить в язык, но в большинстве задач без этих вещей можно жить и не совсем понятно зачем перегружать ими разработчиков без нужды.
Более того такой подход позволит решать задачи из разных областей, а явное декларирование позволит разработчику, не читая код, понять, какие знания ему нужны для понимания данной программы.
Честно говоря, я бы не рекомендовал ребёнку или несведующему родителю читать эту статью.
Я не могу дать прям вот идеальных советов для айти образования, но вижу одну огромную ошибку в этом всём: на протяжении где-то 11 лет обучения вы не предлагаете ребёнку (и студенту) хоть как-то понять, чем он на самом деле будет заниматься и какие результаты получать.
Иными словами всё это звучит как «выучи A-Z и тогда ты станешь программистом». Более того, вы советуете постоянно бывать на олимпиадах, а это скорей путь «научника», потому как результаты своей работы ребёнок будет видеть только в виде оценок в тесте. А работа программиста это построение программ, в том числе решением алгоритмически трудных задач, но не только.
На дворе 2019ый, есть масса простых способов сделать простые программы далеко не продвинутым программистам. Ребёнок, увлечённый игрой и понимающий, как сделать простой калькулятор урона, будет с большей радостью впитывать информацию о построении приложений и о математике, чем ребёнок, которого заставляют в 50ый раз считать данные из текстового документа и получить ответ.
Вспомните свою эйфорию от того, что программа запустилась и правильно работает, а теперь помножьте её на эффект увлечённости. Так и получится человек, который хочет в работать в этой сфере. Он будет тратить гораздо больше своего времени на это и получить гораздо лучшие результаты. И для работодателя он будет выглядет не как раздолбай кое-как закончивший айти факультет, а как талантливый и перспективный работник, которого хочется нанять.
И что более важно, что при таком подходе подросток лет 15-17 в своём 9-10 классе сможет понять, а нравится ли ему вообще создавать программы или это скучная штука и надо поискать альтернативы. Я видел много студентов у которых такая возможность возникала только ко 2-3 курсу и было уже поздно что-то менять. Они оставались в айти сфере и находили себе работу не программистом, но будь у них такая возможность на 5 лет раньше, они могли бы сделать более удачный выбор имея гораздо больше времени.
Резюмируя: не в образовательных учреждениях счастье, куда важнее раньше понять, чем хочешь заниматься.
16 гигов на смартфоне хватает с трудом, думаю 32 оптимально и больше не надо. Хотя для тех, кто слушает музыку или весь в Instagram, вероятно нужно будет больше.
Впрочем здесь сделаю ремарку, что для домашнего использования у меня планшет и сам смартфон мною используется достаточно редко.
Такая же конфигурация, только вот этот терабайт нечем забивать, всё в основном на внешнем жестком диске подключённом к роутеру. Но в целом по-моему это оптимальная конфигурация для рабоче-домашнего ноута. Впрочем можно и 500 GB HDD иметь.
Вообще мне кажется только для разработки оптимальный выбор 500GB SSD без HDD, должно хватить на очень долгие годы.
Вспомнил про округление до кратных 5, точно, спасибо, память подвела. Её не было при использовании скриптованных способностей, что логично. А в стандартных была.
Кстати та табличка из первой доты судя по англоязычному источнику, то есть это как раз вероятности из варкрафта, полагаю в доте 2 они перенесены без изменений.
Вообще идея хорошая и легкореализуемая, но я не согласен (с информацией из статей), что на практике сложно использовать знания о таком рандоме, особенно в случае защитной способности.
Согласен, эмоции это вызывает негативные, но нужно понимать, когда какая механика эффективнее.
Уклонение имеет преимущество, когда урон неравномерный и есть источники, блокировка которых полностью выгоднее, чем просто уменьшение урона(ну или там какой-то эффект, который не пройдёт, к примеру оглушение).
Защита даёт преимущество при хорошей регенерации или вампиризме, когда нет критического урона, который может убить, несмотря на защиту.
В общем случае они должны быть равны при прочих равных.
Но в общем случае защита более предсказуема, уклонение даёт вероятность победить там, где с защитой точно нельзя. Выбрать вариант с меньшей дисперсией(то есть защиту) вполне рациональное решение в большинстве случаев.
Я бы не назвал вариант из доты хорошим. Судя по таблице работает неплохо это только для первых 20%, а дальше накапливается ошибка не в пользу игрока. Ещё одна вещь, которая не нравится, что наиболее вероятное N не всегда равно 1 / P. Хотя сама идея хорошая, просто надо лучше подстроить формулу.
И насколько мне известно в Warcraft 3 такой механики не было.
Помнится среднее из трёх случайных чисел высмеивалось как пример г-нокода с комментариями вроде «true random». А тут даже его применение описано.
Хороший анализ, но вы верно подметили, что зачастую имеет место быть схожая проблема.
Как видим, в итоге ничего общего с вероятностью 1 к 10000, но для целей геймплея этого, возможно, было достаточно. Хотя больше похоже на ненамеренное сокрытие реальных вероятностей от самого разработчика, что может приводить к неправильным решениям в будущих доработках программы.
Ещё у меня есть предположение, что часть подобных генераторов случайных чисел имеют определённые уязвимости, которые можно использовать. К примеру если при промахах повышается вероятность, то возможны ситуации стрельбы со слабого оружия/способности для набивания промахов, чтобы потом попасть сильным оружием/способностью с повышенной вероятностью.
Выглядит как необходимость расти вширь. Тут уже высказали пару идей про разделение на отделы и полный цикл разработки. Можно ещё самим начать дизайн делать.
Ну а если совсем круто — разработайте автоматический конвертер PSD(или какой-то другой формат) to HTML, сократите издержки и автоматизируйте бизнес.
Я не автор, но у меня встречный вопрос — а что вы хотите проверить этим? У каждого теста должна быть цель и ожидаемые результаты.
В общем случае это похоже на тест либо знаний, если вы просите олимпиадника реализовать известный алгоритм, либо на умение быстро искать решение в сжатые сроки при определённом уровне стресса. Данный тест скорей всего не имеет значение в 95% ситуаций, которые возникнут у кандидата на новом месте работы.
Амортизация железа и рабочего места на удаленке для позиции senior или middle скорей всего произойдёт незаметно на фоне зп. А вот тратить лишние 1-2 часа на добраться до офиса и из офиса вообще служит весомым аргументом просить в офисе зп минимум на 20-25% больше. Впрочем не всё измеряется деньгами, многим просто не хочется тратить на работу 45-50 часов времени вместо 40.
Читаю очередную статью о недостатках Go и со всем согласен. А где статьи о плюсах Go? Интереса ради бы почитал. Не считаю язык хорошим, но понять бы, что другие в нём находят.
Ах да, в статье нет вообще ничего про аутсорс компании, в которых наиболее вероятно найти такой доход.
Поэтому за разобраться в теме «2» и на пересдачу.
Да и вообще скрытый посыл статьи выглядит как «я посредственный айтишник в своём городе, почему меня не считают царём?».
Ну а теперь по теме:
1) Если у вас в городе нет хороших айти компаний и мало хороших вузов, готовящих программистов, то лучший вариант уезжать и это правда.
Второй вариант это удаленка, но учиться всему будет сложнее и конкурировать тоже. Так что готовьтесь тратить огромное количество своего времени на прокачку необходимых hard и soft скиллов. И да, если вы справитесь, вы точно будете в 5% жителей с максимальным доходом в этом городе. Но я бы рекомендовал первый вариант, к примеру в тот же Воронеж.
2) Если айти в вашем городе достаточно развито(как например в Воронеже), то у вас есть гораздо больше вариантов. И если вы не из тех, кто хочет ничего не делать и получать зарплату, то прокачивайте свои навыки и выбирайте путь, который вам подходит(остаться, переезд или удаленка).
И хочется ещё сказать, что для начинающих программистов возможность учиться и прогрессировать куда важнее стартовой зарплаты, ибо через два-три года вы скорей всего окупите недополученную разницу и уйдёте в сильный плюс.
Вообще мне кажется идеи и технологии развиваются гораздо быстрее понимания общества и это в большинстве своём даёт пугающие результаты.
Мои 5 субъективные копеек по теме:
Практически не читаю письма рекрутов, когда захотел сменить работу последние 2 раза — сам просмотрел доступные варианты, нашёл компанию, которая устраивает, написал им и в итоге устроился туда. С трудом представляю зачем бы я стал разгребать письма от каких-то случайных рекрутов кроме как от скуки.
И даже так не прокатит?
Нужна вариантность — подключили и её. Функциональные фишечки — пожалуйста. И т.д.
Возможно что-то нужно будет встроить в язык, но в большинстве задач без этих вещей можно жить и не совсем понятно зачем перегружать ими разработчиков без нужды.
Более того такой подход позволит решать задачи из разных областей, а явное декларирование позволит разработчику, не читая код, понять, какие знания ему нужны для понимания данной программы.
Я не могу дать прям вот идеальных советов для айти образования, но вижу одну огромную ошибку в этом всём: на протяжении где-то 11 лет обучения вы не предлагаете ребёнку (и студенту) хоть как-то понять, чем он на самом деле будет заниматься и какие результаты получать.
Иными словами всё это звучит как «выучи A-Z и тогда ты станешь программистом». Более того, вы советуете постоянно бывать на олимпиадах, а это скорей путь «научника», потому как результаты своей работы ребёнок будет видеть только в виде оценок в тесте. А работа программиста это построение программ, в том числе решением алгоритмически трудных задач, но не только.
На дворе 2019ый, есть масса простых способов сделать простые программы далеко не продвинутым программистам. Ребёнок, увлечённый игрой и понимающий, как сделать простой калькулятор урона, будет с большей радостью впитывать информацию о построении приложений и о математике, чем ребёнок, которого заставляют в 50ый раз считать данные из текстового документа и получить ответ.
Вспомните свою эйфорию от того, что программа запустилась и правильно работает, а теперь помножьте её на эффект увлечённости. Так и получится человек, который хочет в работать в этой сфере. Он будет тратить гораздо больше своего времени на это и получить гораздо лучшие результаты. И для работодателя он будет выглядет не как раздолбай кое-как закончивший айти факультет, а как талантливый и перспективный работник, которого хочется нанять.
И что более важно, что при таком подходе подросток лет 15-17 в своём 9-10 классе сможет понять, а нравится ли ему вообще создавать программы или это скучная штука и надо поискать альтернативы. Я видел много студентов у которых такая возможность возникала только ко 2-3 курсу и было уже поздно что-то менять. Они оставались в айти сфере и находили себе работу не программистом, но будь у них такая возможность на 5 лет раньше, они могли бы сделать более удачный выбор имея гораздо больше времени.
Резюмируя: не в образовательных учреждениях счастье, куда важнее раньше понять, чем хочешь заниматься.
Впрочем здесь сделаю ремарку, что для домашнего использования у меня планшет и сам смартфон мною используется достаточно редко.
Вообще мне кажется только для разработки оптимальный выбор 500GB SSD без HDD, должно хватить на очень долгие годы.
Вспомнил про округление до кратных 5, точно, спасибо, память подвела. Её не было при использовании скриптованных способностей, что логично. А в стандартных была.
Кстати та табличка из первой доты судя по англоязычному источнику, то есть это как раз вероятности из варкрафта, полагаю в доте 2 они перенесены без изменений.
Вообще идея хорошая и легкореализуемая, но я не согласен (с информацией из статей), что на практике сложно использовать знания о таком рандоме, особенно в случае защитной способности.
Уклонение имеет преимущество, когда урон неравномерный и есть источники, блокировка которых полностью выгоднее, чем просто уменьшение урона(ну или там какой-то эффект, который не пройдёт, к примеру оглушение).
Защита даёт преимущество при хорошей регенерации или вампиризме, когда нет критического урона, который может убить, несмотря на защиту.
В общем случае они должны быть равны при прочих равных.
Но в общем случае защита более предсказуема, уклонение даёт вероятность победить там, где с защитой точно нельзя. Выбрать вариант с меньшей дисперсией(то есть защиту) вполне рациональное решение в большинстве случаев.
И насколько мне известно в Warcraft 3 такой механики не было.
Помнится среднее из трёх случайных чисел высмеивалось как пример г-нокода с комментариями вроде «true random». А тут даже его применение описано.
Хороший анализ, но вы верно подметили, что зачастую имеет место быть схожая проблема.
Ещё у меня есть предположение, что часть подобных генераторов случайных чисел имеют определённые уязвимости, которые можно использовать. К примеру если при промахах повышается вероятность, то возможны ситуации стрельбы со слабого оружия/способности для набивания промахов, чтобы потом попасть сильным оружием/способностью с повышенной вероятностью.
Ну а если совсем круто — разработайте автоматический конвертер PSD(или какой-то другой формат) to HTML, сократите издержки и автоматизируйте бизнес.
В общем случае это похоже на тест либо знаний, если вы просите олимпиадника реализовать известный алгоритм, либо на умение быстро искать решение в сжатые сроки при определённом уровне стресса. Данный тест скорей всего не имеет значение в 95% ситуаций, которые возникнут у кандидата на новом месте работы.