LINUX.ORG.RU
ФорумTalks

Сисадмин: разочарование в профессии


5

3

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

Работа админом толкает человека к универсальности, развитию сразу по многим направлениям. Служба каталогов, файл-сервер, веб-сервер, сервер системы контроля версий, база данных + бекап/восстановление и репликация, сетевое оборудование, мониторинг, немного телефонии, железо, некромантия(старое железо) ... Если у программистов в рабочей книжке обычно пишут «инженер-программист», то админ может требовать себе запись «программист-разнорабочий». И это очень плохо. Пусть есть два человека. Первый имеет объём знаний по пяти разным областям, допустим, равный условной единице. Второй - три условных единицы в одной области, и по одной в двух других.Суммарный объём их знаний одинаков. Первый стоит x денег, а второй - 3x. Потом первый повысил свою квалификацию во всех пяти областях до 2. Второй - повысил квалификацию в своей основной области до 8, не прогрессируя в остальных. Объём полученных ими новых знаний одинаков. Первый теперь стоит 2x, второй - 8x. Второй будет делать сложные и интересные задачи по специализации, развиваясь и получая удовольствие от работы. Первый будет служить «во-всех-бочках-затычкой».

Интересные задачи делают узкие специалисты. Нормальные деньги получают узкие специалисты. Это, на самом деле, тесно связанные между собой вещи: не всякая высокооплачиваемая работа интересна, но всякая интересная работа - высокооплачиваема. Правило имеет исключения, вроде развиливающихся предприятий оборонки, но речь сейчас не о них. Да, разумеется, много где требуются люди с широкой специализацией. Но если где-то нужен сетевик и, по совместительству, DBA - значит там нужен не очень сильный сетевик и не слишком хороший DBA. На уровне «лишь бы работало». Потому что эта контора не может себе позволить большее, ну или не хочет - если это не основное направление её деятельности. Если бы там были серьёзные задачи - этих двоих набирали бы по отдельности.

Абсолютная специализация, конечно, тоже плохо. Во-первых, специалист по закручиванию семиугольной нижней гайки потеряет работу, когда такие гайки выпускать перестанут. Во-вторых, многие области IT сильно связаны между собой, поэтому результат работы сферического спеца в вакууме, не знакомого ни с одной из смежных областей, просто невозможно никуда приткнуть. Но именно знакомства, более или менее поверхностного, вполне достаточно. Дальнейшее углубление в смежные темы - потеря времени, которое можно было потратить на то, чем занимаешься. Просто надо осваивать свою область чуть шире, чем контекст конкретных узких задач, и всё будет хорошо. Не думаю, что нормальный DBA, всю жизнь работавший с MS SQL, после внезапного наступления вендокапца :) испытает особые трудности с переползанием на Oracle.

Когда на 4 курсе, не имея профильного образования, я пошёл работать за смешные копейки в тех. поддержку, занимаясь понемногу всем подряд - это была очень серьёзная ошибка. Если бы вместо этого я потратил пару месяцев на базовое обучение программированию, и пошёл junior-программистом, за те же смешные копейки, но с более узкой специализацией - сейчас я занимался бы гораздо более интересными и захватывающими вещами, причём за большие деньги.

★★★

Последнее исправление: cetjs2 (всего исправлений: 1)

...админ может требовать себе запись «программист-разнорабочий».

Инженер-электроник, не?

Чо тебя напрягает? Запись в трудовой? Работа не по душе? Мало денег?

Про деньги, сразу скажу - ерунда это. Важно, чтобы их в принципе хватало на жизнь+

Здоровье важно. Востребованность важна. Отношения с окружающими важны. А бабки в принципе - фигня.

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

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

В инст попал - тоже целая история, «героико-приключенческая» =)) Специальность выбирал «методом тыка»: подошёл к стенду и ткнул пальцем, рассуждая примерно так: экономизмы я вообще не понимал по факту рождения, механику недолюбливал (хотя отец с детства старался привить навык «прямых рук»; ему это отчасти удалось, но теория отпугивала), электронику в принципе знал, паять умел, да и в армии пришлось немного с этим делом поработать: связь и радиостанции. В общем, прочитал «АСУ и ЭВМ», сдал документы и получил благословение доброй пожилой тётеньки из приёмной комиссии (кстати, спустя годы случайно встретил её на улице и она меня узнала, несмотря на то, что через её руки прошли тысячи абитуриентов).

В школе мне практически все «пели», что моё место среди гуманитариев. Журфак, истфак, юрфак. Неплохо (как говорили) писал, но советы я слушать не любил, пёрся часто напролом, так поступил и в тот раз. Тоже отдельная история, непечатная =)))

Работал много где, был и эмбеддером и сисопом. Косяков было куча (а сколько ещё будет!). Самый крутой и противный косяк - взялся реализовывать задачу по БД, имея лишь общее представление о процессе разработки. За этот косяк оч. стыдно. Бывает, думаешь, аж краснеешь изнутри.

