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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

понедельник, 9 декабря 2013 г.

Так все-таки, почему?


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

Учеба на заочке как бы намекает нам, что пора бы устроиться и на работу. Я вернулся в родную школу, но теперь уже в качестве учителя (разумеется... нет, не экономики... а информатики). В свободное от сеяния_разумного_доброго_вечного время изучал Паскаль. Написал функцию, которая печатает число прописью. Она потом, в несколько модернизированном виде, использовалась в разных мои разработках не один год.

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

Это был мой золотой век. Теперь в свободное от бухгалтерских обязанностей время, коего было достаточно, продолжал идти по намеченной дороге. Только вместо Паскаля осваивал толстенный учебник "Delphi 5". Золотым это время я назвал потому, что за два с небольшим года работы на этой должности я успел понаписать кое-чего полезного. Это были программы, облегчающие те бухгалтерские рутинные процессы, которыми я занимался. И все бы наверняка и дальше шло хорошо, если бы мне настоятельно не предложили повышение...
Эту собственную программу для печати платежек я сам использовал до недавнего времени
Отказываться было нельзя. Из вежливости и еще из некоторых соображений.

Работа главным экономистом не предполагала особого общения с компьютером. Да и времени свободного теперь не то что не хватало, его просто не было совсем. А между тем, усиливалось понимание того, что экономические науки это совсем не моё.

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

И я его благополучно растранжирил.

На тот момент хотелось экзотики. И самым экзотичным, но в то же время достаточно рациональным мне представлялся вариант поступления на журфак. Сразу скажу, что чаяния мои оправдались: учиться здесь оказалось действительно легко, и девушек здесь оказалось 90% от всего факультета. Как я и предполагал.

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

пятница, 6 декабря 2013 г.

Стать программистом после 30... О чем это я?

О чем этот блог

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

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

А оно мне надо?

 Я уже сообщил вам о том, что однажды я появился на свет. До 14 лет я рос как обычный советский ребенок и мало чем отличался от сверстников. Но все изменилось, когда я впервые увидел компьютер. Словами эти чувства передать проблематично, да и не нужно. Думаю, вы сами все понимаете. Меня, как говорится, "торкнуло". Я не мог думать ни о чем, кроме компьютеров.

Да, компьютеры той эпохи сильно отличались от нынешних. Современный смартфон в кармане школьника раз в 1000 мощнее советской ЭВМ "Корвет" о которой здесь идет речь. Люди моего возраста наверняка помнят эти компьютеры, которые стояли во многих школах бывшего СССР.

После включения "Корвета" и минуты шуршащих звуков из недр этого электронного устройства на экране появлялось вот что:

Кто не знает, это называется "командная строка". Никакой вам графики, никакой мышки. Пишешь команды с клавиатуры - машина их выполняет. Что может быть проще!

Так сложилось, что у меня был практически неограниченный доступ к этим чудо-компьютерам. Имел я доступ и к нескольким книгам, которые поставлялись вместе к компьютерным классом. Если я не ошибаюсь, книг было 9. Каждая страниц по 300-400 толщиной. За лето 1992 года я осилил их все...

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

Но "лихие" 90-е внесли свои коррективы в мои планы на жизнь. Когда пришло время поступать в ВУЗ, я внезапно выбрал Белорусский государственный экономический университет.

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

В общем, "наступил я на горло собственной песне" и подался в экономисты.

О том почему я все же не стал экономистом по жизни и как я стал... журналистом расскажу в следующий раз.