вторник, 2 декабря 2014 г.

Тяжкие будни программиста-одиночки


Да, да, да! Знаю-знаю. Не сдерживать слово очень нехорошо. Я в очередной раз нарушил обещание не тянуть с продолжением. Каяться в этой ситуации бессмысленно, все равно мне гореть в аду. И после очередных упреков со стороны старого приятеля по поводу отсутствия контента в блоге, я взялся за продолжение рассказа о том как стать программистом после 30-ти. Сильно после 30-ти.

Примерно год назад, взвесив всё, я взялся за проект, который показался мне интересным и соответствующим всем моим хотелкам, про которые я говорил в предыдущем посте. В то время (конец 2013 года) у всех на слуху был Биткойн и другие криптовалюты. Bitcoin день за днем устанавливал рекорды биржевой стоимости будоража умы желающих легко и быстро заработать. Про криптовалюты много писали как IT-ресурсы, так и издания для широкой публики. Меня не особо интересовала тема торговли криптовалютами, т.к. в своё время я уже наигрался с Форексом и к биржевым спекуляциям не тяготел.

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

В упрощенном виде это выглядит так: ты запускаешь на компе некую программу и идешь заниматься своими делами (ну или продолжаешь смотреть котиков на Ютубе работать). Программа работает и приносит тебе некий доход. При майнинге на обычном компьютере доход этот будет крайне небольшим. Стоит задача: как его увеличить. Очевидно что есть два пути: экстенсивный (использовать несколько компьютеров) и интенсивный (нарастить мощности одного компа). Последний путь имеет ограничения, так как мощность компьютера нельзя наращивать бесконечно. Поэтому все идеи сводились тому что нужно задействовать много компов. К слову, есть и другие способы получать приличный доход от майнинга, такие как использование специального оборудования, заточенного именно для этого, однако этот путь мной не рассматривался ввиду высокого порога вхождения (дорого это все).

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

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

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

Сказано - сделано. засел я за изрядно подзабытый Delphi. Не скажу что все написалось быстро и просто, но и затруднений особых не возникло. Сам скринсейвер представлял собой программу, демонстрирующую слайдшоу из фоток размещенных пользователем в вездесущем ВКонтакте.

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

Сложных настроек в программе не было, т.к. она была рассчитана на самую массовую аудиторию. Выглядело окно настроек как-то так:
Поначалу все пошло неплохо. Я разместил написанную мной программу в различных софт-каталогах, на скорую руку слепил сайт для нее (www.ssavers.ru) и начал следить за статистикой добычи криптовалюты. Это и были те десятки центов в день, о которых я писал в предыдущем посте. Я уж было рисовал мысленно планы по продвижению скринсейвера в массы, как вдруг возникла неприятность, которая в конце концов загубила весь этот проект. Ну или почти загубила.

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

Путь в программисты оказался сложнее чем я думал. Снова активизировались мысли: "а может все-таки программирование это не моё" ну и все в таком духе. На фоне этого бессмысленным выглядело и дальнейшее ведение сего блога.

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

понедельник, 14 июля 2014 г.

Есть ли у вас план?


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

В предыдущем посте я говорил о том, что сейчас заканчиваю факультет журналистики. Так вот подготовка к госам и написание диплома нещадно сжирали все свободное время. Да и над своей целью (стать программистом) работаю постоянно. На ведение блога времени не остается. Слава богу журфак сейчас уже позади, диплом в кармане. Вернемся к программированию.

Теперь, как и обещал, расскажу о том, как я собираюсь реализовать свой замысел.
Итак, программист, по моему видению, может выступать в трех (как минимум) ипостасях:

  • наемный работник;
  • фрилансер;
  • предприниматель (владелец бизнеса).

Несмотря на очевидные плюса варианта "наемный работник", есть в нем и большие минусы. Частично они перечислены в моем посте на Хабре. (Этот пост, кстати, стал началом моего пути в программисты. Мы к этому вопросу еще вернемся.) Самый большой минус для наемного работника заключается в том, что очень сложно в моральном плане пойти работать джуниором в неюношеском возрасте. А кроме того, не имея должного образования и квалификации даже место джуниора получить не так просто. Нужен опыт, который можно приобрести, например, во фрилансе. Но и этот вид деятельности имеет свои недостатки. Как показала практика, здесь нужна железная самодисциплина и все тот же, хоть минимальный, но опыт. Начинающему фрилансеру-программисту непросто приходится выдерживать конкуренцию со стороны более опытных коллег. Кроме того есть вероятность "кидания" со стороны заказчика.

Наконец, третий вариант - собственный ИТ-бизнес - видится мне наиболее привлекательным. Здесь как и во фрилансе нужна самодисциплина, возможно даже более жесткая. Кроме того, есть вероятность, что твой проект не "выстрелит" и тогда месяцы труда не окупятся. Но есть и плюсы:если все получится, то ты станешь обеспеченным человеком. К тому же независимым от работодателя и заказчиков. И в любом случае приобретешь опыт, с которым можно двигаться дальше.

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

  • Он не должен отнимать слишком много времени (по крайней мере на начальном этапе). Ведь я продолжаю оставаться наемным работником, а свободного нерабочего времени у меня не так много.
  • Он не должен быть сложным для реализации. Ведь практика показывает, что когда я брался за очень сложные проекты в программировании (да и вообще в жизни), увязал в них и не доводил до конца. Либо на свет появлялась некая пародия на то, что планировалось изначально. В общем, у меня должно хватать ресурсов для того, чтобы поддерживать проект на достойном уровне.
  • Он должен с самого начала приносить доход. На начальных этапах можно небольшой, но с возможностью дальнейшего роста.
  • Работа над этим проектом должна приносить удовольствие (а как же иначе).
Итак, простой и приятный в реализации, при этом приносящий доход сразу же. Скажете невозможно? А вот и нет. Такой проект я нашел и даже начал его реализовывать. Доход составляет пока десятки центов в день. Это как минимум раз в 100 меньше чем "проектная мощность". Но ведь это только начало. Еще есть куда расти...

Впрочем, на этом пока остановимся. Обещаю не тянуть с продолжением.