Так что всё фигня. Главное - хотеть и мочь. Понятно, все мы человеки и у каждого из нас бывают эмоциональные спады.

Захочешь программировать - научишься.

Как-то так, извини за сумбур.

Deleted
()
Ответ на: комментарий от gh0stwizard

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

Покажи мне, где какой спеке на w3c описаны, например, табы, которые присутствуют во всех приличных браузерах. Если нет на w3c, то покажи, в какой спеке описаны табы гугл хрома (гугл же успешная американская компания, значит в ней все делают так как ты себе представляешь в розовых снах), ну или любой другой успешной компании с американским менеджментом и имеющей в числе своих продуктов браузер^Wда хоть что-нибудь с табами.

спеки на w3c пишутся пост-фактум, когда соответсвующие фичи уже есть в большинстве продуктов, поэтому и нужен программист/бывший программист, который сможет описать то что уже есть, чтобы в будущем не было недопониманий и разночтений. в моем понимании этот человек опять же не обязан кем-то там руководить (как ты тут писал) и вообще эта должность в РФ обычно называется технический писатель, афаир.

в большинстве случаев в реальной жизни спеки пишутся на ещё не существующие фичи, поэтому если такую спеку будет писать программист, то он туда заложит свое понимание, как эту возможность надо реализовать и может оказаться неправ (и если спека большая, то 146% в ней будет несколько мест, где такой составитель спеки окажется неправ).

maloi ★★★★★
()
Ответ на: комментарий от Solace

IT позволяет заработать сносные (не шикарные, но и далеко не копейки) деньги с относительным минимумом геморроя, вот в чём прелесть.

lazyklimm ★★★★★
()
Ответ на: комментарий от maloi

табы

The NeWS version of UniPress's Gosling Emacs text editor was the first commercially available product to pioneer the use of multiple tabbed windows in 1988.

http://en.wikipedia.org/wiki/Tabbed_browsing

Спека была такая: видите, тут, мультиокошки? Хочу такую же! Немедленно! Всем фигачить код пока не будет получен прототип! Никто никуда не уходит!

gh0stwizard ★★★★★
()
Ответ на: комментарий от maloi

спеки на w3c пишутся пост-фактум

Когда вышел HTML5, CSS3, что все браузеры поддерживали все фичи? Епрст, да и сейчас не все фичи из стандарта запилены как надо. Драфт с базовыми концепциями возможно раздали всем крутым дядям пилильщикам раньше, ну чтобы согласовать какие-то моменты, а дальше все, релиз спеки и пилите как хотите.

Я вот специально залез на вики. Удивись, шел 2004 год.... http://ru.wikipedia.org/wiki/Html5

gh0stwizard ★★★★★
()
Ответ на: комментарий от selivan

А ещё проще сдать тем, кого называют программистом. Некоторые думают, что это те, кто телевизоры чинят или холодильники.

BattleCoder ★★★★★
()
Ответ на: комментарий от gh0stwizard

из твоей же ссылки

Для того чтобы спецификация получила статус «W3C рекомендована», необходимы две законченные на 100 % и полностью взаимодействующие реализации

удивись, но до html5 до сих пор не вышел и развивается/обновляется.

maloi ★★★★★
()
Ответ на: комментарий от gh0stwizard

Спека была такая: видите, тут, мультиокошки? Хочу такую же! Немедленно! Всем фигачить код пока не будет получен прототип! Никто никуда не уходит!

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

так где пример хоть какой-нибудь спеки? таки не во всех продуктах табы появились в течение пары лет, в некоторых они появились лет через 15 после 1988.

maloi ★★★★★
()
Ответ на: комментарий от selivan

Я пока школьник, и как следствие того что она мне не нужна могу кодить по 5-10 часов в день. Это прекрасно. Учись кодить, никогда не поздно.

knotri
()
Ответ на: комментарий от maloi

Я же уже говорил. Спека на Си/Си++ или ты думаешь, что все звонят в коммитет ISO, чтобы уточнить что тут написано?

Ладно, спека на яп чаще выходит после реализации.

Спека на несуществующее — BNF. Хороший пример? Для постановки задачи достаточно сказать напишите движок DSL с использованием BNF.

gh0stwizard ★★★★★
()
Ответ на: комментарий от gh0stwizard

Ладно, спека на яп чаще выходит после реализации.

именно

Спека на несуществующее — BNF.

BNF не описывает что DSL должен делать в соответствующих конструкциях, или я что-то пропустил?

Для постановки задачи достаточно сказать напишите движок DSL с использованием BNF.

эта постановка задачи примерно соответствует «я хочу кнопку „сделать заебись“», простите за мой французкий.

maloi ★★★★★
()

