История первая: Ты программист, пишущий enterprise-приложения на Java в 2001-м году. Приходится писать огромное количество болерплейт-кода и xml-конфигурации. Чтобы облегчить свою работу, ты начинаешь создавать утилитки, библиотечки и т.п. А потом ХОБА и ты создатель фреймворка Spring, которому готовы платить огромные деньги за поддержку.
История вторая: Ты любишь писать код и занимаешься этим ради развлечения. А ещё тебе интересно разобраться с асинхронностью. И ты начинаешь писать асинхронный web-сервер. А потом ХОБА и ты создатель Nginx, которому готовы платить огромные деньги за поддержку.
История третья: Ты идейный программист, видящий цель своей жизни в том, чтобы сделать мир лучше. А потом ХОБА ты автор emacs, GCC и GDB, которому согласны платить огромные деньги за консультации или даже просто появление на каком-либо мероприятии.
История четвёртая: Ты один из руководителей огромной корпорации, разработавшей популярный язык программирования и кучу дорогущих коммерческих систем, разработанных на этом языке. Аналитики говорят тебе, что распространение языка и продажи производных систем сдерживают опасения сообщества, что однажды твоя компания может ввести неприемлемые условия его использования, может изменить его неподобающим образом или вовсе прекратить его развитие. Чтобы не потерять рынок, ты открываешь исходный код компилятора и виртуальной машины, а также отдаёшь его стандарты под контроль некоммерческой организации. ХОБА - Java.
Dr. Bacon, такое было, ага. Практически мгновенно убили первоначальное значение термина и теперь называют девопсами всё тех же админов, отвечающих на любую проблему "Это косяк разработчиков".
godsplane, конструкторы - это удел нижнего сегмента рынка, населённого мелкими заказчиками и низкоквалифицированными программистами. Выбирайтесь из него и конструкторы перестанут быть вам конкурентами.
Северное Сияние, те, кто хотят реально развиваться, захватывать рынок и занять в будущей цифровой экономике тёплое место, а не сделать вид выхода в онлайн, довольствуясь позицией бабки с семечками на рынке. Опять же, вопрос ведь не только в розничных продажах. На прошлой неделе мне писал человек, желающий запилить b2b-решение, помогающее компаниям сотрудничать в новых реалиях. На мою команду навешали три (!) новых проекта, два из которых рождены новыми рыночными реалиями, а ещё один просто позволит откусить дополнительный кусочек рынка. Кстати, мы и разработчиков дополнительных наняли. Да и про автоматизацию нельзя забывать. Мой бывший подчинённый, открывший свою компанию по автоматизации бизнеса, в марте получил два крупных заказа с как раз шестизначными бюджетами. Оба проекта должны позволить заказчикам существенно сократить штат и количество личных контактов с партнёрами. Ещё только вчера общался по поводу модернизации инфраструктуры онлайн-кинотеатра, который всё хуже справляется с "самоизоляционными" нагрузками. И т.д. и т.п. Кризис - это перемены, а перемены - это возможности. Тем более, что пандемия уже дала ИТ огромный буст, и есть основания полагать, что даст ещё больший.
Северное Сияние, да нифига. Целая куча контор жила по принципам "Инторнеты эти ваши - баловство сплошное" и "Да мне и оффлайн клиентов хватает". Некоторые из них сейчас срочно меняют рельсы, некоторые за считанные недели потеряли существенную долю рынка, уступив компаниям, о которых раньше никто и не слышал, но которые готовы были предложить свои услуги онлайн.
Иван Шумов, во-первых, первыми сокращают не самых лучших. Поэтому на рынок выпадет огромное число низкокачественных сотрудников. Во-вторых, за сокращение первыми взялись слабые компании, в которых лучше бы и не работать. Сильные компании, которые сейчас используют шанс на освоение новых рынков, создадут ещё больше вакансий и будут испытывать потребность в сильных программистах.
Banyanchik, метод объявлен как принимающий аргамент street def get_street(self, *street*):
А в вызове никакой street не передаётся street = address.get_street()
Почему?
Koshkasobaka, на предупреждение "Illegal reflective access" можно не обращать внимание. JDK предупреждает, что Mockito использует рефлексию, а рефлексии стоит избегать. А вот OutOfMemoryError - это ошибка серьёзная, значит что ваша программа сожрала памяти больше, чем JVM могла получить у операционной системы.