Может кто-нибудь объяснить чем перевод денег с использованием того же payapl отличаться будет от всяких таких супер-дрюпер платформ внутри соц сетей?
Ведь алгоритм в итоге одинаковый:
Paypal или другая система:
1) Бановская карта
2) На неё положить деньги
3) С неё деньги перевести в на личный счет (возможно автоматически для payapl) системы платежей
4) ещё одна карта для снятия денег
Соц. сеть
1) Банковская карта или терминал пополнения
2) на неё положить деньги но через API соц сети
3) С неё деньги перевести на на счет соц. сети или привязать карту к аккаунту соц. сети
4) ещё одна карта
В чем суть? Вот например фишка палки была в том, что она деньги возвращала, если на ebay продавец тебя кидал.
А что платить через western что через палку разница только лишь в процентах комиссии. Тогда нафига ещё одна система платежей?!
К тому же законодательство всех стран сейчас регулирует всякие там переводы и банковские карты. Революция возможна только, если это новый подход, который уберёт неудобства при существующем регулировании (не понятно, правда, какие неудобства).
Это здорово когда показывают на графиках рост и тренды. Но показывайте всю картину — например:
1. Уровень расходов на рекламу (а не уровень роста) на ТВ, в инете и через мобильные приложения. Абсолютные значения.
2. Уровень конверсии от каждого из видов рекламы.
3. Рост конверсии.
А то какой смысл обсуждать бурный рост со 100 до 150 и говорить — «это ж рост аж на 50%», в то время, как при росте всего в 2 процента расходы на ТВ рекламу будут составлять 1000 000 000. Слон и моська получается.
Ну да, конечно :) Все такие рыволюционеры в 404 валят, там свобода, демократия война и дефолт. Там 3 года назад тоже власть готовились менять и сразу в рай… нуну
И большинству людей ваших блокировки фейсбуков до одного места. Прости, друг, но вы, белоленточники — не большинство. Я бы даже сказал критическое меньшинство которое очень громко кричит.
объясните мне пожалуйста, как так получается, что согласно всем вашим выводам рубль почти на 97 коррелирует с ценой на нефть.
Напрашивается вывод, что мы только нефть и продаём, как какой-нибудь Оман. У которого, кстати, цена волюты не изменилась так сильно согласно вашей же логике при падении цены на нефть в 2 раза. Но если посмотреть на структуру нашего экспорта то совсем другая картина.
В страны СНГ это ~30% (данные за 2013 год, зато структура расписана) при этом доля других продуктов примерно 45%
Доля экспорта нефти и газа в дальние страны — 43% доля других продуктов примерно 18%
Уголь, кокс и др. миниралы мы не берём, ведь доказывается гипотеза зависимости рубля от нефти аж на 97%
Иными словами, реальная доля экспорта нефти в районе 40%, (да хоть все 80), каким образом корелляция на уровне 97% а не 60-70%?
Может всё-таки не стоит искать математику там, где не так много, как кому-то хотелось бы? А то ещё и формирование цены на золото захочется назвать рыночной.
Не выдумывайте свои законы. Паспорт РФ не сдаётся (а вот на украине сдаётся, да). У меня у матери, выехавшей на ПМЖ 2 паспорта — загран и внутренний.
Более того, я, имя только загран и находясь на коснсульском учёте могу приехать в любое отделение ФМС и получить внутренний паспорт, если такой мне ранее не выдавался (в 14 лет жил за границей на ПМЖ и поучил только загран). Что я и успешно и проделал, правда в возрасте 16 лет (т.е. даже позже срока)
+ закон видел своими глазами.
— А чем мы дуем заниматься?
— Будем менять наши деньги на бекдоры и закладки в ваших приложениях.
— А как мы это назовём?
— Инвестициями в ИТ, разумеется.
вычитка из одномерного массива занимает время О(1) при обращении по индексу. Даже когда у вас закончатся разрядность double и придётся читать цифры из строк спец. массива, то все равно там будет использоваться индекс и время доступа будет О(1).
Подобный пример, кажется у кнута был с поиском номеров телефонов за очень быстрое время. Где номер ячейки памяти был равен номеру телефона. Создавая по такому принципу все будет ок.
Я ничего не понимаю. У вас юристы какие-то бестолковы что ли?
Доказывается владение сайтом элементарно:
1. В присутствии юриста делаются нотариально заверенные скриншоты того, что вы вошли в учётку к регистратору и там указана ваша ФИО.
2. Вызывается эксперт и ставит свою подпись, что технически вы всё сделали правильно.
Сроки по заочным решениям восстанавливаются аж жуть как легко и быстро. Особенно, когда ненадлежащий ответчик. Или не было надлежащим образом уведомлено лицо. Как это доказать? На свою почту идёте и требуете вашей подписи в получении заказного письма из суда. Таковой, разумеется, нет, а значит и уведомления не было.
Оспаривать то решение вообще не нужно, потому что вы не сторона по делу. Нужен новый иск и не против пятигорской прокуратуры, в свою региональную: иски против гос-ва подаются по месту регистрации, а не по месту всяких там прокуротар. Вот если бы они против вас подали иск то ещё было бы о чём говорить.
На всё на это пишутся просто тонны жалоб во все инстанции от ФСБ и внутренней безопасности (пофиг на регламент и подчинённость), коллегии адвокатов, коллегии судей, начальника суда и до администрации президента (сколько раз обращался, всегда толк был) и федеральных ТВ каналов, газет и депутатов. И упирать нужно именно на незаконные действия прокурора и судей 1ой инстанции. Апелляция, которую рассматривает тот же судья — это просто жесть. После такого залёта можно ставить вопрос о лишении судьи мантии.
Какая-то неправильная стратегия выбрана у ваших адвокатов. Такое, кстати, часто бывает (в т.ч. и у меня). Мало толковых юристов, но все юристы думают, что они советуют правильно, а на самом деле часто это просто бред. А они научились нести с умным видом даже полную чушь. Удачи вам побороть этих коррупционеров.
Эти слова да Богу в уши…
Все просто:
нужно быстро закрыть вакансию и срубить бабла, пришло 100500 резюме, по резюме определить что-то, кроме списка навыков не реально. Можно, конечно, самообманом заниматься, что мол по резюме можно что-то предугадать. Можно даже потом под ответ подогнать, но это только самообман.
Отберут десяток резюме и на ковёр к директору, который будет излучать своё превосходство.
Везде так кроме ИТ и то, потому что айтишников не хватало до кризиса.
Быстрая и удобная разработка для SmartTV с существующей бидлиотекой контролов для теликов. Хотя enyo позиционируется себя как супер кросс-платформенный фреймворк, поддерживает windows 8 app и мобильные платформы. LG, например. прямо рекомендует enyo.
Фреймворк достаточно легковесный и легко кастомизируется.
Как же я запарился работать с говнокодом после вот таких вот «практиков». Ведь именно все проблемы от этих ваших «давайте здесь сделаем проще, без ООП и SOLID» потом боком выходят следующим разработчикам. Одни сплошные менджеры, хендлеры и хелперы. Всюду. Логика размазана по слоям. Шаблон Specification? нет не слышал. Зато сделано 100500 if и switch. Слои? CQRS? изолированный домен? Та ну нах. Хендлеры и менджеры рулят! «Макконел, Фаулер, Эванс?» Ну да, что-то такое слышал про второго из них". и тут же «знаешь, ООП это не панацея». Писать говнокод — вот что плохо. Потому что кому-то потом с этим работать. Кому-то читать, офигевать, угадывать.
А ещё можно твердить, что у вас extream programming и код самоописуем, но при этом городить 3-4 экрана строчек кода в одном методе. Не знать, когда писать комментарии к коду (подсказка: для классов, публичных методов, в местах фикса багов и в местах, где нужно краткое пояснения почему так, а не иначе) и вообще их не писать. При этом покрытие юнит-тестами стремится к 0. Contineous Integration? Только на собираемость проекта. Dependndency injection? Да, есть зачем-то. Только не ясно зачем( юнит-тесто же не пишем как следует, время, ай ай ай). А писали бы, сразу архитектурные косяки повылезали бы.
После быстрого хотфикса, да даже в случае просто некачественного кода поддержка его сжирает в 100500 раз больше времени. Если он не покрыт тестами, то его рефакторинг просто становится опасен. Если нет интеграционных тестов, то регресс-тестинг становится невероятно утомительным и всё падает. Если не следовать SOLID а только всяким приколам с ИТ конференций в духе KISS или DRY то получаем всё тот же говнокод, который теперь почему-то считается kissed and dry. И считается только лишь самим автором. А оценивать-то должен тот, кому с этим кодом разбираться.
А ещё время сокращает гордое заявление об отсутствии у проекта документации, потому что код самоописуем. Нет, я приемлю такое, но где код самоописуем? Где?!
За 7 лет разработки на 10+ проектах мне приходилось встречать и местных гуру, которые с энтузиазмом дебажат исходники .net но с трудом понимают, как писатьк код так, чтобы его могли использовать другие без пол литра. И нормальных разработчиков( человек 5 всего), которые пишут код так, что читаешь его как открытую книгу и всё понятно. Даже система безопасности, даже если ты джуниор и никогда её раньше не видел.
Я понимаю всю озабоченность расп… ом программистов. Хабр и ЯП на на другом мониторе, когда мало времени — зло. Но давайте не скатываться в откровенный непрофессионализм и писать плохой код Парень из исповеди 1 просто должен потерпеть пару тройку лет, пока его не будут воспринимать как джуна. Это чисто психологический момент. Ну и стоит ему свои слова пару раз подтвердить цитатами из книг. И да, ему попались откровенные говнокодеры с большим опытом сидения в одном проекте.
Но больше всего меня удивил вывод:
"- Меньше классов, меньше функций, меньше кнопок, меньше связей и вообще — меньше.
— Не пишите обобщенную функцию, если её функционал не встретился минимум три раза в разных местах.
и т.д."
потому что хороший код и не предполагает этого. Как бы все выводы-то логичны. Потому он и хорош, выверенный, оттестированный и проверенный.
PS разберитесь и освойте наконец-то работу с предметной областью и шаблоны проектирования. И тогда каждый новый разработчик будет на много быстрее вливаться в проект, а правки будут вноситься легко и непринуждённо.
два высших: магистратура (комп. системы и сети) и специалист (менеджмент и экономика предприятия). Как и планировал, оба образования пригодились. И даже дипломы.
Мда… я не очень силён в рынке Украины, но судя по DOU у нас здесь всё просто — все работают на аутсорс иногда с с элементами аутстафа в ИТ-гигантах по 2-3к человек в компании. И есть сотня фирм поменьше. Редко кто занимается своими продуктами. Честно говоря, все описанное, а особенно собственные ORM 1999 года меня крайне напугали. Теперь понимаю, что грех жаловаться на говнокод от америкосов, когда есть ещё «безопасник-вахтёр»
Кстати, автор, последний пункт «Фирмы, сдающие персонал в аутсорс» это, судя по описания out-stuff когда фирма предоставляет своего «сотрудника» другой компании и он почти полностью подчиняется той компании (почти как работорговля). А аутсорс это когда фирма получает заказ от компании и сама решает, как реализовать бизнес-задачу, у вас это идёт под «Фирмы-оффшорные разработчики».
При отказе от конструкторов, как и при любом отходе от инструкций на производстве возникают и проблемы, которые приходится решать уже не вам. Как говорил один мой знакомый программист: «Какая тебе разница, не тебе же поддерживать этот сайт?! Говнокодь по-быстрому». Пример проблемы:
— блин, почему у меня здесь падает?
— А блин, пришёл объект у которого почему-то поле сумма или дата пустые.
— А почему они пустые?
— Потому что в БД пустые.
— А может быть сущность «платёж» в бизнесе пустым? Думаю что нет.
— конечно не может
— а как так случилось? А при создании платежа и его сохранении мы забыли проверить дату (или где-то в логике изменили) и там null (или что-то ещё неприемлемое)
и на выяснение всего этого могут уйти сутки, а вот на кодинг через конструктор на 30 секунд больше, чем через параметры
несмотря на то, что да, EF не умеет использовать параметризованный конструктор (надеюсь пока) и использует виртуальные паля во время создания абстрактной сущности на основе данных БД это не является правильным подходом согласно той концепции для которой и нужно абстрагирование. Сущность должна быть создана с помощью фабрики (агрегат) или фабричного метода (сущность или value object). Именно так гарантируется то, что сущность будет создана лишь в том случае, когда все необходимые ей поля и свойства, а главное, сочетания свойств были иницализированы одновременно и правильно. Это можно проверить лишь в конструкторе. Если же создавать объекты через свойства, то нет гарантии, что два одновременно необходимых поля (например сумма и дата) были в обязательно порядке иницализированы предыдущим разработчиком ранее в коде или некой частью системы. Тем более откладывать эту задачу на базу данных в корне не верно, потому что ОРМ есть механизм отсоединения от конкретного источника данных и разные источники могут возвращать разные результаты.
Присвоение свойств это крайней степени удобный и популярный, но всё же говнокод, который увеличивает скорость разработки (незначительно) и сильно уменьшает надёжность. Особенно, когда приходят в команду новые члены, которые не знают, что сумма и даты должны быть инициализированны непременно вместе или сущность не должна быть создана.
Даже сами гуру проектирования типа фаулера крайне осторожно относятся к пратике POCO\POJO объектов так как это типичный антипаттерн. И На мой взгляд его можно использовать исключительно для DTO объектов, но точно не сущностней уровня доменной модели. Об этом говорит Domain Driven Design.
Итого:
1) EF и другие ОРМ не позволяет использовать конструктор, заменяя всё виртуальными свойствам и POCO объектами, что есть неверно.
2) Доменный объект должен быть создан только через параметризированный конструктор, где будут произведены необходимые проверки и гарантируется целостность объекта (сущности или агрегата)
3) POCO объекты допустимы только для транспортных объектов (DataContract в сервисах, Model и ViewModel в MVC.).
4) Использование anemic model (POCO ) для доменных сущностей является антипаттерном для DDD да и вообще Фаулер его таковым считает и не любит. А наличие ORM уже говорит, что вы пытаетесь абстрагировать слой доменной модели от слоя данных фактические используете DDD и скорее всего будете реализовывать репозитории.
5) POCO подход крайне сильно распространён и в итоге только мешает. Для говнокодерства «по 5 тасков за день» отлично подходит. Проблемы начинаются через 3-4 месяца разработки, при тестировании, при поддержке, смене источника данных (например на сервисы) и т.д. подход DDD, а не Transaction Script в котором anemic model чувствует себя как рыба в воде.
а все, кто мог бы ответить в рид-онли да и смысл говорить с теми, кто ни в чем не сомневается, кроме этого своего виртуально мира, но активно и неаргументированно негодует в карму. Хабр изрубил на корню любую возможность дискуссии и диалога, хотя здесь и так сообщество слишком вырожденное — только инженеры. А вопросы слишком обще-социальные. Люди, которые выступают якобы за свободу, считают себя в той или иной степени либералами по-сути своей являются теми ещё тоталитаристами. Варятся в котле своего мировоззрения, считая себя экспертами во всём: разведчиками, политологами, специалистами по терроризму, религиям, психологии, законам, судебной практике — по всему. Вот такая она свобода: всё что касается только меня — разрешить, а что касается других — можно и запретить.
автор, это исключительно проблемы HR и 25 летних архитекторов, которые знают МТ, но не знают, что будет когда их архитектора из Visio упадёт под нагрузкой жалких 200 пользователей. Просто на хабре мало людей вашего возраста, потому и советы такие — копать в глубь, быть супер крутым и т.д. Это, к сожалению, тоже не поможет. У меня родственница мега-специалист с колоссальным опытом в пищевой промышленности(инженер-технолог). Её продукцию знает и продолжает покупать уже 15 лет целый регион. А запуск линии Pepsi в России в 90-ые думаете о чём-нибудь говорит работодателю после строчки «возраст: 49»? Да фиг там. Часто даже до собеседования дойти не может с правильно составленным резюме. Это вам не ИТ, где программистов как горячие пирожки разбирают. А если доходит, то все технические руководители в приятном шоке и готовы двумя руками за (бывали и случаи, что просто зависть, что он знает больше), зато какая-нибудь бизнес-леди-директор говорит «хм, слишком старая, коллективу будет не удобно с ней работать» или «ну мы вам можем предложить 50к(в мск) и 6 дней в неделю». Просто в вашем случае это выражается в эфемерных и точных знаниях реализации сортировок, которые в 99% не нужны, кроме случаев когда текущий уровень сортировки и есть bottlenet. И по сути являются вопросами, которые задают людям без опыта — выпускникам. Не спросить же их о проблемах архитектуры и способах решения. Выход один — продолжать искать адекватного работодателя. И выучить уже это ООП, тьюринга и многопточность. Задачи везде повторяются на собеседованиях.
у вас проводится ежегодная аттестация всех сотрудников? Это не та, что с айчарочками и руководителем обсуждаем хорошо или плохо работает Вася. А независимая одинаковая для всех работников(но разная для специализаций и должностей, разумеется) и в присутствии представителя профсоюза, чтобы не было травли работники типа «почему ты не сделал задачу за 2 часа, а только за 2 дня». Это напоминает экзамен на заранее известные темы, знание законов и т.д. в виде теста.
По итогам такой аттестации можно уволить работника. Только попытку затравить он с лёгкостью обжалует, пригласив независимых экспертов и докажет, что согласно его уровню опыта и квалификации он сделал всё, чтобы задачу сделать в срок.
А если он смотрит контактик, а не работает, то придётся фиксировать на фото и видео, потом по каждому случаю составлять протокол о нарушении трудовой дисциплины (если просмотр сайтов в рабочее время под этот пункт подходит, вроде там только пьянки и прогулы). За систематические нарушения можно выгнать.
А так, если хочется уволить кого-то да предупредите за 2 месяца, выплатите компенсацию, отпускные и отпустите на все 4 стороны… хотя нет. Вы ещё должны помочь его трудоустроить в др. компанию. У него же семья, детишки голодать могут начать. Работодатель должен быть соц. ответственным.
PS раз работник работал хорошо, а потом перестал, то это на 99% ваша вина.
1. Ему платят значительно меньше, чем на рынке и он это понимает
2. Ему дают задачи от которых он не видит отдачи и не видит в них смысла.
3. Его инициативу подавляли и теперь ему не хочется ничего предлагать. Люди разные бывают. Один раз отказал без повода, он больше и не предложит.
4. У него реальные проблемы дома в семье и нужен просто отпуск, чтобы их решить.
5. Он не видит обратной связи о своей работе, публичного признания заслуг или диалога между начальством и подчинённым. Чувствует себя винтиком система, хотя это не подходит его стереотипу.
А так, у вас была возможность его проверить на собеседовании на испыт. сроке. Если он специалист, то привлечь его к эффективному труду задача его руководства, в т.ч. и топов, как основных стратегов проекта.
нашим архитекторам тоже так не казалось. Куча таблиц (100, 200 — хз. очень много), которые благодаря джоинам покрываются локами и вешают базу, малоселективные индексы на битовые поля, вьюхи из вьюх и логика в хранимках — этот ад не справился с нагрузкой после релиза. А проект на 60 человек и большая фин система.
Проективровать базы нужно не на бумаге
Вторая система которую поддерживаю — партнёрка для рекламы. Те же грабли. На локальной машине выборки 500 записей по 20 секунд.
Ведь алгоритм в итоге одинаковый:
Paypal или другая система:
1) Бановская карта
2) На неё положить деньги
3) С неё деньги перевести в на личный счет (возможно автоматически для payapl) системы платежей
4) ещё одна карта для снятия денег
Соц. сеть
1) Банковская карта или терминал пополнения
2) на неё положить деньги но через API соц сети
3) С неё деньги перевести на на счет соц. сети или привязать карту к аккаунту соц. сети
4) ещё одна карта
В чем суть? Вот например фишка палки была в том, что она деньги возвращала, если на ebay продавец тебя кидал.
А что платить через western что через палку разница только лишь в процентах комиссии. Тогда нафига ещё одна система платежей?!
К тому же законодательство всех стран сейчас регулирует всякие там переводы и банковские карты. Революция возможна только, если это новый подход, который уберёт неудобства при существующем регулировании (не понятно, правда, какие неудобства).
1. Уровень расходов на рекламу (а не уровень роста) на ТВ, в инете и через мобильные приложения. Абсолютные значения.
2. Уровень конверсии от каждого из видов рекламы.
3. Рост конверсии.
А то какой смысл обсуждать бурный рост со 100 до 150 и говорить — «это ж рост аж на 50%», в то время, как при росте всего в 2 процента расходы на ТВ рекламу будут составлять 1000 000 000. Слон и моська получается.
И большинству людей ваших блокировки фейсбуков до одного места. Прости, друг, но вы, белоленточники — не большинство. Я бы даже сказал критическое меньшинство которое очень громко кричит.
Напрашивается вывод, что мы только нефть и продаём, как какой-нибудь Оман. У которого, кстати, цена волюты не изменилась так сильно согласно вашей же логике при падении цены на нефть в 2 раза. Но если посмотреть на структуру нашего экспорта то совсем другая картина.
В страны СНГ это ~30% (данные за 2013 год, зато структура расписана) при этом доля других продуктов примерно 45%
Доля экспорта нефти и газа в дальние страны — 43% доля других продуктов примерно 18%
Уголь, кокс и др. миниралы мы не берём, ведь доказывается гипотеза зависимости рубля от нефти аж на 97%
Иными словами, реальная доля экспорта нефти в районе 40%, (да хоть все 80), каким образом корелляция на уровне 97% а не 60-70%?
Может всё-таки не стоит искать математику там, где не так много, как кому-то хотелось бы? А то ещё и формирование цены на золото захочется назвать рыночной.
Более того, я, имя только загран и находясь на коснсульском учёте могу приехать в любое отделение ФМС и получить внутренний паспорт, если такой мне ранее не выдавался (в 14 лет жил за границей на ПМЖ и поучил только загран). Что я и успешно и проделал, правда в возрасте 16 лет (т.е. даже позже срока)
+ закон видел своими глазами.
— Будем менять наши деньги на бекдоры и закладки в ваших приложениях.
— А как мы это назовём?
— Инвестициями в ИТ, разумеется.
Подобный пример, кажется у кнута был с поиском номеров телефонов за очень быстрое время. Где номер ячейки памяти был равен номеру телефона. Создавая по такому принципу все будет ок.
Доказывается владение сайтом элементарно:
1. В присутствии юриста делаются нотариально заверенные скриншоты того, что вы вошли в учётку к регистратору и там указана ваша ФИО.
2. Вызывается эксперт и ставит свою подпись, что технически вы всё сделали правильно.
Сроки по заочным решениям восстанавливаются аж жуть как легко и быстро. Особенно, когда ненадлежащий ответчик. Или не было надлежащим образом уведомлено лицо. Как это доказать? На свою почту идёте и требуете вашей подписи в получении заказного письма из суда. Таковой, разумеется, нет, а значит и уведомления не было.
Оспаривать то решение вообще не нужно, потому что вы не сторона по делу. Нужен новый иск и не против пятигорской прокуратуры, в свою региональную: иски против гос-ва подаются по месту регистрации, а не по месту всяких там прокуротар. Вот если бы они против вас подали иск то ещё было бы о чём говорить.
На всё на это пишутся просто тонны жалоб во все инстанции от ФСБ и внутренней безопасности (пофиг на регламент и подчинённость), коллегии адвокатов, коллегии судей, начальника суда и до администрации президента (сколько раз обращался, всегда толк был) и федеральных ТВ каналов, газет и депутатов. И упирать нужно именно на незаконные действия прокурора и судей 1ой инстанции. Апелляция, которую рассматривает тот же судья — это просто жесть. После такого залёта можно ставить вопрос о лишении судьи мантии.
Какая-то неправильная стратегия выбрана у ваших адвокатов. Такое, кстати, часто бывает (в т.ч. и у меня). Мало толковых юристов, но все юристы думают, что они советуют правильно, а на самом деле часто это просто бред. А они научились нести с умным видом даже полную чушь. Удачи вам побороть этих коррупционеров.
Все просто:
нужно быстро закрыть вакансию и срубить бабла, пришло 100500 резюме, по резюме определить что-то, кроме списка навыков не реально. Можно, конечно, самообманом заниматься, что мол по резюме можно что-то предугадать. Можно даже потом под ответ подогнать, но это только самообман.
Отберут десяток резюме и на ковёр к директору, который будет излучать своё превосходство.
Везде так кроме ИТ и то, потому что айтишников не хватало до кризиса.
Фреймворк достаточно легковесный и легко кастомизируется.
А ещё можно твердить, что у вас extream programming и код самоописуем, но при этом городить 3-4 экрана строчек кода в одном методе. Не знать, когда писать комментарии к коду (подсказка: для классов, публичных методов, в местах фикса багов и в местах, где нужно краткое пояснения почему так, а не иначе) и вообще их не писать. При этом покрытие юнит-тестами стремится к 0. Contineous Integration? Только на собираемость проекта. Dependndency injection? Да, есть зачем-то. Только не ясно зачем( юнит-тесто же не пишем как следует, время, ай ай ай). А писали бы, сразу архитектурные косяки повылезали бы.
После быстрого хотфикса, да даже в случае просто некачественного кода поддержка его сжирает в 100500 раз больше времени. Если он не покрыт тестами, то его рефакторинг просто становится опасен. Если нет интеграционных тестов, то регресс-тестинг становится невероятно утомительным и всё падает. Если не следовать SOLID а только всяким приколам с ИТ конференций в духе KISS или DRY то получаем всё тот же говнокод, который теперь почему-то считается kissed and dry. И считается только лишь самим автором. А оценивать-то должен тот, кому с этим кодом разбираться.
А ещё время сокращает гордое заявление об отсутствии у проекта документации, потому что код самоописуем. Нет, я приемлю такое, но где код самоописуем? Где?!
За 7 лет разработки на 10+ проектах мне приходилось встречать и местных гуру, которые с энтузиазмом дебажат исходники .net но с трудом понимают, как писатьк код так, чтобы его могли использовать другие без пол литра. И нормальных разработчиков( человек 5 всего), которые пишут код так, что читаешь его как открытую книгу и всё понятно. Даже система безопасности, даже если ты джуниор и никогда её раньше не видел.
Я понимаю всю озабоченность расп… ом программистов. Хабр и ЯП на на другом мониторе, когда мало времени — зло. Но давайте не скатываться в откровенный непрофессионализм и писать плохой код Парень из исповеди 1 просто должен потерпеть пару тройку лет, пока его не будут воспринимать как джуна. Это чисто психологический момент. Ну и стоит ему свои слова пару раз подтвердить цитатами из книг. И да, ему попались откровенные говнокодеры с большим опытом сидения в одном проекте.
Но больше всего меня удивил вывод:
"- Меньше классов, меньше функций, меньше кнопок, меньше связей и вообще — меньше.
— Не пишите обобщенную функцию, если её функционал не встретился минимум три раза в разных местах.
и т.д."
потому что хороший код и не предполагает этого. Как бы все выводы-то логичны. Потому он и хорош, выверенный, оттестированный и проверенный.
PS разберитесь и освойте наконец-то работу с предметной областью и шаблоны проектирования. И тогда каждый новый разработчик будет на много быстрее вливаться в проект, а правки будут вноситься легко и непринуждённо.
Кстати, автор, последний пункт «Фирмы, сдающие персонал в аутсорс» это, судя по описания out-stuff когда фирма предоставляет своего «сотрудника» другой компании и он почти полностью подчиняется той компании (почти как работорговля). А аутсорс это когда фирма получает заказ от компании и сама решает, как реализовать бизнес-задачу, у вас это идёт под «Фирмы-оффшорные разработчики».
— блин, почему у меня здесь падает?
— А блин, пришёл объект у которого почему-то поле сумма или дата пустые.
— А почему они пустые?
— Потому что в БД пустые.
— А может быть сущность «платёж» в бизнесе пустым? Думаю что нет.
— конечно не может
— а как так случилось? А при создании платежа и его сохранении мы забыли проверить дату (или где-то в логике изменили) и там null (или что-то ещё неприемлемое)
и на выяснение всего этого могут уйти сутки, а вот на кодинг через конструктор на 30 секунд больше, чем через параметры
несмотря на то, что да, EF не умеет использовать параметризованный конструктор (надеюсь пока) и использует виртуальные паля во время создания абстрактной сущности на основе данных БД это не является правильным подходом согласно той концепции для которой и нужно абстрагирование. Сущность должна быть создана с помощью фабрики (агрегат) или фабричного метода (сущность или value object). Именно так гарантируется то, что сущность будет создана лишь в том случае, когда все необходимые ей поля и свойства, а главное, сочетания свойств были иницализированы одновременно и правильно. Это можно проверить лишь в конструкторе. Если же создавать объекты через свойства, то нет гарантии, что два одновременно необходимых поля (например сумма и дата) были в обязательно порядке иницализированы предыдущим разработчиком ранее в коде или некой частью системы. Тем более откладывать эту задачу на базу данных в корне не верно, потому что ОРМ есть механизм отсоединения от конкретного источника данных и разные источники могут возвращать разные результаты.
Присвоение свойств это крайней степени удобный и популярный, но всё же говнокод, который увеличивает скорость разработки (незначительно) и сильно уменьшает надёжность. Особенно, когда приходят в команду новые члены, которые не знают, что сумма и даты должны быть инициализированны непременно вместе или сущность не должна быть создана.
Даже сами гуру проектирования типа фаулера крайне осторожно относятся к пратике POCO\POJO объектов так как это типичный антипаттерн. И На мой взгляд его можно использовать исключительно для DTO объектов, но точно не сущностней уровня доменной модели. Об этом говорит Domain Driven Design.
Итого:
1) EF и другие ОРМ не позволяет использовать конструктор, заменяя всё виртуальными свойствам и POCO объектами, что есть неверно.
2) Доменный объект должен быть создан только через параметризированный конструктор, где будут произведены необходимые проверки и гарантируется целостность объекта (сущности или агрегата)
3) POCO объекты допустимы только для транспортных объектов (DataContract в сервисах, Model и ViewModel в MVC.).
4) Использование anemic model (POCO ) для доменных сущностей является антипаттерном для DDD да и вообще Фаулер его таковым считает и не любит. А наличие ORM уже говорит, что вы пытаетесь абстрагировать слой доменной модели от слоя данных фактические используете DDD и скорее всего будете реализовывать репозитории.
5) POCO подход крайне сильно распространён и в итоге только мешает. Для говнокодерства «по 5 тасков за день» отлично подходит. Проблемы начинаются через 3-4 месяца разработки, при тестировании, при поддержке, смене источника данных (например на сервисы) и т.д. подход DDD, а не Transaction Script в котором anemic model чувствует себя как рыба в воде.
По итогам такой аттестации можно уволить работника. Только попытку затравить он с лёгкостью обжалует, пригласив независимых экспертов и докажет, что согласно его уровню опыта и квалификации он сделал всё, чтобы задачу сделать в срок.
А если он смотрит контактик, а не работает, то придётся фиксировать на фото и видео, потом по каждому случаю составлять протокол о нарушении трудовой дисциплины (если просмотр сайтов в рабочее время под этот пункт подходит, вроде там только пьянки и прогулы). За систематические нарушения можно выгнать.
А так, если хочется уволить кого-то да предупредите за 2 месяца, выплатите компенсацию, отпускные и отпустите на все 4 стороны… хотя нет. Вы ещё должны помочь его трудоустроить в др. компанию. У него же семья, детишки голодать могут начать. Работодатель должен быть соц. ответственным.
PS раз работник работал хорошо, а потом перестал, то это на 99% ваша вина.
1. Ему платят значительно меньше, чем на рынке и он это понимает
2. Ему дают задачи от которых он не видит отдачи и не видит в них смысла.
3. Его инициативу подавляли и теперь ему не хочется ничего предлагать. Люди разные бывают. Один раз отказал без повода, он больше и не предложит.
4. У него реальные проблемы дома в семье и нужен просто отпуск, чтобы их решить.
5. Он не видит обратной связи о своей работе, публичного признания заслуг или диалога между начальством и подчинённым. Чувствует себя винтиком система, хотя это не подходит его стереотипу.
А так, у вас была возможность его проверить на собеседовании на испыт. сроке. Если он специалист, то привлечь его к эффективному труду задача его руководства, в т.ч. и топов, как основных стратегов проекта.
Проективровать базы нужно не на бумаге
Вторая система которую поддерживаю — партнёрка для рекламы. Те же грабли. На локальной машине выборки 500 записей по 20 секунд.