Ты в обязанностях админа, смешал обязанности нескольких специальностей: дба, сис-админа, прогера и т.п. Многое зависит от места работы, мне тоже приходиться и с базами возиться, и с серваками, и еще много с чем, однако основная моя специальность - программист. Но я даже рад, что так получается. Да и как тов. strangeman писал, никто не мешает уйти в узкую специализацию

стать спецом-сетевиком, безопасником, спецом по высоконагруженным системам?

mau5
()
Ответ на: комментарий от maloi

BNF не описывает что DSL должен делать в соответствующих конструкциях, или я что-то пропустил?

Да, не описывает. Добавим еще одно предложение: DSL-движок должен получится таким, что я могу задавать синтаксис и называть конструкции как хочу и иметь возможность делать привязки к заданным конструкциям, описывать их на том же ЯП, на котором пишется движок DSL. Или коротко: DSL-движок для программиста.

Так лучше? Или всеравно непонятно7 Тут, как бы и думать не надо. Просят написать движок, а не законченную реализацию DSL. Оконченный DSL может написать вообще другой человек, но используя готовый движок.

При этом, я не стал расписывать UI-составляющую, ибо для движка она также не играет роли. К движку можно прикрутить UI, но это будет конструктор DSL. Также являясь законченным продуктом.

В этом задании спека есть и она достаточно полная. Потому что, не будь BNF так хорошо описан, не было никаких реализаций DSL-движков, коих написано предостаточно.

Задача программиста состоит в том, чтобы взять спеку на BNF и прикрутить ее к своему ЯП. Все. Что тут не понятно? Как прикрутить? Это не задача спеки, извините. Программист должен допереть до этого сам, и это его задача. Довольно тривиальная на самом деле.

Более того, эту задачу ставят в иностранных ВУЗах, не знаю на каком курсе. И она довольно широко известна и повсеместно используется.

Update: техническая реализация будет сильно зависеть от ЯП, ибо в некоторых ЯП невозможно нормально делать привязки к функциям или задавать переменные. Либо можно, но сложно. В других ЯП все это будет возможно проще делать. Увы, это не проблема спеки, BNF в частности. Это технические ограничения, которые накладываются в любом проекте. Если ограничения не совпадают с главным ТЗ (ТЗ, а не спекой), то спека корректируется, либо программист ищет другие обходные пути.

gh0stwizard ★★★★★
()
Последнее исправление: gh0stwizard (всего исправлений: 1)
Ответ на: комментарий от gh0stwizard

ты либо запутался, либо одно из двух.
ты сначала сказал, что BNF - это пример спеки на несуществующий DSL.
но BNF - не может быть спекой, как мы вроде оба понимаем.
то задание, что ты написал - это «взять спеку на формат BNF» - надо заметить, у этой спеки не единичная реализация, и «сделать ещё одну реализацию» этой спеки.

maloi ★★★★★
()
Ответ на: комментарий от maloi

=)))

Не надо запутывать меня и себя. Ты писал/использовал DSL хоть раз в жизни? Если использовал/писал, то объясни мне, что не понятно?

BNF не связан с DSL? А я говорю связан, при этом настолько сильно, что BNF является ядром движка DSL. Движок DSL может не использовать BNF. Может, но задача состоит в том, чтобы использовать. Если я скажу, чтобы использовалось что-то другое, то это будет другая спека.

Итак, BNF это спека. В ней четко и ясно описано, что я должен ожидать на выхлопе. В частности основным является возможность задания ключевых слов (левая часть) и возможность задания действий (правая часть). Для движка правая часть всегда будет тесно связана с ЯП, на котором пишется движок (или если используется несколько ЯП, какого-то одного или всех сразу). Правая часть может даже быть вторым, внутренним DSL. Это неважно.

у этой спеки не единичная реализация

Спека не описывает реализацию. Спека описывает, что я должен получить. Если спека описывает реализацию, то это уже не спека. Это полное техническое описание проекта.

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

ты сначала сказал, что BNF - это пример спеки на несуществующий DSL.

Я такого не говорил. Поскольку, выше я уже все разжевал, скажу кратко. Для любой спеки может быть 100500 реализаций, но все они в итоге будут делать то, что указано в спеки. Если в спеки говорится, что если нажать ЛКМ и экран окрасится в желтый, то так и будет. Во всех реализациях. Однако, поскольку не сказано весь экран или только часть его, то в каких-то реализациях будет окрашиваться весь экран, в других всего лишь часть экрана, а в третьих будет возможность задания как должен окрашиваться экран.

gh0stwizard ★★★★★
()
Последнее исправление: gh0stwizard (всего исправлений: 1)
Ответ на: комментарий от gh0stwizard

BNF - это описание грамматики, по грамматике нельзя определить значение слов или словосочетаний.

