Игорь Корсар Мастер

Как программисту увеличить скорость работы?

Из серии «Парадоксы программирования»

Ты уже пишешь. Пишешь пока еще несложные программы, и довольно медленно. Но ты рвешься в бой. Как резко увеличить скорость? Вот что тебя волнует. Скажу сразу — резко не получится. Быстрого ничего не бывает. Но постепенно и методично… В общем, слушай.

Прежде всего, научись выделять куски программ с одинаковыми операторами в модули. Да, в каждом конкретном случае такое выделение замедлит работу. А тебе нужно побыстрей ее сделать!

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

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

Замедляют нас мелочи! Предположим, ты приступил к созданию программы. Ты многое продумал. Но нет в наличии файла с исходными данными. Решая главную проблему, ты не удосужился им обзавестись. Не подошел к нужному специалисту — а он сейчас в отпуске, не выяснил для себя структуру данных. Что же делать? Есть напарник специалиста, но он сейчас занят и только через два дня обещает разобраться. И ты вынужден ждать.

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

Может здорово замедлить скорость зависимость от кого-то. Тебе должны давать информацию по работе или поставлять исходные данные для отладки. Но делается это медленно, хотя и делается. Представь себе: ты идешь по тропинке, а впереди человек, которого нельзя обогнать. Он не так уж тихо идет, но шаг его на полступни меньше твоего. Ты особо не замедлился, но на большом расстоянии ушел бы далеко вперед, если б вы шли рядом. Так что старайся свести эту зависимость на нет. Бери информацию заранее, научись добывать сам — в общем, делай, что хочешь, лишь бы не зависеть от кого-то! Помню такую практику в начале своего пути. Работа была разделена на постановку задачи (делал постановщик) и на ее формализацию (задача программиста). Путь был очень длинный. Какое я облегчение испытывал впоследствии, когда получал задание непосредственно от заказчика. Это было рациональнее и быстрее.

Третий момент. Обязательно делай копии своих недописанных программ. Потеря исходных текстов в результате аварии сведет все твои старания к нулю. И еще одно — при возникновении нового вопроса не всегда полезно долго искать ответ в документации. Максимально используй живую среду. Кто-то уже прошел через это и ответит, а у кого-то на этот счет уже есть подпрограмма. Я не говорю о том, чтобы вообще в инструкции не заглядывать. Потом ты успеешь еще туда посмотреть. Но на данный момент ты выигрываешь в быстром освоении задачи. Оперативный обмен своими проблемами резко увеличивает скорость их разрешения.

С чем-то не согласен? У вас так не принято? Тогда отодвинься в сторонку. Я тебя поучил. А теперь займусь твоим начальником. Сударь, хотите, чтобы скорость работы Вашего коллектива была ошеломительно большой? Понятно. Кто же не хочет! Тогда сделайте так, чтобы внутри отдела господствовала открытая информационная среда. Чтобы люди старались делиться как своими удачами, так и своими ошибками. Добейтесь, чтобы вновь поступивший сотрудник ответ на любой вопрос получал из живых уст, а не из скучных книг.

Как у нас часто бывает? Приходит человек на новое место, задает вопрос, а его отсылают к документации. Кому-то некогда, а кто-то просто не хочет, чтобы быстро доросли до его уровня. Причем, аргументы отсылающих звучат настолько убедительно, что даже можно поверить. Вы тоже верите? И не верите мне? А Вы представьте такую картину. Попадаете Вы в город, где говорят на иностранном языке. Вам нужно жить в этой среде. Вам нужно узнать о ней много. Вы пытаетесь задавать вопросы. И вместо того, чтобы подсказать Вам, куда можно пойти поесть, Вас отсылают к словарю. Подумайте, когда Вы в таких условиях научитесь говорить? А поесть, интересно, Вам удастся? Так что подумайте, сударь! Если Вы не создадите такой среды в коллективе, программист все равно добьется своих высот, но позже, а возможно, и гораздо позже. К тому же, он может стать информационно замкнутым. А зачем делиться? Ведь он всего добивался своим трудом, так почему он должен кому-то помогать?

Что касается меня, то я имел в самом начале работы очень доброжелательный источник информации. Он оперативно реагировал на любые мои, да и не только мои вопросы. Для него это было своеобразным видом спорта. Повзрослев как специалист, я также с удовольствием стал делиться своими знаниями. И что я при этом обнаружил? Это очень выгодно. Объясняя возникший вопрос, ты вдруг сам начинаешь его лучше понимать. Убыстряется реакция на поиск собственных ошибок. К тому же, помогая, часто обзаводишься дефицитной компьютерной информацией, за которой давно гонялся. (Это могут быть и программы, и драйвера, и системы.) А здесь тебе ее предлагают сами. Так что оперативная помощь ближнему взаимовыгодна!

Поняли, сударь? Ухватил суть, программист? Вот и отлично. Попробуйте!

Обновлено 21.08.2008
Статья размещена на сайте 1.08.2008

