I go into work, screw off for a few hours, get some programming done after lunch, go home, work on code well into the night fueled by vault. 4 AM rolls around, I go to bed, wake up at 10, go back into work...
Weekend comes, I wake up at 5 or 6 PM on Saturday (have to make up for the lost sleep during the week), I play some games, do some work, maybe go out and play pool or hang out with friends, or get drunk, go to bed at noon. Wake up at 5 or 6 PM Sunday, get to a good stopping point on work.
Each of these days I pretty much eat fast food and my body hates me for it. I drink way too much soda, smoke way too many cigarettes. Each week I work 40 (reported) hours because no overtime is allowed, but in reality I work closer to 70 hours just to give everyone the idea that I'm this amazing programmer who can get things done.
I used to weigh 155 before I started programming again, I was lifting weights regularly and I lived for the outdoors. Now I stay inside all the time, I'm 25 lbs heavier - which is still ok (but not great) for a 5'11 guy, but I have absolutely no energy and I always feel tired.
I'm enjoying the programming immensely, but since where I work is staffed 99% male with all the females in another area, I don't get many opportunities for meeting women. It blows. I go to a bar and all of the women there are mid to late 30's and I'm only 28.
I make decent money, maybe not for a programmer, but pretty good compared to all of my friends from high school, but I sock 75% of it away and drive a car that costs less in total than most people's yearly insurance premium.
My life is severely dysfunctional. There is no order to it whatsoever, it's entirely chaotic. I am well past the stage of burnout, I'm missing out on life. I've never gotten laid; though I talk to some girls regularly and I can't really push myself to try for more than friendship.
My social life is pathetic. I know of only 3-4 people I hang out with who aren't from work. All in all, I'm happy with the work, but I find the rest of my life deeply unsatisfying.
I don't know if this is a typical programmer experience, but there you have it.
Интересную багу сегодня нашли. Наверное, все знают, что имя пользователя не должно содержать таких символов как <, ?, >, * и т.д., потому что при регистрации профиля пользователя, для него может создаваться папка, куда будет складываться различный файлы по типу музыки, фоток и т.д. Но, наверное не все знают, что имена папок, такие как com1, com2 … com9, lpt, con, nul, aux и другие запрещены, потому что эти имена зарезервированы MS-DOS и Windows. Это имена устройств.
А как поведет себя ваше приложение, если пользователь с именем com1 будет создан в БД, но при создании папки для его профиля произойдет ошибка? Хорошо еще, если все неприятности закончатся на 404-й ошибке при попытке запросить данные из папки его профиля. Вы проверяли?
Ты был кодером на протяжении нескольких лет, возможно, даже десятилетий. Ты нашел успешную работу, зарабатываешь достаточно денег. Ты знаешь «респектабельные» технологии, которые так востребованы на рынке труда: C++, C#, Java и т.д. И тебе без надобности учить что-то новое. Оставайся в своей зоне комфорта. Бери пример с этих парней:
"Я думаю, что весь мировой рынок состоит приблизительно из 5 компьютеров." - Thomas J. Watson, Председатель Совета, IBM, приблизительно 1948
"Кажется, что мы достигли пределов того, чего возможно достигнуть в компьютерной технологии, хотя нужно быть осторожным с такими утверждениями, поскольку они имеют тенденцию казаться довольно глупыми через 5 лет." - Джон Von Neumann, приблизительно 1949
"Но, где это можно будет использовать?" - Инженер в Advanced Computing Systems Division of IBM, комментируя микрочип, 1968
"Нет никакой причины для любого человека иметь компьютер в своем доме." - Кен Olson, президент, Digital Equipment Corporation, 1977
В самом деле, мудрые слова. Ты должен учится, когда ты знаешь, что не знаешь достаточно. Легко взять книгу, когда ты чувствуешь неуверенность в собственных знаниях. Но, опасней всего, когда ты действительно думаешь, что знаешь достаточно. Программирования (как и вся компьютерная наука) походит на бег Красной Королевы: ты должен бежать с такой скоростью, с которой только можешь для того, чтобы оставаться на своем прежнем месте.
Когда ты в прошлый раз покупал или брал почитать техническую книгу?
Когда ты в прошлый раз покупал или брал почитать техническую книгу, и затем читал ее?
Когда ты в прошлый раз покупал или брал почитать техническую книгу, и затем читал ее, и при этом она не имела непосредственного отношения к твоей работе?
Уходи из своей зоны комфорта. Признай свое незнание. Изучи что-то новое. Изучи что-то бесполезное, чтобы в следующем году ты мог бы назвать это бесполезным. Не говори мне, что все, что ты знаешь сейчас – это все что тебе необходимо знать вообще. Не становись цитируемым в моем следующем списке.
Silverlight: Enabling Rich Internet Applications for the Open Source World. Да, вот скачал себе туториал на 44 странички с таким вот громким названием. В общем то, туториал не плохой, поэтому его и рекомендую. Рассказывает, как создавать приложения на Silverlight без Visual- и прочих студий, а на родном, для Java-разработчиков, Eclipse.
Книга бесплатна. Скачать вы ее можете вот отсюда, но пройдется пройти процедуру регистрации на сайте. Поэтому, скачать книгу можно также с моего Яндекс.Диска.
Когда я учился в школе, я любил уроки английского языка. Сравнительно с другими предметами, я почти всегда делал домашние задания и, следовательно, мог похвастаться своими оценками, начиная с 5-го класса. В общей сложности, как обычный школьник, а потом и в колледже, я изучал английский на протяжении 10 лет. Тогда было много свободного времени, часть которого можно было посвятить на чтение англоязычной книги, мануалы по какой-нибудь технологии в программировании и т.д.
Но, когда я устроился на работу, понял, что нихрена то я и не знаю английского языка.
По крайней мере, очень сложно понять разговорный английский, общаясь с американскими заказчиками. Я понимал слово через десять, и приходилось связывать эти 10% распознанного текста какой-нибудь своей логикой, чтобы ответить что-то в тему.
Через год, я понял, что, в принципе все не так сложно. По работе мы, как оказалось, общаемся шаблонами. Когда слышишь или читаешь одну и ту же шаблонную фразу несколько раз, то поневоле запоминаешь ее, и уже используешь самостоятельно:
“This bug is reproduced…”, “An exception has occurred”, “At this point [%some behavior here%]”.
Проработав уже более 3-х лет над одним и тем же проектом, я хорошо понимал устный английский заказчика, мог вести электронную переписку и иногда вставить свои 5 копеек в устной форме, при разговоре по Skype, например.
Но, к сожалению, все таки, к большому сожалению, такие живые общения Skype, или в лучшем случае, когда приезжает заказчик, проходят очень редко. А ведь они дают тот необходимый толчок для совершенствования языка. Нет, обычно все вопросы решаются по e-mail. Это очень сильно экономит время, но не дает мне лишний раз попрактиковаться в английском.
Проблемы
Основная проблема в том, что на изучение английского не хватает желания, если хотите, то не хватает грубого пинка под зад. Кто сказал что я не понимаю английского? Я прекрасно понимаю, что там написано на MSDN или на CPAN. Я отлично ориентируюсь в том чего от меня хотят, и могу объяснить, что я буду делать в переписке по ы-мейлу. В устной форме я могу связать 3 слова, и помочь себе жестикуляцией. Кроме того, устным английским мне приходится пользоваться очень редко.
Не хватает времени. С одной стороны, тут все таки больше желания опять таки не хватает. Ну не могу я посвятить кучу времени на изучение английского. Лучше я какую-нибудь книгу умную почитаю, или разберусь с какой-нибудь интересной технологией, или напишу что-то свое. Не могу я выделить время и в будние дни, чтобы ходить на курсы по английскому – мне работать надо.
Не хватает практики. Ну, хорошо, вот изучу я английский, и с кем я буду общаться? А если не буду общаться, то деградирую нафиг и забуду все.
Решения
Пинком под зад для меня служит тот факт, что английский просто необходим для моего дальнейшего профессионального роста. Английский открывает множество дверей, в том числе и на западный рынок, где и крутится большая часть IT-шной работы и IT-шных зеленых денег. Возможно через пять лет я открою свое дело, либо буду работать удаленно, так почему бы мне прямо сейчас не подготовить необходимую базу для общения с заказчиками?
Что же касается нехватки времени, тут все очень просто. Ну, по крайней мере, я считаю, что все очень просто.
Дело в том, что у нас, обычных людей, есть целая мусорного времени:
Когда мы едем в поезде/метро/маршрутке на работу и с работы. Сколько времени теряем? Я теряю 1 час в день, т.е. 5!!! часов в неделю.
Когда ничего не хочется делать, когда просто устал и развалился перед телевизором или лег отдохнуть.
Когда делаешь тупую рутинную работу, не требующую полного вмешательства мозга.
Как не дать пропасть этому времени попросту? Слушать аудио записи. Подкасты или специализированные курсы для изучения английского языка.
И это действительно работает. По крайней мере, это самый эффективный метод изучения английского для лентяев.
При этом, все те аудио материалы которые я слушаю, можно разделить на следующие категории:
ESL – English as a Second Language, рассчитаны специально на слушателей, изучающих английский:
Fun English Lessons Это действительно веселые подкасты. Очень рекомендую. Слушаю их обычно утром, чтобы поднять настроение перед работой.
Слушать: 119 - E-Commerce
Преимущество этих подкастов в том, что они не устаревают, я скачал себе весь архив и слушаю каждый подкаст.
Характерной чертой ESL подкастов является то, что на «простом» английском объясняется более сложный английский. Кроме того, в ненавязчивой форме рассказывается про культуру и жизнь американцев, что, несомненно, помогает понять их лучше.
Подкасты по программированию и IT, рассчитанные на англоязычного (или около того) слушателя:
Следующие подкасты посвящены IT и программированию, поэтому, в принципе, их не так и сложно понять. С другой стороны, там рассказывается о новинках и интересностях, происходящих в мире разработки программного обеспечения:
Из русскоязычных подкастеров, которые помогают нам изучить английский и найти смысл жизни американцев ;), я хотел бы выделить следующие:
В первую очередь, это Будам. Этот человек живет в Америке, и очень много рассказывает про американский образ жизни в своей ленте За cool жизнь.
Слушать: #85 American Woman
Кроме подкастов, когда нужно убить время, а полезного ничего делать не хочется, я смотрю англоязычные фильмы с англоязычными субтитрами. Во-первых, я могу посмотреть новый фильм, не дожидаясь пока фильм появится в русскоязычном переводе. Во вторых, я запоминаю, как американцы произносят те или иные фразы, и могу подсмотреть на субтитры, когда начинаю теряется в длинных фразах. На самом деле, польза от такого просмотра довольно ощутимая, но на просмотр тратится довольно много времени: от часа до двух. И лучше всего смотреть такие фильмы перед сном или в том время, когда ну очень не хочется что-то делать.
Секретное, самое мощное и самое сложное оружие
Это перевести какую-нибудь англоязычную статью. На самом деле на перевод небольшой по объему статьи, можно потратить кучу времени. Основную сложность тут составляют так называемые идиомы, ведь дословно каждое слово переводить нельзя! Вот и тратишь время на распознавание этих идиом и гугление значений, чтобы не получилось, как в старом анекдоте:
В российской глубинке фестивальный показ зарубежных фильмов.
На экране идет американский фильм...
Герой на экране:
- How do you do
переводчик:
- Как вы это делаете?
Ответ:
- It's all right
переводчик:
- да все правой,правой.
Для разработки небольшого парсера, решил вынести все значения ключевых слов в конструкцию switch. Так как пустая строка также предусматривается, то решил воспользоваться гламурным string.Empty в кейсе:
Я очень удивился, когда компилятор выдал ошибку, что в строке case string.Empty: требуется констанотное вырожение. Лезем в Object Browser и смотрим декларацию string.Empty:
public static readonly string Empty в классе String.
Почему не константа?! Может быть, есть какое-то сверх объяснение, связанное со сверх оптимизациями и прочей магией? Погуглив на это тему, обнаружил замечательную статью: string.Empty Example and Issues in C# Оказывается, что даже при использовании в конструкции if, сравнение со string.Empty работает в два раза медленнее, чем с константной пустой строкой "":
=== string.Empty benchmarked code ===
if (string.Empty == null) { thrownew Exception(); }
=== Constant string benchmarked code ===
if ("" == null) { thrownew Exception(); }
=== Benchmark results === Second loop was completely compiled out before runtime. 1000000000 iterations.
string.Empty loop: 637 ms "" loop: 319 ms [faster]
Я не отказываюсь от использования string.Empty, но теперь призадумаюсь о том, стоит ли использовать такую запись пустой строки на конкретном участке кода.