Программы
Программки, программульки и программища

 Мое мнение
Имею мнение - хрен оспоришь

 Knowledge Base
"База знаний" на компьютерную тематику

 Капитан очевидность
Сюда попадают разные очевидные вещи

 Жизнь
Различные статьи от меня

 Из сети
Всякое из сети, что мне понрваилось и я решил скопировать это себе

 Фото
Возможно сюда попадут какие-нибудь фоторгафии, а возможно и нет

 Проекты
Другие мои проекты или просто полезные ссылки

 Произведения
Что-нибудь накалякаю если вдруг, то может даже и сюда положу

Назад к 'Мое мнение'

Программирование: Почему я люблю изобретать велосипеды

Пролог

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

Часть 1. О картинах и котах

Велосипедистами у нас называют тех, кто любит писать свои реализации алгоритмов, протоколов и спецификаций, а не использовать готовые решения. Нет, я не хочу сказать, что первым делом кидаюсь переписывать все стандартные библиотеки (это уже полное безумие), но если я не нахожу маленькой, быстрой и безглючной библиотечки, способной сделать то, что мне надо и я прекрасно представляю, как сделать то, что мне надо - я потрачу немного времени, чтобы сделать свою реализацию.
But Why?
- Зачем? Зачем? Зачем? - звучит со все сторон, - зачем писать свое, когда все уже написано? Зачем думать, когда за нас уже подумали? Зачем ходить в спортзал, ведь можно лежать на диване? Зачем ездить в места, где уже все разведали до нас?
Ладно, я перегибаю. Но тем не менее, лично для меня программирование - это процесс творческий, он доставляет мне удовольствие, я люблю созидать собственный, только что созданный "идеальный мир", который работает, как часы. Я люблю писать код, свой собственный код, и терпеть не могу разбираться в чужом. Он написан не так, как на писал бы его я. Нет, не плохо, просто не так. Пара часов написания кода для меня пролетает за секунду, в то время как попытки изучить документацию по чужому, а потом понять почему эта хрень не работает - кажутся вечностью. Просто представьте, что вы художник и пишете картину. Вам нравиться этот процесс, вы получаете удовольствие от каждого мазка, вот вы уже написали улицу, вот фонарные столбы и луна... Стоп! Луна! Я уверен, кто-то уже писал луну до меня, сейчас я наберу в гугл картинках "луна", распечатаю её и приклею на место, где должна быть луна в моей картине. Зачем мне создавать свою, когда есть уже созданная? Это же глупо и не рационально.
- Что ты делаешь?
- Я создаю кота. Сейчас делаю ему глаза.
- Зачем? Есть ведь уже готовые стандартные глаза. Просто поставь их.
- Нет, мне не нужны стандартные, мне нужны особенные, которыми можно хорошо видеть и днем и ночью.
- Есть же специальный плагин для стандартных глаз, позволяющий подключить скрипты, которыми можно быстро настроить все параметры зрения. Надо только ещё подтянуть среду исполнения скриптов.
- Зачем мне такое нагромождение, у стандартных глаз полно функций, которые мне не нужны, они слишком сложные из-за своей универсальности и ещё эта среда исполнения скриптов, кот будет тратить слишком много ресурсов на зрение и не будет таким ловким и грациозным.
- Ой да подумаешь? Сделаешь кота мощнее, больше, будет чуть дольше рождаться. Зато простое и функциональное решение, к тому же все так делают.
- Нет уж, мне нужен меленький и грациозный кот, а не большой и неповоротливый, и его глаза должны быть сделаны специально для него, что позволит им функционировать по максимуму, потребляя минимум. К тому же я должен знать их внутрее устройство, чтобы иметь возможность исправить, если что-то вдруг пойдет не так.
- Ой, делай, как хочешь... погоди... это что у него, самодельный хвост?...

Часть 2. О черных ящиках

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

Часть 3. О нравах и командной работе

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

Эпилог

Bicycle bicycle bicycle
I want to ride my bicycle bicycle bicycle
I want to ride my bicycle
I want to ride my bike
I want to ride my bicycle
I want to ride it where I like










Коментарии отключены