Archive for the ‘Образование’ Category

Проблема backup’а и самообразовании.

Четверг, Май 28th, 2009

Есть такая, забавная проблема — backup’а. Думаю, каждый с ней сталкивался, после того, как грохнулся винт, а на нем была единственная копия курсового или проект, который писался неделю, без того, чтобы еще куда-нибудь быть занесенным.

Вроде  решается все тривиально — ну делаешь резервную копию, да и все. Просто то, оно просто, но есть несколько подводных камней

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

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

В общем, веселая проблемка. Но, я собственно говоря не о том. Я вообще хотел написать о самообразовании.

Опять же, большинству понятно — надо самообразовываться, иначе отстать от прогресса в IT можно буквально за 2-3 года, а через 5-7 лет уже только и останется ворушить говно какого-то мамонтного проекта.

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

Вроде звучит логично, план есть, аккуратненько его исполняем и все будет чики-пуки. А вот фига с два. Проблема очень похоже на проблему backup’а. Это вам кажется, что все чики-пуки, а на самом деле определить все хорошо или все плохо можно будет только тогда когда основная копия (ваши активно используемые знания) вдруг по какой-то причине лягут.

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

А по сему, нужно не только исполнять сам план, а изменять сам план. Идеально постоянно изучать не просто новое, а новое и то, что не похожее на ранее изученное, новое и модное, новое из каких-то дальних отраслей. В целом изучать то, что не просто увеличит на единичку количество ваших знаний, а скорее откроет новую область.

P.S. Видео которое подкинул Sergey Perepechin (в другой статье) смотреть ОБЯЗАТЕЛЬНО!!!! Там как раз много сказано по поводу того, с какой скоростью все меняется.

От хорошего к великому.

Четверг, Октябрь 30th, 2008

Сейчас читаю книгу «Good to the Great». Группа товарищей провела достаточно интересно исследования, пытаясь найти общие составляющие успеха компаний, которые долго (эдак лет 15) сидели в хороших, а потом внезапно превратились и остались великими компаниями.

И вот эта книга натолкнула меня на одну, с одной стороны не слишком приятную, с другой стороны важную мысль. Как человеку переходить с одного уровня мышления на другой?

Бр… Что-то куча мыслей в голове теснились, а статья выходит пресная как печенье из одной муки и воды. Так, что заход второй.

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

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

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

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

Блин, ну чего же я такой тупой?

Понедельник, Июнь 9th, 2008

Вчера, играл с друзьями в пинг-понг (как именуют его тут, в стране заходящего солнца). И вот слово за слово, завязался разговор о текущих багах и потихоньку все погрузилось в глючность реализации JNI (java native interfaces) для какого-то Linux и ошибки в C++ коде, которые вызывается через C прослойку через JNI и т.п.

Где-то после минут десяти у меня начал активно проявляться комплекс неполноценности. Хотя это абсолютно не моя техническая область, но тем не менее, она была и не слишком ихняя. При этом люди меня повергли в ужас, количество разнообразной технической информации о java, c++, по ходу был зацеплен unicode (и его виды utf-8 и utf-16), а так реализация виртуальных машин, их оптимизация, задеты темы языков ruby on rails и чего-то еще.

В общем, после игры в теннис, я чеща голову ушел думать… Что ж блин я такое пропустил в своем интеллектуальном развитии?  Почему же, я какой-то прям таки недоразвитый?

Одна правда мысль в голову таки пришла. Достаточно много времени я потратил на развитие своих бизнес знаний и умений. И хотя они не так хорошо формализованы, тем не менее они присутствуют где-то в голове.

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

— знание платформы — 30%

— умение создавать нормальную архитектуру — 20%

— умение решать проблемы 20%

— понимание логики программы — 20%

— знания языка программирования — 10%

Так уж получилось, что по крайней мне, для мобильных платформ, знание языка очень-очень низкий приоритет по сравнению с остальными знаниями.

Я как-то фактически не побывал снаружи от мобильных разработок. Как оно вообще во вне?  Такие же приоритеты или что-то по другому?

Злобный план по покорению галактики.

Вторник, Май 13th, 2008

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

Итак, вот он план…

Я очень давно задумывался о создании идеального самоучебника по программированию с нуля.

Думаю, не нужно сильно вдаваться в то, что значит «учебник программирования с нуля». То есть он должен быть рассчитан на то, чтобы по нему мог обучиться любой человек не знающий ничего о программирование, но уже имеющих достаточно опыта с компьютером.

Идем дальше. Насчет «Самоучителя» . Идея в том, чтобы можно было научиться без того, чтобы дергать кого-то постоянно за рукав и спрашивать: «Дядечка, а что значит эта фраза и как сделать то и другое?».

Ну и последнее и самая любимая часть «идеальный» 😉 Ну, как же может программист (и злобный властелин по совместительству) собираться сделать что-то меньше, чем идеальное?

Что меня убивает во всех учебниках это фразы «а-ля»:

«Выражение присваивания — этот нетерминальный символ используется в Справочном руководстве по C++ для обозначения элементов списка выражений. Не следует особо смущаться по поводу этого нового обозначения. Это всего лишь частный случай выражения.»

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

Собственно говоря, основная идея в постоянном feedback’е. Самоучитель предполагается быть onlin’овым и ключевой возможностью будет пометка абзацев/глав и т.п. Их можно будет помечать в стиле «Не фига не понял», «Скучно/нудно и уже сто раз было до этого написано» и т.п.

И само собой, плохие абзацы постепенно будут заменяться, поясняться и улучшаться.

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

Начну с другого конца. Я уже один раз писал книгу. Во первых это заняло гораздо больше времени, чем я ожидал, во вторых я ее не успел довести до ума из-за улета в США. Но, что я вынес, что писать книгу от корки до корки самому – достаточно длительный и сложный труд.

А по сему, я хочу найти братьев по разуму, которым было бы интересно поучаствовать в этом проекте.

Заранее оглашу, проект будет бесплатный (во всех пониманиях это слова). То есть платить за помощь, увы, я не буду, но и взымать деньги за использование, кем то ни было учебника тоже не собираюсь. В общем, в конечном итоге, это будет книга в стиле open source (c определенными ограничениями).

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

Я искренне надеюсь, среди сотен постоянных читателей найти хотя бы 5-7 человек, которым хочется поучаствовать в моем злостном плане.

Кстати и если вам не составит труда и вы знаете, кому может быть интересна эта идея – киньте им ссылочку или поставьте у себя в блоге ссылочку на этот пост.

Подкинули интересную ссылочку. http://www.djangobook.com/en/1.0/chapter01/. Где-то так я это и вижу.

P.S. Я создал две начальные страницы проекта. Одна содержит описание идеи проекта, вторая содержит ответы на часто задаваемые вопросы.