Лично мне импонирует функциональное программирование. Но вот что я не совсем понимаю зачем его притягивать за уши. Ложится что-то прямо сейчас- напиши оставив комментарий. Но зачем это делать везде преодолевая трудности и усложняя жизнь коллег? Хочется ФП? Пиши на Lisp, Haskell и всех их родственниках и потомках. И тебе будет приятно и читать это будут люди, понимающие что происходит.
PS: я за то, что бы любой код, который хотя-бы теоретически может быть прочитан другим человеком, был или самоочевиден или был щедро сдобрен комментариями. Хотя-бы потому, что этим другим человеком можешь быть ты сам, но не выспавшийся, больной или мучимый похмельным синдромом и просто не помнящим что тут вообще происходит.
Скажу сразу, что статья мне в общем понравилась. Но что меня смущает, так это то, что автор как-то уж очень утрированно подходит ко многим вопросам.
Например про глобальное состояние и перезагрузки. Само по себе глобальное состояние это и не плохо и не хорошо. Все зависит только от качества реализации. Например я сейчас работаю с системой, софт для которой написан на языке, у которого _все_ переменные глобальные. И на этом языке написана большая часть как системного так и пользовательского ПО. Возможно вы подумаете, что эта система только и делает, что перезагружается? Но она рассчитана на то, что бы не перезагружаться вообще никогда. И это совсем не значит, что ничего нельзя менять. Можно. Прямо в работающих модулях. Налету. Вы грузите нужные изменения, а модуль продолжает выполнять работу. Причем не важно это модуль системный или пользовательский. Да, бывает, что в системе обнаруживаются ошибки. Но это ни коим образом не влияет на работу всей системы. Система модульная. И для каждого процесса собирается цепочка необходимых модулей. Эта цепочка выполняется изолированно. И если что-то пошло не так, то это может повлиять только на текущий процесс. И что бы был понятен масштаб бедствия система может выполнять сотни тысяч таких цепочек. И что бы окончательно уверить вас в том, что главное- ровные руки, скажу, что это еще и система реального времени.
Я, как отец девочки-отличницы чуть младше вашего, не могу согласиться с вашим решением. Безусловно расставлять приоритеты крайне важно. Но правильно-ли вы их расставили? Это очень сложный вопрос. Лично я своей дочери посоветовал особое внимание уделить точным дисциплинам и языкам. На мой взгляд это тот минимум, к которому нужно стремиться каждому технарю. Остальные дисциплины то же важны. Но важны в том смысле, что их нужно учить, но не прилагая излишних усилий. Это тот резерв, из которого можно черпать время и силы. Но именно забить- это уже лишнее.
Можно-ли быть хорошим программистом не зная языков или психологии? Напрашивается ответ- да. Но это не совсем верно. Что бы быть хорошим в этом случае нужно быть как минимум гениальным программистом. Дело в том, что в современном мире мы вынуждены себя продавать. И что бы вас продавал _кто-то_ как хорошего программиста вы должны просто лучиться гениальностью. Без самопрезентации о вас просто никто не узнает. В том числе и ваш первый работодатель. А именно для этого вам и понадобится та самая литература, история и все остальное на что вы забили в свое время.
И чем дальше, тем важнее будут становиться те самые «ненужные» дисциплины. Но наверстывать будет уже поздно.
Мне эта тема можно сказать близка. Моя жена около года назад ушла в эту область. Правда у нее был очень обширный опыт в другой области. Она преподавала в ВУЗах в том числе и за границей. Она доктор и профессор. Уходить в административную работу не очень хотела поэтому решила, что будет уходить куда-то, где ее знания будут востребованы. Ну и нужно понимать, что профессоров в 25 не бывает. 35 лет- крайне молодой доктор, а профессор в 40- ну очень круто. Сейчас она работает математиком в крупной международной компании.
В общем было-бы желание. Найти себя можно везде и всегда. И не зависит ни от пола, ни от возраста, ни даже от первоначальных знаний. Главное- все время двигаться вперед.
В большинстве областей не существует этой самой серебряной пули. А точнее она попросту не нужна. Вопрос в том, что нужно разобраться в технологических процессах. А именно этого топ-менеджеры делать и не хотят. Вот и придумывают как этого не делать.
KPI — одна из любимейших тем как инженера. Это было-бы очень смешно если бы я сам не был вовлечен в этот процесс. Например однажды с нас потребовали план по устранению аварий на квартал. Даже страшно вспоминать сколько было потрачено времени и нервов что бы объяснить начальству, что это тупо и мы не собираемся ломать оборудование что бы выполнить план.
Объяснить начальству, что не все сотрудники могут быть оценены этой методикой мы так и не смогли.
Это понимание очень дорого. В одной крупной компании появился новый президент. До этого он работал в пищевой промышленности, а пришел в IT. Он во всеуслышанье заявил, что за забором полно людей, готовых работать и за куда меньшие деньги и всех вас я имел ввиду. Подумаешь по клавИшкам стучать. Это все умеют. Ну инженеры и стали уходить целыми отделами. И вдруг оказалось, что стучать умеют все. Но не все знают какие нужные. Безусловно ж0па наступила не сразу. Все-таки инженеры действительно были хорошими. На старых наработках компания продержалась некоторое время. Потом, конечно, пришло озарение. Но во многих местах пришлось все начинать заново.
Так я вроде бы и написал, что сеньоры работают. Прямо так и написал :«Они все уже где-то работают...». Это как бы и значит, что они трудоустроены. Вы видите в моих словах какие-то противоречия?
Серьезных специалистов действительно мало. Но когда директор R&D говорит, что они ищут специалиста уже второй год это уже как-то перебор. И это не единственный случай.
Если на каждый рабочий стол отвести одно приложение
Я такого не говорил. Не нужно за меня додумывать.
Если пользоваться поиском, то нужно нажать хоткей для поиска, потом начать печатать. Потом убедиться, что сейчас поиск обнаружил именно то, что ты хотел запустить и потом нажать Enter. Или можно просто нажать хоткей и перейти к нужному окну вообще не задействовав мозг.
Что бы пользоваться хоткеем нужно в первую очередь его задать, убедится, что вы ни с чем не пересеклись. Прежде чем нажать сочетание нужно убедится, что вы нащупали нужные клавиши. А что если вы решили запустить приложение, которое не имеет быстрого сочетания? А если вы перепутали сочетание?
Не знаю как для вас, а для меня набор не особенно обременителен. Как ходить, дышать, ездить на велосипеде или машине, писать от руки. Или вам это то же трудно?
У меня на работе Windows, там мало что реализовано.
У меня на работе то же есть Windows. И там много что реализовано. Что именно вам не хватает?
А насчёт Линукса — если DE позволяет сделать так, чтобы приложение по хоткею запускалось, если оно ещё не запущено и переходило в фокус, если оно уже запущено — это замечательно. Значит дни тратить уже не нужно :). Кстати, о каком DE вы говорите?
Это было доступно всегда. И я говорю о любом DE.
Ну если ты вдруг считаешь, что какой-то способ сделать что-то самый эффективный и правильный и удобный — почему не поделиться своим мнением с окружающими :)?
Может быть потому, что это по крайней мере сомнительно? ;)
А насчёт выбора — если выбор широк, то тоже ведь надо выбрать какую-то одну вещь. Или несколько. И как-то обосновать для себя, что выбор верен.
Только если у вас диссоциативное расстройство личности и вам нужно всем остальным в вашей голове это обосновать. В остальных случаях можно руководствоваться понятием «нравится».
С дороговизной тут все сложно. Во-первых у меня сложилось впечатление, что сеньоры тупо закончились. Они все уже где-то работают и получают очень приличные деньги. Переманивать их — дело хлопотное и очень дорогое. Накинуть нужно будет немало что бы соблазнить. И совсем не факт, что вы друг-другу подойдете. А деньги уже текут рекой. А если пробовать стартеров и джунов, то это уже совсем другие деньги. И если брать хотя-бы вменяемых и в меру тупящих уже есть большой шанс через год получить толкового мидла. Безусловно есть шанс, что мидлы будут уходить, но с другой стороны и поработать успеют. К тому-же есть очень интересный феномен. Если джун пишет код совместно с сеньором, то они вдвоем пишут как 1.5 сеньора. По сути ученик разгружает учителя от того, что для него рутина и в результате он больше делает того, за что ему платят такие деньжищи. Но не все готовы учить молодняк и не все на это способны.
Но разве компоновка существующих средств не порождает новые функции? И если нет, то как тогда из средств, предоставляемых языком программирования создать новые элементы? Где грань? В общем с описанием нужно что-то делать ;)
Ну собственно, если программ больше двух этот самый альт-таб превращается в какую-то изощрённую пыточную карусель, потому что для выбора нужного окна из списка приходится приложить небольшое интеллектуальное усилие.
А кто вам мешает разграничивать задачи по рабочим столам? И кто не дает настроить по Tab отображать только приложения на текущем столе? Нужна другая задача? Переключаетесь горячими клавишами на другой стол и опять никакой пытки
Если сделать минимальное количество телодвижений, можно сильно упростить себе жизнь. Например, у меня часто используемые программы забиты на хоткеи.
Вы так часто переключаетесь с программы на программу? Не знаю как вы, а я вот не так что бы очень. Скажем у меня часто IDE отрыта на одной половине экрана, а броузер с документацией- на другой. Я пишу код в IDE и поглядываю на доки. Современные IDE и так напичканы всякими «помогалками». Куда проще? Шунт в мозг что бы вообще не шевелиться?
Забивать хоткеи? А смысл если есть поиск? Вы что слепым набором не владеете?
С моей точки зрения над приспособлением компьютера под свои нужны не стоит работать только тем, кто проводит за ним меньше двух часов в день.
Вы предлагаете потратить дни что бы экономить миллисекунды? Серьезно? А с учетом того, что все это уже реализовано в DE смысла это делать еще меньше.
Я понимаю, когда выбора нет. Лет 10 назад я перепиливал CDE под соляркой, потому, что можно было использовать только его. И выбор был либо пользоваться тем, что есть, либо хоть как-то адаптировать его под свои нужды. Но делать это если есть широчайший выбор да и еще доказывать всем, что этот путь самый правильный, эффективный и удобный? Не понимаю.
Левой рукой нажимаю на клавиатуре «Win». На экране у меня отображаются все запущенные приложения на текущем рабочем столе. Правой в это время беру мышь и кликаю на миниатюре размером с треть рабочего стола. Если нужное приложение не запущено, то набираю в поиске его название (первые буквы). Жму Enter. Мышь потом все-равно беру. Не думаю, что кто-то предпочитает пользоваться броузером без мыши.
PS: я ни в одной системе не пользуюсь иконками/ярлыками. Только поиск.
Статья интересная. Но есть но. Как все устроено так и не рассказано. И на это есть причина. По большому счету никто этого не знает. Никто не может сказать как правильно и эффективно выбирать. Никто не может дать гарантий, что решение задачек или знание технологий даст хороший результат. К тому-же у каждого человека есть свои наклонности. Одному ближе одно, другому- другое. Например в Системном уровне вы упоминаете функциональный подход. Моей дочке 12 лет и я с ней занимаюсь программированием. Ей до Системного уровня как до луны. Но именно эту часть она понимает. Просто это ее. Она сама предпочитает этот подход. Не смотря на то, что мы с ней занимаемся Python она достаточно неплохо читает мой код на Haskell не зная его синтаксиса. Что-то я ей подсказываю, но идею она видит очень быстро. Так что я бы сказал, что структура должна быть менее линейная.
Я проходил собеседования и сам их проводил. И из своего опыта могу сказать, что понять что-то очень сложно. Тот, кто казался подходящим, на деле оказывался не очень-то и хорош, а тот, кто был с натяжкой через полгода-год становился настоящим гуру. И, по-моему, единственный путь- пробовать.
С возрастом всё больше становится жалко времени на бесплодные ёрзанья мышкой; всё больше раздражения вызывает загружаемый с каждой DE какой-то бесконечный хлам, который съедает время и ресурсы с малопонятными целями
По-моему это противоречит самой статье больше, чем полностью. Мне жалко времени поэтому потрачу его в 10 раз больше да еще и с приключениями.
Мне, к примеру, то же жалко времени. Поэтому на компе, где я работаю, стоит четырехядерный i5, 16GB оперативки и SSD. Накачен Debian с настройками по умолчанию и нужный мне софт. Меня вообще не беспокоит что он грузит и сколько чего жрет. Все просто летает и, что самое главное, без моего участия.
PS: я за то, что бы любой код, который хотя-бы теоретически может быть прочитан другим человеком, был или самоочевиден или был щедро сдобрен комментариями. Хотя-бы потому, что этим другим человеком можешь быть ты сам, но не выспавшийся, больной или мучимый похмельным синдромом и просто не помнящим что тут вообще происходит.
С какой это стати любой из модулей будет портить данные? Вы в своих программах портите «чужие» данные просто потому, что можете?
И вы были невнимательны. Модуль менять не нужно. Изменения вносятся в работающий модуль.
И нет. Систему перезагружать не нужно.
Например про глобальное состояние и перезагрузки. Само по себе глобальное состояние это и не плохо и не хорошо. Все зависит только от качества реализации. Например я сейчас работаю с системой, софт для которой написан на языке, у которого _все_ переменные глобальные. И на этом языке написана большая часть как системного так и пользовательского ПО. Возможно вы подумаете, что эта система только и делает, что перезагружается? Но она рассчитана на то, что бы не перезагружаться вообще никогда. И это совсем не значит, что ничего нельзя менять. Можно. Прямо в работающих модулях. Налету. Вы грузите нужные изменения, а модуль продолжает выполнять работу. Причем не важно это модуль системный или пользовательский. Да, бывает, что в системе обнаруживаются ошибки. Но это ни коим образом не влияет на работу всей системы. Система модульная. И для каждого процесса собирается цепочка необходимых модулей. Эта цепочка выполняется изолированно. И если что-то пошло не так, то это может повлиять только на текущий процесс. И что бы был понятен масштаб бедствия система может выполнять сотни тысяч таких цепочек. И что бы окончательно уверить вас в том, что главное- ровные руки, скажу, что это еще и система реального времени.
Можно-ли быть хорошим программистом не зная языков или психологии? Напрашивается ответ- да. Но это не совсем верно. Что бы быть хорошим в этом случае нужно быть как минимум гениальным программистом. Дело в том, что в современном мире мы вынуждены себя продавать. И что бы вас продавал _кто-то_ как хорошего программиста вы должны просто лучиться гениальностью. Без самопрезентации о вас просто никто не узнает. В том числе и ваш первый работодатель. А именно для этого вам и понадобится та самая литература, история и все остальное на что вы забили в свое время.
И чем дальше, тем важнее будут становиться те самые «ненужные» дисциплины. Но наверстывать будет уже поздно.
В общем было-бы желание. Найти себя можно везде и всегда. И не зависит ни от пола, ни от возраста, ни даже от первоначальных знаний. Главное- все время двигаться вперед.
Объяснить начальству, что не все сотрудники могут быть оценены этой методикой мы так и не смогли.
Серьезных специалистов действительно мало. Но когда директор R&D говорит, что они ищут специалиста уже второй год это уже как-то перебор. И это не единственный случай.
Я такого не говорил. Не нужно за меня додумывать.
Что бы пользоваться хоткеем нужно в первую очередь его задать, убедится, что вы ни с чем не пересеклись. Прежде чем нажать сочетание нужно убедится, что вы нащупали нужные клавиши. А что если вы решили запустить приложение, которое не имеет быстрого сочетания? А если вы перепутали сочетание?
Не знаю как для вас, а для меня набор не особенно обременителен. Как ходить, дышать, ездить на велосипеде или машине, писать от руки. Или вам это то же трудно?
У меня на работе то же есть Windows. И там много что реализовано. Что именно вам не хватает?
Это было доступно всегда. И я говорю о любом DE.
Может быть потому, что это по крайней мере сомнительно? ;)
Только если у вас диссоциативное расстройство личности и вам нужно всем остальным в вашей голове это обосновать. В остальных случаях можно руководствоваться понятием «нравится».
Но разве компоновка существующих средств не порождает новые функции? И если нет, то как тогда из средств, предоставляемых языком программирования создать новые элементы? Где грань? В общем с описанием нужно что-то делать ;)
А кто вам мешает разграничивать задачи по рабочим столам? И кто не дает настроить по Tab отображать только приложения на текущем столе? Нужна другая задача? Переключаетесь горячими клавишами на другой стол и опять никакой пытки
Вы так часто переключаетесь с программы на программу? Не знаю как вы, а я вот не так что бы очень. Скажем у меня часто IDE отрыта на одной половине экрана, а броузер с документацией- на другой. Я пишу код в IDE и поглядываю на доки. Современные IDE и так напичканы всякими «помогалками». Куда проще? Шунт в мозг что бы вообще не шевелиться?
Забивать хоткеи? А смысл если есть поиск? Вы что слепым набором не владеете?
Вы предлагаете потратить дни что бы экономить миллисекунды? Серьезно? А с учетом того, что все это уже реализовано в DE смысла это делать еще меньше.
Я понимаю, когда выбора нет. Лет 10 назад я перепиливал CDE под соляркой, потому, что можно было использовать только его. И выбор был либо пользоваться тем, что есть, либо хоть как-то адаптировать его под свои нужды. Но делать это если есть широчайший выбор да и еще доказывать всем, что этот путь самый правильный, эффективный и удобный? Не понимаю.
PS: я ни в одной системе не пользуюсь иконками/ярлыками. Только поиск.
Я проходил собеседования и сам их проводил. И из своего опыта могу сказать, что понять что-то очень сложно. Тот, кто казался подходящим, на деле оказывался не очень-то и хорош, а тот, кто был с натяжкой через полгода-год становился настоящим гуру. И, по-моему, единственный путь- пробовать.
По-моему это противоречит самой статье больше, чем полностью. Мне жалко времени поэтому потрачу его в 10 раз больше да еще и с приключениями.
Мне, к примеру, то же жалко времени. Поэтому на компе, где я работаю, стоит четырехядерный i5, 16GB оперативки и SSD. Накачен Debian с настройками по умолчанию и нужный мне софт. Меня вообще не беспокоит что он грузит и сколько чего жрет. Все просто летает и, что самое главное, без моего участия.
Нет. Тут все правильно. Сам Swift кроссплатформенный.