Привет, Хабр! Представляю вашему вниманию перевод статьи "Things I Don’t Know as of 2018" автора Дэна Абрамова.


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


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


Почему я думаю, что это важно


Во-первых, часто существует нереалистичное ожидание, что опытный инженер знает каждую технологию в своей области. Вы видели "карту обучения", которая состоит из сотни библиотек и инструментов? Это полезно, но пугает.


Более того, неважно насколько вы опытны, вы все равно можете обнаружить, что переключаетесь между чувством способности, неадекватности (“Синдром самозванца”) и самоуверенности (“эффект Даннинга–Крюгера”). Это зависит от вашего окружения, работы, личности, коллеги, психического состояния, времени суток и так далее.


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


Слышать, что “мы все начинающие разработчики”, может быть обескураживающим и звучать как пустой разговор с учащимися, столкнувшимися с фактическим пробелом в знаниях. Признания от доброжелательных практиков, таких как я, которые не могут превозмочь это.


Тем не менее, даже опытные инженеры имеют много пробелов в знаниях. Этот пост о моих, и я призываю тех, кто может позволить себе подобную слабость, поделиться своими. Но давайте не будем обесценивать наш опыт, в этот момент.


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


С этим не несу ответственности, вот лишь несколько вещей, которые я не знаю:


  • Команды Unix и Bash. Я умею ls и cd, но также подсматриваю все остальное. Я понял концепцию трубопровода(piping), но использовал ее только в простых случаях. Я не знаю, как использовать xargs для создания сложных цепочек или как составлять и перенаправлять различные потоки вывода. Я никогда как следует не изучал Bash, поэтому могу писать только очень простые (и часто глючные) сценарии оболочки.
  • Языки низкого уровня. Я понимаю, что Assembly позволяет вам хранить вещи в памяти и перемещаться по коду, но это все. Я написал несколько строк на C и понимаю, что такое указатель, но не знаю, как использовать malloc или другие методы ручного управления памятью. Никогда не баловался с Rust.
  • Сетевой стек. Я знаю, что у компьютеров есть IP-адреса, и DNS — это то, как мы работаем с именами хостов. Я знаю, что существуют протоколы низкого уровня, такие как TCP / IP для обмена пакетами, которые (возможно?) гарантируют целостность. Вот и все — в деталях не разбираюсь.
  • Контейнеры. Я без понятия, как использовать Docker или Kubernetes. (Связаны ли они?) У меня есть смутное представление о том, что они позволяют мне разворачивать отдельную виртуальную машину. Звучит круто, но я не пробовал.
  • Serverless. Также звучит круто. Никогда не пробовал. У меня нет четкого представления о том, как эта модель меняет бэкэнд-программирование (если оно вообще это делает).
  • Microservices. Если я правильно понимаю, это просто означает, что «многие конечные точки API общаются друг с другом». Я не знаю, каковы практические преимущества или недостатки этого подхода, потому что я не работал с ним.
  • Python. Мне всегда плохо вспоминать это — я работал с Python в течение нескольких лет, и я никогда не удосужился изучить его. Есть много вещей, таких как поведение при импорте, которые для меня темный лес.
  • Node JS. Я понимаю, как запустить Node, использовал некоторые API, например fs, для сборки инструментов, и могу настроить Express. Но я никогда не общался через Node с базой данных и не знаю, как написать в ней бэкэнд. Я также не знаком с React фреймворками, такими как Next, дальше «hello world».
  • Native платформы. Я пытался изучить Objective C в какой-то момент, но это не помогло мне. Свифт я тоже не учил. То же самое и с Java. (Я, вероятно, смог бы осилить их, так как работал с C#.)
  • Алгоритмы. Максимум, что вы добьетесь от меня, это пузырьковой сортировки(bubble sort) и, возможно, быстрой сортировки(quicksort ) в лучшем случае. Я, вероятно, могу выполнять простые задачи обхода графа, если они связаны с конкретной практической проблемой. Я понимаю нотацию O(n), но мое понимание не намного глубже, чем «не помещайте циклы в циклы».
  • Функциональные языки. Если вы не посчитаете JavaScript, то я не владею каким-либо традиционно функциональным языком. (Я свободен только на C # и JavaScript — и уже подзабыл C#.) Мне с трудом удается прочитать вдохновленный Лиспом (как Clojure), вдохновленный Хаскелем (как Elm), или ML-вдохновленный (как OCaml) код.
  • Функциональная терминология. Map и reduce знаю сколько нужно. Не знаю моноидов, функторов и т. д… Я знаю, что такое монада, но, возможно, это всего лишь иллюзия.
  • Современный CSS. Я не знаю Flexbox или Grid. Floats — это моё всё.
  • Методологии CSS. Я использовал БЭМ (имеется в виду как часть CSS, а не оригинальный БЭМ), но это все, что я знаю. Я не пробовал OOCSS или другие методологии.
  • SCSS / Sass. Никогда не принимался изучать их.
  • CORS. Я боюсь этих ошибок! Я знаю, что мне нужно настроить заголовки, чтобы их исправить, но в прошлом я потратил на это уйму времени.
  • HTTPS / SSL. Никогда не настраивал это. Не знаю, как это работает, кроме идеи закрытых и открытых ключей.
  • GraphQL. Я могу прочитать запрос, но я на самом деле не знаю, как выразить вещи с помощью nodes и edges, когда использовать fragments и как там работает пагинация.
  • Сокеты. В моем понимании они позволяют компьютерам общаться друг с другом вне модели запрос / ответ, но это все, что я знаю.
  • Потоки. Кроме Rx Observables, я не работал с потоками так близко. Я использовал старые Node потоки один или два раза, но всегда получал ошибку в обработке.
  • Electron. Никогда не пробовал его.
  • TypeScript. Я понимаю концепцию типов и умею читать аннотации, но никогда не писал ее. Несколько раз я пытался, но столкнулся с затруднениями.
  • Развертывание и devops. Я могу отправить несколько файлов по FTP или убить какие-то процессы, но это предел моих навыков в devops.
  • Графика. Будь то canvas, SVG, WebGL или низкоуровневая графика, я не смышлен в этом. Я понял общую идею, но мне не нужно изучать простые вещи.

Конечно, это не полный список. Есть много вещей, которых я не знаю


Это может показаться странным для обсуждения. Об этом даже не стоит писать. Я хвастаюсь своим невежеством? Мой вывод к этому посту заключается в следующем:


  • Даже ваши любимые разработчики могут не знать многих вещей, которые вы знаете.
  • Независимо от вашего уровня знаний, ваша уверенность может сильно отличаться.
  • Опытные разработчики очень компетентные, несмотря на пробелы в знаниях.

Я знаю о своих пробелах в знаниях (по крайней мере, части из них). Я могу заполнить их позже, если мне станет интересно или они понадобятся для проекта.


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

Комментарии (59)


  1. Shishka
    30.03.2019 18:53
    -2

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


  1. Sazonov
    30.03.2019 18:53
    +3

    Насколько становиться профессионалом и в какую сторону развиваться каждый решает для себя сам. Советую вам поискать «матрицу компетентности программиста» — вы тогда поймёте, на каком уровне застряли. И тогда уже решите, надо ли вам двигаться дальше.
    Лично я с детства страдаю любознательностью и не собираюсь останавливаться на том, что знаю на данный момент.


    1. androidovshchik
      30.03.2019 20:27

      страдаю любознательностью

      По-моему, это великий дар. Хуже, если тебе ничего не интересно, по опыту скажу. Ни в чем не видишь смысл


      1. Fedcomp
        31.03.2019 00:41
        +1

        А это может быть обычная депрессия или выгорание.


    1. cynovg
      31.03.2019 10:05
      +1

      Поискал, нашел кучу устаревших и/или спорных картинок. О какой именно матрице речь?


      1. nanshakov
        31.03.2019 14:46

        1. cynovg
          31.03.2019 14:52

          Спасибо. А как относится дата оригинала к переводу? Перевод дополняется? Речь о

          Версия документа от 17.05.2013


        1. OnYourLips
          31.03.2019 16:13

          Относительно своей области (корпоративная разработка) могу сказать, что она неактуальна и крайне субъективна.

          Часть из этих знаний узкоспециализированная и нужна не всем, часть переоцененная, часть недооцененная (то, что в последнем уровне я бы на первый перенес, а во 2 и 3 добавил бы требований), а часть — сомнительные и даже вредные практики.

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


  1. Ilha
    30.03.2019 20:52
    +4

    Пост спорный и лично для меня интересный. И я хочу обратить внимание минусующих, что мы ставим оценку переводу — то есть тому человеку, который потрудился принести нам небезынтересный пост. Поэтому минусы смотрятся странно, честно! Автору — спасибо, май инглиш из бед, и я рад переводам.


    1. ookami_kb
      30.03.2019 22:46
      +2

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


      1. inoyakaigor
        31.03.2019 15:35

        del


    1. mammuthus
      31.03.2019 11:52

      Дело именно в низком качестве перевода, оно бросается в глаза с первых строк.


    1. TheShock
      31.03.2019 13:10

      Перевод — отвратительный, пример:


      Я свободен только на C # и JavaScript — и уже подзабыл C#.


  1. TyVik
    30.03.2019 20:56
    +5

    1. Dreyk
      30.03.2019 22:50
      +1

      не просто перевод, а авторский перевод


  1. UnclShura
    30.03.2019 20:56
    +7

    Я вот не знаю кто такой Дэн Абрамов и почему то, что он не знает так важно для нас. А ещё почему люди думают, что он много знает. И почему люди вообще о нем думают.


    1. TheShock
      31.03.2019 13:10
      -1

      У него есть большая группа обожествляющих его группи.


  1. epishman
    30.03.2019 21:05
    +3

    Этот чувак неимоверно крут, он знает много слов, которые типовой одинэсник даже не слышал.


    1. Neikist
      31.03.2019 10:59

      Вот не надо, довольно много 1сников о перечисленном представление имеют. Пусть на уровне автора оригинальной статьи или чуть меньшем. Говорю как недавний 1сник.


      1. DMGarikk
        31.03.2019 11:44

        недавний — вы им стали, или перестали быть?

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


        1. Neikist
          31.03.2019 12:07

          4.5 года был с 1с. С нового года на kotlin под андроид пишу. Но я некоторое время вращался в 1с коммьюнити в телеграме и там встречаются люди которые о перечисленном имеют вполне неплохое представление.


        1. Nalivai
          31.03.2019 13:18

          1C неплохо оплачивается


          1. Neikist
            31.03.2019 13:22
            +1

            Не сказал бы. Больше 200к мало кто имеет в 1с даже в москве. В моей провинции джун андроид или веб получает как среднетоповый 1с.


          1. DMGarikk
            31.03.2019 15:44

            У меня одинесный стаж около 10 лет, в т.ч. на 7.7

            Могу точно сказать что обычному программеру надо существенно меньше знать и иметь меньшую квалификацию чтобы получать денег больше одинесника. я уж молчу об особенностях работы не на фикси (разъезды)


  1. NeoCode
    30.03.2019 21:58

    Хорошо что вы знаете что именно вы не знаете:)
    Я вот честно не знаю, как придумать и сделать себе пассивный источник дохода в интернете, который приносил бы мне приличный стабильный доход и позволил бы заниматься тем что мне нравится и жить там где нравится. Вот это главное чего я не знаю. А все остальное…

    Современный стек веб технологий это вообще бурлящая хрень, в которой технологии появляются быстрее чем их в принципе можно изучать. Поэтому не проще ли ориентироваться на результат а не на технологии? Нечто подобное было с десктопом когда-то, когда все кричали «COM», «ActiveX», еще какие-то слова, и где оно теперь? Смешалось до уровня неотличимости от прочих низкоуровневых API. Думаю, то же и с вебом будет.


    1. ATwn
      31.03.2019 14:41

      Хорошо что вы знаете что именно вы не знаете:)

      «Мы не знаем того, чего мы не знаем.» А. Курпатов.


    1. CrashLogger
      01.04.2019 20:52

      Думается мне, что пассивный доход в интернете — это несбыточные мечты. Слишком быстро все меняется, слишком большая конкуренция, невозможно сделать, запустить и забыть. Любой сервис придется поддерживать, развивать, продвигать и это требует постоянного внимания. Для пассивного дохода проще заработать денег на обычной работе, купить несколько квартир и сдавать.


  1. m1ld
    30.03.2019 22:10
    +3

    Алло, это что за кодер такой? Я знаю 90% из того что он не знает.


    1. powerman
      30.03.2019 23:38
      +1

      Просто он пишет на JS под браузер. А там нет сокетов, шелла, пайпов, доступа к настройкам TCP/IP, malloc, настройки SSL…


      1. vlreshet
        31.03.2019 00:57

        А там нет сокетов
        Есть, ещё как есть! Вебсокетами зовутся.


        1. powerman
          31.03.2019 01:12
          +1

          Оно ими только зовётся. Примерно как джаваскрипт зовётся джавой.


    1. da-nie
      31.03.2019 08:21

      Ну, допустим. :) А так знаете? Вот есть сокеты. Есть функция select.
      Почему в Windows вызов select(0, &readfds, NULL, NULL, &tv); работает (и именно так и вызывается, с нулём в первом параметре), а в Unix нет? :)


    1. serf
      31.03.2019 10:39

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


      1. 4410
        31.03.2019 19:02

        С чего вы взяли что он кодер?

        Достаточно открыть его гитхаб. Это быстрее, чем писать комментарии, основанные на предположениях.


  1. questor
    31.03.2019 00:37

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

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


  1. muhaa
    31.03.2019 01:01
    -1

    Типичная ситуация. Меня зовут… и я алкоголик самозванец. Не знаю как писать многопоточные приложения. Каждый раз, когда нужно — пишу одну очередь задач, формируемую из разных потоков и обрабатываемую в одном потоке. Когда приходит время сделать из этого нормальное много-поточное приложение, собираюсь залезть в книги, но мне уже достается другой проект, а этой задачей занимается кто-то другой.
    Не знаю правильный ли я код пишу и правильно ли использую объектное программирование. Потому что никогда никому нет до этого дела — руководство хочет, чтобы все работало и уже вчера и как только начинает работать, дают следующую кучу задач. Потом мой код достается людям, которые его сопровождают и не берутся меня судить или судят, но я об этом не узнаю.
    Не знаю ничего про алгоритмы, даже про пузырьки. Когда нужен какой-нибудь алгоритм поиска и оптимизации того не знаю чего с 20 критериями просто импровизирую. Не уверен эффективно ли это в итоге, или можно было сделать лучше, если знать больше.
    Не знаю тонкостей и нюансов ниодной технологии из всех с которыми работал. Каждый раз откладываю изучение и просто использую базовые возможности для которых очевидно как они работают.
    Когда проектирую приложения, иногда до меня доходит фидбэк, что все плохо и пользователи ничего не могут понять, иногда что пользователи довольны. У меня есть ощущение, что я каждый раз горожу излишне сложные системы, но я не знаю наверняка так ли это и каждый раз нет времени и возможности разобраться.
    Не знаю в итоге, программист ли я, или мне достаются проекты просто потому что я за них берусь и потом достаются следующие, потому что все знают что я занимался предыдущими с переменным успехом.
    Расскажите кто еще чего-то не знает и ощущает себя «самозванцем».


  1. kashey
    31.03.2019 02:09
    +2

    — не знание всего того, чего не знает Дэн, не делает вас Дэном Абрамовым
    — знание всего того, чего не знает Дэн, не делает вас Дэном Абрамовым


    1. alix_ginger
      31.03.2019 14:55

      А кем меня делает/не делает незнание того, кто такой Дэн Абрамов?


      1. kashey
        31.03.2019 23:41

        Ох, счастливым человеком я надеюсь. Держитесь подальше от этого фронтенда.


  1. akura13
    31.03.2019 08:51

    Чел реально правду написал вот и все. Человеки склонны преувеличивать.


  1. i86com
    31.03.2019 09:48
    +1

    Если бы разработчики в самом деле знали технологии, с которыми работают, Skype бы не занимал 300 Mb оперативки, Gmail бы не тормозил, а Facebook бы не хранил вообще никакие пароли в plain text. И это я «по верхам» сейчас. Что «в низах» происходит, даже представлять не хочется.


    1. serf
      31.03.2019 10:30
      +2

      Склонен считать что все перечисленные примеры были осознанным и намеренным выбором компаний, а не незнанием технологий.


      1. InterceptorTSK
        31.03.2019 11:59
        +3

        Нет никаких компаний. Компании — это люди. В таком случае все же кто-то выбирал стек, и это вовсе не компания, а люди. И скорее всего — один-два человека. Так вот они похоже совсем ничерта не понимают в том что выбрали. Не им же писать на этом. И уж они совсем не разбирались в том, разбираются или нет в этом стеке подчиненные. В итоге вы видите то что видите. Ничего толком не работает. А даже если и работает — то крайне не оптимально.

        Выводы…


        1. VolCh
          31.03.2019 13:09
          -1

          А может просто оптимальность работы не была важным критерием при выборе?


          1. InterceptorTSK
            02.04.2019 07:26

            Дайте определение не оптимальной работе. Только без матов, пожалуйста.


            1. VolCh
              02.04.2019 11:20

              Вы написали «крайне не оптимально». И что бы вы не имели в виду, критерием могла быть не ваша метрика оптимальности. Пример: вы считаете что на PHP писать не оптимально бэкенд SPA, потому что сильно нагружает сервер это «родился чтобы умереть» или просто долго писать и много багов. А выбирающие стэк оптимизировали его по стоимости рабочей силы.


  1. arturpanteleev
    31.03.2019 10:45
    -1

    Очень странный пост. Что автор хотел сказать? Что можно не имея даже фундаментальных знаний на уровне первокурсника работать прогером и иметь хорошую репутацию в узких кругах?
    Допустим это возможно, если под программировнием понимать верстку формочек на модном js фрейме, или настройку тем для Wordpress.
    Да только вот все сильные программисты ИНЖЕНЕРЫ волей не волей знают большинство из того что тут перечисленно. И дело тут не в задротстве теории, просто чем больше опыт и чем больше твоя заинтересованность проектом, тем чаще тебе приходится вылазить из своей зоны ответственности и сталкиваться с проблемами, которые весьма косвенно относятся к твоей основной специальности.
    В общем, если верх ваших амбиций — это тупо делать задачи из бэклога, списывая время потраченное на кофебрейки и настольный тенис, то ок. А если хотите серьезного развития(как профессионального, так и технического) то рано иили поздно вам придется унать чем отличаетя виртуализация от контейниризации и чем TCP/IP отличается от OSI.


    1. VolCh
      31.03.2019 13:12
      +2

      Ну автор, грубо говоря, автор одного из модных js-фреймворков. Настолько модного, что некоторые считают его неотъемлемой частью другого.


    1. muhaa
      31.03.2019 13:25

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


    1. Vlad_IT
      31.03.2019 20:57

      Соглашусь с тем, что программисты должны знать OSI модель (если работают в каком-то виде с сетями), но для чего frontend разработчику знать в чем отличие виртуализации от контейниризации?
      Учиться приходится всегда, но объем знаний на столько большой, что всегда найдется человек, который скажет вам "как это вы это не знаете, это же банальные вещи".
      Вещи описанные Деном я на каком-то уровне знаю, но только по причине того, что раньше занимался десктопным программированием а позже фуллстеком. Но во frontend разработке, например работа с потоками уже не нужна (работа с web-worker'ами это не то).


      1. VolCh
        31.03.2019 21:01

        Не то, чтобы знать OSI должен, а представлять её в общих чертах.


        1. Vlad_IT
          31.03.2019 21:17
          +1

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


  1. arturpanteleev
    31.03.2019 10:49
    +1

    Комментарий к переводу: не бойтесь выражать мысли своими словами, это гораздо лучше чем перевод слово в слово. Например:

    Некоторая малая часть людей

    Можно вполне заменить на «немногие люди». И таких примеров много по статье.
    Т.е основная задача при переводе должна быть именно передать мысли автора, а не перевести каждое слово.


  1. AlexanderG
    31.03.2019 12:39
    +1

    Существует также авторский перевод, там слог посочнее: https://overreacted.io/ru/things-i-dont-know-as-of-2018/


  1. al6dy
    31.03.2019 12:50
    +4

    Невозможно знать все! Это факт. Если пытаться «быть в теме» во всех направлениях, то вы ничего никогда не добьетесь и будете висеть на уровне джуниора. Поэтому выбираете свое направление -> развиваетесь в нем по полной -> параллельно и чуть чуть без фанатизма затрагиваете общие аспекты = успех.


  1. DmitrySpb79
    31.03.2019 14:56

    Спасибо за перевод.

    На самом деле, скорость изменения технологий в ИТ реально обескураживает. Пока я пишу этот комментарий, наверняка в мире появилась еще одна новая библиотека. Те платформы и технологии, которые я использовал лет 10 назад (Windows Mobile, MFC, WTL) сейчас не нужны никому от слова «совсем», еще лет через 10 наверняка случится то же самое с тем, что я использую сейчас.

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

    Хотя в узкой специализации нет ничего плохого… пока не начинаешь искать новую работу, и не обнаруживаешь, что ближайшая вакансия по твоей специализации территориально в 200км :)


  1. Don_Eric
    31.03.2019 19:03

    интересно, как его взяли в Фейсбук с незнанием алгоритмов


    1. muhaa
      31.03.2019 20:31
      +1

      Серьезных специалистов никто не отправляет к айчарам и не тестирует. Их собеседуют руководители и обсуждается в основном портфолио.


  1. veterok4
    01.04.2019 07:29

    Я не парюсь на счет того, что что-то не знаю. У каждого своя «клаузула».
    Ну, не нужно мне уметь хорошо варить металл — зачем лезть в это?
    Зато я умею хорошо считать сметы строительные.