Итак, BNF это спека. В ней четко и ясно описано, что я должен ожидать на выхлопе. В частности основным является возможность задания ключевых слов (левая часть) и возможность задания действий (правая часть)

ЩИТО?

Спека описывает, что я должен получить.

конечно, и BNF - не описывает что должна делать каждая конструкция DSL, а всего лишь в каком порядке эти конструкции можно располагать.

Если в спеки говорится, что если нажать ЛКМ и экран окрасится в желтый, то так и будет

конечно, и в BNF нельзя такое записать, можно записать только «можно нажимать ЛКМ»

maloi ★★★★★
()
Ответ на: комментарий от maloi

BNF - это описание грамматики, по грамматике нельзя определить значение слов или словосочетаний.

Хорошо, что ты это заметил. Движок DSL != DSL. Движок. Движок. Движок-пирожок, через поле как снежок.

Для постановки задачи достаточно сказать напишите движок DSL с использованием BNF.

Сисадмин: разочарование в профессии (комментарий)

конечно, и BNF - не описывает что должна делать каждая конструкция DSL, а всего лишь в каком порядке эти конструкции можно располагать.

В контексте движка это то, что ожидается. Давай объясню подробнее. Движок DSL позволяет писать любые конструкции, создавать любые привязки слово -> действие. С помощью движка DSL пишутся свои мини/микро ЯП. На основе движка DSL можно делать конструкторы DSL, т.е. готовые программы, в которых легко и просто создавать свои ЯП и использовать в своих проектах. Одним из таких конструкторов является для Java MPS. Движок не описывает конечный синтаксис, грамматику, словосочетания и т.д и т.п. новообразовавшегося языка! С движком можно создавать свои DSL, аля конечные реализации своего ЯП. Именно, то, что ты привык ожидать от аббриватуры DSL.

конечно, и в BNF нельзя такое записать, можно записать только «можно нажимать ЛКМ»

Не надо запутываться. BNF это BNF, нажать ЛКМ это нажать ЛКМ. Я не использовал их в одном предложении.

gh0stwizard ★★★★★
()
Последнее исправление: gh0stwizard (всего исправлений: 1)
Ответ на: комментарий от gh0stwizard

я кажется понял, где ты меня запутал.

1. движки DSL с использованием BNF - уже существуют, а ты мне обещал пример спеки на несуществующую штуку.

2. «напишите движок DSL с использованием BNF.» - опять же, на выходе от такой спеки можно ожидать чего угодно, но только не того что ты реально хотел. тут сразу вспоминается боянная картинка http://seodemotivators.ru/wp-content/uploads/netlenka.jpg

maloi ★★★★★
()
Ответ на: комментарий от maloi

движки DSL с использованием BNF - уже существуют, а ты мне обещал пример спеки на несуществующую штуку.

Существуют, но не для всех ЯП и не для всех ЯП в открытом доступе. Сама идея DSL возможно появилась сразу как создали первые ЯП.

на выходе от такой спеки можно ожидать чего угодно, но только не того что ты реально хотел

Нет. Почему-то в программерском круге, когда речь идет о BNF все как раз ассоциируют с DSL (конечно, если знают как пишутся DSL-движки или их подобия). В других кругах, как отмечено на вики (если ты черпал инфу оттуда) имеется в виду синтаксис для RFC.

боянная картинка

Зачетно.

я кажется понял, где ты меня запутал.

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

Как-нибудь в другой раз, предложу более удачный пример. А пока, нафлудили в теме не по делу.

gh0stwizard ★★★★★
()
Последнее исправление: gh0stwizard (всего исправлений: 1)
Ответ на: комментарий от gh0stwizard

Нет. Почему-то в программерском круге, когда речь идет о BNF все как раз ассоциируют с DSL (конечно, если знают как пишутся DSL-движки или их подобия).

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

maloi ★★★★★
()
Ответ на: комментарий от maloi

Тут я делал ремарку насчет реализации. Одна из сложных реализаций, которую я знаю имеется для c/c++, но она уже имеется: yacc/bison. Да, он не идеален. Да, не для всех задач подходит. Прежде чем писать свои DSL-движки стоит поискать готовые реализации, может они уже есть и подойдут тебе.

gh0stwizard ★★★★★
()
Ответ на: комментарий от gh0stwizard

Дело не в сложности реализации, а в том, что в моем случае он (уже готовый) оказался бесполезен. Если бы его не было, и я как программист дал кому-то задание «сделай движок для DSL на BNF», то его работа оказалась бы выкинутой зазря, т.к. я, как программист сделал неверное предположение (при помощи движка для DSL можно написать тот DSL что я хочу). И это ещё хорошо, если бы она оказалось выкинутой, а не было бы потрачено ещё уйма времени чтобы в хороший изначально движок приделать костылей, чтобы мою задачу можно было решить.

maloi ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.