Показаны сообщения с ярлыком размышления. Показать все сообщения
Показаны сообщения с ярлыком размышления. Показать все сообщения

четверг, 15 февраля 2018 г.

Индикатор изменений в обществе

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

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

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

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

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

среда, 17 января 2018 г.

Ценность знаний программиста

Как fullstack разработчику мне приходится очень много читать литературы по специальности. Но в последнее время я стал замечать, что с моими знаниями стали происходить странные вещи. Они быстро устаревают! Копнем глубже.

Условно знания программиста можно разделить на две большие категории:
  • Фундаментальные знания
  • Знания технологий
Фундаментальные знания
Это понимание ООП, паттернов проектирования, принципов и метапринципов разработки ПО. Эти знания по большей части устойчивы к устареванию. Они лежат в основе вашего чутья в разработке - что такое хорошо и что такое плохо. По сути они для вас как луч света в темном царстве технологий. Какой бы язык, фреймворк или технологию вы не взяли в руки - интуитивно вы отличите говнокод от конфетки. Увы, фундаментальные знания накапливаются медленно - только с опытом и на практике. Не получится их приобрести сходу просто, например, прочитав книгу банды четырех про паттерны проектирования. В одно ухо влетит в другое вылетит со свистом как из турбины самолета. Проверено на себе. Можно читать правильные книги хоть до ноликов и единичек в глазах. Толка не будет. Но зато в каком-то смысле ваши фундаментальные знания антихрупки. К сожалению одних фундаментальных знаний для разработки ПО будет маловато. Нужно знать конкретные технологии.

Знания технологий
Это понимание технологий, с которыми вы активно работаете в данный момент. Знания технологий недолговечны. Перестав работать с какой-то технологий вы постепенно начинаете забывать нюансы. В лучшем случае эти нюансы осядут в долговременной памяти. Тогда если вы снова с этим столкнетесь даже через год, то быстро восстановите в памяти всю картину. В худшем случае знания через некоторое время улетучатся совсем. При необходимости в будущем с ними работать придется вникать повторно.
Знания о разных техологиях плохо сосуществуют друг с другом одновременно. Долго пишешь sql запросы - постепенно вылетают знания по JQuery. Разработал asp.net core приложение - забыл winforms и webforms. Охватить и запомнить все не получится.
В последнее время знания технологий стали довольно хрупкими. Они быстро появляются и быстро умирают. В книге Талеба можно провести аналогию с одной закономерностью. Если технология уже долго живет, как например SQL c 70-х годов прошлого века, то с высокой долей вероятностью такой долгожитель продолжит свое существование. В ближайшее десятилетие наверняка. А какой-нибудь хайповый JavaScript фреймворк вылетит в трубу в ближайшие пару лет вместе с потраченным на его изучение вашим временем. Поэтому надо очень вдумчиво выбирать во что инвестировать свое нерезиновое время. В свое время я не стал абсолютно ничего читать про silverlight. Не потратил ни минуты свое времени. И не зря.

Книги
Ценность книг для меня со временем стала падать. С самого начала своей карьеры я читал взахлеб. Про проектирование, дизайн, тестирование, юзабилити, паттерны, технологии с которыми непосредственно работал. Увы, без постоянной практики многие знания вылетали. А практиковать все и вся не было возможности.
Конечно ценность ряда книг неоспорима. Например "Совершенный код" Макконела. Но будучи новичком вы конечно сможете похвалиться такой прочитанной книгой, но суть не ухватите. Это тоже самое, что в школе писать сочинение про "Войну и мир".
Когда я изучал ASP.NET Webforms, то прочитал всего Дино Эспозито. Мне хотелось хорошо разобраться в вопросе. Понять фундаментальные основы платформы. Да и просто приятно разрабатывать с пониманием вещей. Про ASP.NET Core книги я уже не читаю. Просто нет смысла. Обновления выходят с такой скоростью, что читать фундаментально уже не хватит времени. 

Stackoverflow
Быстрое устаревание знаний хорошо заметно по ответам на нашем любимом stackoverflow. Еще буквально несколько лет назад в поисках решения достаточно было посмотреть первый правильный ответ. В большинстве случаев он вполне устраивал. Сейчас такой подход уже не работает. Правильный ответ чаще всего уже морально устарел:
  • Может быть он еще подходит, но с новыми возможностями языка оно будет короче и понятнее. 
  • Может актуален только для старой версии какого-нибудь фреймворка. 
В итоге надо пролистывать список ответов до конца. Вчитываться в каждый и чутьем понимать какой ответ теперь правильный для вашей конкретной ситуации.
Забавно читать вопросы по asp.net core. Там обычно по факту несколько правильных ответов с кучей коментов, аля в версии 1.0 это походит, в 1.1 не работает, а в 2.0 вообще api изменился и там надо вместо молотка дрель брать в руки.


Какой вывод я хотел сделать из написанного? Надо беречь свое время. Оно скоротечно. Вдумчиво выбирать во что его инвестировать. Ценность ряда программистских знаний аналогична по сроку годности скорее йогурту чем тушенке. А потраченное время вам никто не вернет.

понедельник, 1 января 2018 г.

Крутой муж?

А вы знаете кто такой "крутой муж"?

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

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

Подумал про себя и пришел к нескольким выводам:

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

А ты крутой муж?

Наиболее эффективное программирование на C# - Билл Вагнер (2-е издание)

Закончил чтение очередной книги Билла Вагнера - Наиболее эффективное программирование на C#. 50 способов улучшения кода (2-е издани...