Jun 19, 2018 09:04
Сегодня наконец-то получилось придумать и как-то проверить «на кошках» интересный алгоритм. Связан он с визуальным редактированием запросов - впрочем, не важно. Поговорим о том, из чего состоит работа настольного программиста в стабильном стартапе (коим я являюсь).
Математика и алгоритмы. Доля - малая. Интерес - любой от противного до крутого. Энергозатраты - огромные. Расход времени на задачу - большой.
Довольно большие куски прогерской работы доведены библиотеками до рутины, и часто алгоритм сводится к тому, чтобы наладить какой-нибудь индекс каким-нибудь std::map’ом. Но я не о таких задачах, я о том, что не получается взять из коробки. Эти работы обычно редки: эффект у них долгосрочный или сомнительный, и всегда ищут менее затратные и не столь впечатляющие способы решить задачу.
Разработка функциональности. Доля - львиная (с отладкой >60%). Интерес - низкий. Энергозатраты - средние/высокие. Расход времени на задачу - низкий/средний.
Функциональность библиотеками не напишешь. «Моя программа, что хочу, то и делаю», и конкурент обычно решит задачу чуть по-другому, и получится чуть другая программа. Задачи обычно придумываются всем стартапом, скучны и не содержат ничего героического. Но всё-таки мне, как программисту, приходится прикидывать, как проще запрограммировать, как это будет выглядеть со стороны пользователя, и так далее.
Разработка библиотек. Доля - невысокая. Интерес - выше среднего. Энергозатраты - низкие. Расход времени на задачу - большой.
Визуальные компоненты, собственные «велосипеды» по работе с XML или кодировками - назовём всё это «библиотеки». Обычно это задачи из серии «бери больше, кидай дальше», требуют много времени и настолько мало энергии, что иногда забываю поесть.
В апреле случилась странная штука. Налаживали программу крупному клиенту. Механизмы работы с БД, встроенные в Qt, едва держат. И тут я знакомой собирал компьютер на новинке AMD - Ryzen со встроенной видяхой. Матплатам нужна перепрошивка BIOS, операция простейшая, но делается подменным процессором. Из-за недоразумения с магазином пришлось везти его в сервис-центр, всё быстро решилось, но после этой нервотрёпки я не мог работать и сел за что мог - за свою поддержку ODBC, больше года висевшую на «доскотрекере». За три дня выкатили функцию, где-то месяц ещё выскакивали ошибочки, но результат превзошёл ожидания: выигрыш 2…200× по сравнению с Qt. Конкретно этому клиенту цифра ближе к двумстам: минуты против почти суток. Вот вам и велосипед! Кстати, от штатного драйвера не избавились: он выполненяет запросы экспорта.
Разработка утилит. Доля - низкая. Интерес - высокий. Энергозатраты - ниже среднего. Расход времени на задачу - невысокий.
Утилиты нужны в основном мне, потому дело интересное. И всё равно не хочется делать что-то сложное в ущерб более важной функциональности. Например, в программе перевода есть так называемый «патч локализации»: изменение нескольких строк, связанное с местной терминологией, диалектом языка, качеством перевода. Но программа живёт, появляются новые версии, и если за патчем не следить, возможны разнобои. Хочется сделать список «стоп-слов»: при появлении в новой версии слова, например, «поребрик» мы его подчёркиваем - вероятно, надо заменить на «бордюр» (если только это не поребрик автодрома). Так и не реализовано.
разработка ПО,
личное