Комментарии (3):

Чтобы оставить комментарий зарегистрируйтесь или войдите на сайт

Войти через социальные сети:

  • Сергей Мольков Читатель 10 сентября 2008 в 14:55 отредактирован 21 мая 2018 в 18:50

    Мааааленькое дополнение, но очень важное:
    "Программист - пиши комментарии, желательно к каждой строке кода". Не верите, что важное - откройте текств своей программы через год... впервые видите?? и я том же

  • В тональности журнала Хакер, адресовано подросткам

  • Неплохая статья. Хотя и не отражает грустной действительности. Сошлюсь на свой опыт начала и середины 80-х годов. Я уже поработал в ДОСе на ЕС-1020 и -1022. Один молодой человек у нас сходил на курсы - и мы все уверовали, что он чему-то научился. Я как-то хотел усовершенствовать одну управляющую программу, а вариант, предлагаемый этим юношей, меня чем-то подсознательно не устраивал. И я подошёл к нему с вопросом: "Ты библиотеку читаешь?" Он ответил вопросом на вопрос: "А что?" Я ему вкратце объяснил на пальцах и услышал: "Я считаю, что это тебе НЕ НУЖНО!" Причём тон его говорил о том, что он-то библиотеку читает. Я распечатал текст макросов ввода-вывода, подобрал похожие по смыслу. Озадачивало то, что скудные комментарии были написаны по-немецки. Я начал с ними экспериментировать и добился желаемого результата. Когда система заработала быстро и эффективно - он стащил входные тексты, но я специально не писал комментарии. Это была первая победа. Потом он перешёл в привилегированное подразделение (одно на весь Союз), поехал в командировку в Финляндию, а оттуда сбежал через Швецию в Западную Германию, где жила его сестра. От нового сотрудника я узнал об отличных курсах. Он пошёл на курсы (пробил сам), но через месяц после начала учёбы умер. И я случайно нашёл способ, как пойти туда учиться. На курсах мне почти сразу посчастливилось поиметь с отличнейшими комментариями на английском (получить для перевода) исходные тексты библиотеки супервизора ОС Т. Я по ним научился программировать. Потом, через много лет, я удивлялся, каким образом я так быстро и единственно правильно стал ориентироваться в вопросах распределения памяти, получения привилегированного доступа и т.п. И начал я, кроме обычной прикладной работы, писать стандартные программы печати, обработки, корректировки и стыковки файлов. Практически все стандартные операции могли выполняться этими программами. Настройку для них стали писать все. Постановщикам они открывали доступ к базе для поиска в них ошибок, операторам давали возможность писать и выполнять иногда довольно сложные задания. Найдя дорогу на курсы я смог туда сводить всех желающих. В их число попала моя жена, начальник конкурирующего бюро, его подчинённый, который его не устраивал по многим параметрам (я его потом забрал к себе) и множество программистов, которые работали у меня в группе. Кончилось всё тем, что однажды мой подчинённый, которого я взял из другого бюро, и ещё, другой, разрушили операционную систему, которую я сгенерировал и настроил ночью. Дубль я снял, но не смог его найти. Я после этого сидел двое суток под другой системой (восстанавливал две затёртые дорожки из оглавления библиотеки супервизора считая и пересчитывая данные из другой системы). Потом предупредил всех о перезагрузке - система заработала. И услышал: "Вот сволочь, сделал!?" Потом вечером посидел, подумал, взял ключ от секретного сейфа и обнаружил там копию системного диска, исходники своих стандартных программ, хотя я из них секретов не делал, и много другого. Я снял копии со всех своих украденных лент и раскидал их по архиву так, чтобы их сразу не могли найти, а на украденных копиях переклеил маркеры, чтобы информация потеряла смысл. На следующий день пошёл к начальнику. Учитывая, что второй сотрудник был сыном зама генерального по экономике, начальник посоветовал мне уйти. Потом грянула перестройка и путч. Зам по экономике обокрал завод и уехал со своими потомками в Америку, второй ушёл работать в милицию на ВЦ и полагаю, что базы данных - его работа. Пропал с концами. Завод стал раз в двадцать меньше. Программы, написанные мной 25-30 лет назад, работают уже на серверах современной архитектуры со скоростью быстрее раз в 20, чем на старых машинах. Меня пригласили несколько лет тому назад, чтобы адаптировать их к новым условиям. Продолжаю учиться, хотя мне за 60. Не гнушаюсь обращаться за советом к молодым, но опять замечаю, как они БЕРЕГУТ СВОЁ "KNOW HOW" и так и норовят спросить: "А зачем тебе это нужно?!" И я удивляюсь молодым. Да, они быстро схватывают, но знания и опыт маловат - потому часто принимаются скороспелые и нелепые решения, которые могут уронить любую идею. Но молодому с молодыми было воевать ЗНАЧИТЕЛЬНО ЛЕГЧЕ. Пока выхожу из баталий победителем. Надолго ли?

    Оценка статьи: 5