Истории с тегом: программизмы

Всего историй: 900

6475

Самое время думать

«Не думайте, вам рано»? Чёрта с два. По такому руководству вы можете стать только кодером. Не обязательно с приставкой быдло- — возможно, очень хорошим кодером. Но претендовать на высокое звание программиста вы не сможете никогда.

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

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

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

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

Создавайте, творите, думайте! Только так вы станете программистом. Бездумно собирать кубики типовых решений — удел кодеров.

6471

А если несколько раз?

На защите дипломной работы:

— В целом работа выполнена неплохо, но что вы хотели сказать фразой «цикл if»?

Половина аудитории прикрывает лицо ладонью.

6444

Не думайте, вам рано

Основа для любого хорошего программиста — знание типовых решений. Если вы новичок — не думайте. Вообще не думайте. У вас ещё не может быть своего мнения и своих мыслей. Просто разбейте задачу на мелкие подзадачи и решайте их типовыми методами, даже если это будет пресловутое «выливаем воду, выключаем газ, и задача сводится к предыдущей». Плевать. Пусть к предыдущей.

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

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

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

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

6438

Протобогомолы

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

6411

Не ходите, девки, в программисты

После института не сильно много у меня было знаний: в дипломе две пятёрки всего, и те гуманитарные, а средний балл — 3,5. Но работу я всё-таки стала искать программистом: гордость не позволила в менеджеры податься.

Пошла в госорганизацию за копейки только ради трудовой книжки, в которую мне после всяческих осмотров и аж месячной проверки написали: «Программист 6-го разряда». Уволилась: база данных бумажная, а ручками вносить данные из неё — это дольше человеческой жизни. Пошла и купила себе книгу по Ораклу — решила, что научусь. Но когда практики нет, никак не получается. Всё же чего-то начиталась.

Опять долго и мучительно искала работу. Таки взяли меня в какое-то сомнительное учреждение. На собеседовании задали только один вопрос: знаю ли я, что такое рекурсия? Да, знаю. Посадили за Дельфи писать простенький интерфейс для добавления фотографий в базу. Сказали, что нужно дерево. Я же умная после книжек и интернета, и про рекурсию спрашивали… Написала я им рекурсивное дерево. Никто не заметил и не похвалил. Потом посадили программировать железо, зарплату и не подумали прибавить. Написала рекурсивный разбор буфера COM-порта — опять никто не заметил. Уволилась, обиженная.

Взяли на другую работу. Сказали читать документацию к языку проще Бейсика. За две недели, пока читала, вспомнила английский язык. Разродились дать задание: переписать адресную книгу с Бейсика на Бейсик. В ней опять какая-то рекурсия. Сделала я всё — и уехала на такси безвозвратно.

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

6405

Глава 2. Изучаем метод Swap

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

Только дома я понял, какие ассоциации может вызвать у непосвященного книга «Swing. Руководство для начинающих».

6399

Глаза б мои его не видели

Писать, не видя в глаза устройства? Да запросто — это наши будни. Видел, не видел — разница небольшая. На одном большом северном заводе устройство у меня было. На отладку отводилось аж три часа в месяц. Велика ли разница с «не видел»?

Это не прихоть заказчиков. Устройство (стан непрерывной оцинковки стали длиной 500 м) работает круглосуточно, раз в месяц останавливаясь для планового обслуживания. Во время этой остановки есть три часа, когда стан уже запустили, но он ещё не вошёл в рабочий режим. При этом цена продукции такова, что минутная остановка из-за ошибки при отладке приводит к 40 тысячам долларов убытка. Цена всей разработки системы — три остановки, так что отладку в неположенное время делать очень страшно. Пикатности ситуации придаёт то, что рабочее место на заводе находится аккурат над печью, работающей на водороде. При сильном баге хоронить будет вообще нечего — и не только от тебя.

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

Проблема в другом (это уже по другому проекту). Гады электронщики — хуже бухгалтеров. Программисты вначале придумывают интерфейс, а уж потом его реализовывают. Электронщики же на голубом глазу утверждают, что они не могут описать интерфейс до того, как реализуют устройство в железе. В результате сначала приходит железка, и лишь через несколько недель — какое-то подобие документации. И при этом они полностью уверены, что железки со схемой программерам хватит. Мол, зачем им дока — пусть методом проб и ошибок работают!

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

6384

Форвард-реверс-инжиниринг

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

Май 2011. С помощью тонны писем с обсуждениями, копипастов из каких-то древних C-библиотек, предполагаемых интерфейсов и какой-то матери имеем:

— мы девайсы по-прежнему ни разу в глаза не видели, в том числе их веб-морду;

— для разработки и тестирования написан эмулятор всех этих устройств;

— при первом запуске у заказчиков с реальным устройством (их клиент расщедрился) всё работает;

— клиенты «very happy».

«Есть штука оттуда, не знаю откуда, напиши к ней то, не знаю что»? Не проблема!

6382

Мы не дебилы, дебилы не мы

Еду в электричке. Вдруг вижу на экране одного из телефонов нечто похожее на досовский текстовый режим. Пригляделся — телефон оказался Нокией N900, а то, что я принял за DOS, — линуксовой консолью. Владелец телефона набирал исходник программы. На каком языке, я не разглядел, но, кажется, на Питоне. Но самое удивительное в этой истории то, что владелец оказался тёткой!

Вот так-то: пока одни разглагольствуют о всеобщей дебилизации, другие молча ей противостоят.

6360

Тяжело в учении, легко в бою

Мне надоели мои ученики.

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

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

В начале года я предлагаю всем «умникам» собраться в группу и сделать игру. В особенностях — изменяемый ландшафт, AI, выполняющий задания вместе с игроком, и прочее. Если я в конце года увижу работающий прототип — вся группа товарищей автоматически получит «отлично» на весь срок обучения. Все в голос утверждают, что это потребует большого штата разработчиков и пару лет разработки на купленном движке, а если движок писать с нуля, так вообще лет на семь затянется, и потянут это только современные игровые компьютеры. Мне больше всего обидно, что никто ещё не узнал в моём описании «Вангеров».