Код: это тривиально Перевод

Evg Evg 14 Августа 2021 (ред)

Перевод статья Джеффа Этвуда: Code: It's Trivial от 06 июля 2009 года.

Помните ту вещь с Stack Overflow, над которой мы работали? Некоторые комментаторы в недавней статье Hacker News ставили под сомнение цену Stack Exchange — по сути:

  • Кажется действительно дорогим для относительно простого программного обеспечения…
  • Кто-нибудь пишет альтернативу с открытым исходным кодом?
  • Это похоже на что-то, что можно собрать в выходные…

Ах да, стереотипный ответ программиста на большинстве проектов: это тривиально! Я мог бы написать это через неделю!

Ещё проще! Альтернативы с открытым исходным кодом для Stack Overflow уже существуют, поэтому у вас есть преимущество. Господа, начните!

Нет, я не воспринимаю это всерьез. И не достаточно, чтобы написать подробный ответ. И, к счастью для меня, теперь мне это не нужно, потому что Бенджамин Поллак — один из немногих людей вне нашей основной команды, который имеет доступ к исходному коду Stack Overflow — уже написал ответ. Даже если бы я написал ответ, я сомневаюсь, что он был бы наполовину так же хорошо написан, как и ответ Бенджамина.

Разработчики думают, что клонировать сайт, такого как StackOverflow, легко по той же причине, что программное обеспечение с открытым исходным кодом уже существует. Когда вы ставите разработчика перед StackOverflow, он действительно не видит StackOverflow. Что они на самом деле видят, так это:

create table QUESTION (ID identity primary key, ...
     TITLE varchar(255),
     BODY text,
     UPVOTES integer not null default 0,
     DOWNVOTES integer not null default 0,
     USER integer references USER(ID));
create table RESPONSE (ID identity primary key, ...
     BODY text,
     UPVOTES integer not null default 0,
     DOWNVOTES integer not null default 0,
     QUESTION integer references QUESTION(ID))

Если вы говорите разработчику повторить StackOverflow, то в его голове всплывают две таблицы SQL и достаточно HTML, чтобы отобразить их без форматирования, и что на самом деле это вполне выполнимо в выходные дни. Более разумные из них поймут, что им необходимо реализовать вход в систему, выход из системы и комментарии, а также то, что голоса должны быть привязаны к пользователю, но это все же вполне выполнимо в выходные дни; это всего лишь еще пара таблиц в бэкэнде SQL и HTML для отображения их содержимого. Используйте фреймворк, такой как Django, и вы даже получите профили пользователей и комментарии, бесплатно.

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

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

Несмотря на аргументированные протесты Бенджамина, исходный код Stack Overflow, на самом деле, на самом деле… ну, тривиален. Хотя его начинает становиться достаточно много, так как мы бьемся над этим уже почти год. Это не значит, что наш исходный код хорош, во всяком случае; как обычно, мы делаем дрянное программное обеспечение с ошибками. Но каждый день наша крошечная команда из трех человек работает. Это наша миссия: сделать Stack Overflow лучше, чем-то, что было накануне. Нам не всегда удается, но мы очень, очень стараемся…

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

  • Код не имеет смысла, если никто не знает о вашем продукте.

  • Код не имеет смысла, если IRS приходит и бросает вас в тюрьму, потому что вы не платили налоги.

  • Код не имеет смысла, если вам предъявят иск, потому что вы не удосужились получить лицензию на программное обеспечение…

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

Хотя, если честно, я действительно мог бы написать Twitter за неделю. Это так просто до смешного! Давай!

Джефф Этвуд https://blog.codinghorror.com/code-its-trivial/

2 Ответа

  1. German German 14 Августа 2021

    Вы переносите статьи с других сайтов?

    В статье вы вырезали техническое, что надо сделать…

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

    И вы не можете позволить людям голосовать или принимать свои собственные ответы, поэтому вам нужно это заблокировать.

    И вам нужно убедиться, что пользователи не повышают или понижают голос другого пользователя слишком много раз за определенное время, чтобы предотвратить появление спам-ботов.

    Вероятно, придется реализовать спам-фильтр, если подумать, даже в базовом дизайне, и вам также нужно поддерживать пользовательские значки, и вам нужно будет найти дезинфицирующую HTML-библиотеку, которой вы действительно доверяете, и это хорошо сочетается с Markdown (при условии, что вы хотите использовать этот замечательный редактор StackOverflow, конечно.

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

    Но если вы сделаете все это, вы будете готовы.

    За исключением… за исключением, конечно, полнотекстового поиска. И биографии пользователей, и комментарии к ответам, и наличие главной страницы, которая показывает вам важные вопросы, но которая постоянно всплывает, как Reddit. Кроме того, вам необходимо полностью реализовать надбавки, поддерживать несколько входов OpenID для каждого пользователя, отправлять уведомления по электронной почте о соответствующих событиях, добавлять систему тегов и позволять администраторам настраивать значки с помощью приятного графического интерфейса пользователя.

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

    1. Evg Evg 14 Августа 2021

      Да. Наиболее важные. Они должны быть тут. А это статья…, Джефф ошибся в одном пункте. Прошло более 10 лет, ничего рядом даже нет, совсем. Опс… )