15 ноября 2013

Books and films

Около года назад я прочитал книгу Ender’ game автора Orson Scott Card. Книга мне понравилась, читал в оригинале. Изначально цель была улучшить английский, и, чтобы не забросить, выбрал любимый жанр – фантастику. После первой книги автор не остановился и написал еще несколько, но начав читать одну из них мне стало скучно – видимо Ender’s game выглядела для меня настолько законченным произведением, что не хотелось портить впечатление сиквелами. А вот недавно с удивлением обнаружил что по книге сняли одноименный фильм. Хочу сходить посмотреть.

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

07 ноября 2013

программист = рабочий

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

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

Что толку знать об определенной версии фреймворка, если она изменится через несколько месяцев? Какова ценность знаний, обесценивающихся с каждым годом? Вы можете быть в десятке лучших в стране экспертов в очень узкой области знаний – и вместе с тем не находить себе применения, поскольку в стране есть занятие только для четырех экспертов. Мне кажется, что более ценным является навык воспринимать и обобщать знания. Фреймворки и технологии – всего лишь инструменты. Умея постигать новое, совсем несложно научится использовать новые инструменты.

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

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

Таким образом, разработка программ – это скорее производство, чем наука и, тем более, творчество. Возвращаясь к первому абзацу, становится понятно, почему в описаниях вакансий находятся эти аббревиатуры. Потому что на производстве нужны работники, умеющие работать с инструментами, а не экспериментаторы, их создающие.

02 ноября 2013

Brainbench

Недавно закончились игры на Brainbench. Это такое событие, когда они открывают все свои тесты для бесплатного доступа (обычно тесты стоят 50 долларов) и ведут статистику, из какой страны больше тестов сдали. Вот результаты, штаты впереди, Украина в тройке лидеров.

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

Сдавая тесты, обнаружил интересную приписку на leaderboard о том, что набравший на играх больше всех баллов в каком-то тесте получит годовую подписку. А также обнаружилось, что тесты по .NET Framework и C# имеют общие вопросы (т.е. я встречал в одном тесте вопросы, которые уже видел в другом) – это облегчило прохождение. А так как тестов по .NET Framework там 6 штук, а по C# – 7, то результаты улучшались с каждым тестом. В итоге, получилось сдать C# 3.0 Fundamentals на 5, что и принесло мне в итоге годовую подписку – вот только я не уверен что буду ей пользоваться.

Еще оказалось что по ADO.NET 2, который я сдавал только чтобы закрыть job role, тоже набралось больше всех (хоть и не 5). Если честно, я слегка удивлен результатам, такое впечатление, что тесты попросту не привлекали особого внимания и потому легко было попасть в лидеры.

Что касается качества тестов, то ощущения смешанные – некоторые вопросы были из разряда выбрать метод среди похожих, другие требовали опыта в определенной области. Если сравнивать с Microsoft – то brainbench мне нравится больше. Как мне кажется основная проблема онлайн тестов – это количество вопросов. Рано или поздно вопросы начинают повторяться и это дает возможность идти на тест уже зная ответы. Те попытки защитить вопросы от копирования, предпринимаемые, например, Microsoft, не особенно продуктивны. Думаю, что решением было бы менять вопросы в тесте на протяжении всего времени что тест доступен для сдачи – но тут не обойтись без дополнительных вложений. В итоге, баланс между качеством тестов и вложениями каждый выбирает сам.

Ссылка на мой профиль на brainbench

Статья на DOU про Brainbench Games