Статьи

Жил-был программист…

в рубрике Peopleware, Другое, Колонка Спанч Боба

Обыкновенный программист, главное занятие которого, разумеется, программирование.

Он закончил технический ВУЗ по специальности “прикладная математика”. На старших курсах он устроился работать в небольшую компанию и писал простенькие приложения под базы данных.

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

А решая классическую задачу о выборке из двух таблиц (person - skills, “многие ко многим”, ключи Person_ID и Skill_ID, соответственно) записей о людях (Person), обладающих такими вот знаниями (Skills): Oracle и C++ одновременно, писал примерно такой запрос:

SELECT p.name AS 'Person name', s.name AS 'Skill 1', s1.name AS 'Skill 2'
FROM person p, person_skill ps, skill s, person_skill ps1, skill s1
WHERE p.id = ps.person_id AND ps.skill_id = s.id AND
 p.id = ps1.person_id AND ps1.skill_id = s1.id AND
 s.name = 'Oracle' AND s1.name = 'cpp'

И код он писал плохо и медленно.

Но время шло. Наш
Программист читал книги, писал программы и наконец выполнил свой первый
проект. Затем он выполнил второй проект, а потом еще один и еще один. А
потом вдруг взял да и сменил место работы.

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

И Программист стал работать в другом месте. Здесь он узнал много нового и
интересного, потому что менеджером проекта у него был… Впрочем, я уже
не помню, кто именно был у него менеджером проекта — может быть, даже сам gaperton.
Но наш Программист твёрдо запомнил, что в задачке про person - skills нужно использовать GROUP BY и COUNT.
Спасибо за это gaperton’у большое.

А потом Программист ещё раз сменил место работы. И ещё раз, и ещё…

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

А потом Программист взял и умер — непонятно от чего. То ли ему действительно стало очень скучно, то ли заболел, бедняга, серьезно…

И никто не заплакал.

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

VN:R_U [1.9.5_1105]
Rating: 0 (from 0 votes)

Комментариев: 20 на “Жил-был программист…”

  1. Рассказ про программиста реально “доставляет”, как сейчас принято говорить в сети. Заставляет задуматься о бренности бытия… Хотя и мрачно, причем весьма.

    VN:R_U [1.9.5_1105]
    Rating: 0 (from 0 votes)
  2. Жизнь весьма скучного человека… Обязательно для ознакомления безыдейным трудоголикам.

    VN:R_U [1.9.5_1105]
    Rating: 0 (from 0 votes)
  3. “Человек в футляре” Чехова в современной интерпретации :)

    VN:R_U [1.9.5_1105]
    Rating: 0 (from 0 votes)
  4. Насчет скучного и безыдейного трудоголика - можно поспорить.
    Все-таки сертифицированный специалист… Не просто “парень с улицы”.

    VN:R_U [1.9.5_1105]
    Rating: 0 (from 0 votes)
  5. Хм… я как раз о том и говорю, парень взял и всего добился, прошу прощения, попой. Читал, работал над собой, а толку никакого… Взял… и умер. =)))

    VN:R_U [1.9.5_1105]
    Rating: 0 (from 0 votes)
  6. Тезисы:
    Ну, скажем так: не “попой”, а трудом и упорством.
    Читать и работать над собой - полезно.
    Скучно на работе бывает и талантливым людям.
    А насчет “умер” - ну… Все там будем.

    VN:R_U [1.9.5_1105]
    Rating: 0 (from 0 votes)
  7. Ну, я не буду продолжать оспаривать свое впечатление от написанного, просто мне кажется так. =)))

    VN:R_U [1.9.5_1105]
    Rating: 0 (from 0 votes)
  8. Немудрено.
    Задача про person - skills предлагалась на техническом интервью в Люксофте. Взята мной “шутки ради”.
    Успешным кандидатом считался тот, кто воспроизводил следующий код:

    use pubs
    go
    create view au
    as select au_id, au_fname, au_lname from authors
    go
    select au_lname, au_fname from au join titleauthor as ti on au.au_id = ti.au_id
    join titles as ts on ti.title_id = ts.title_id
    group by au_lname, au_fname
    having count (au_lname) = 2
    go

    В дальнейшем мы постараемся, чтобы в нашем творчестве было меньше римейков.

    Ваши Software Raccoons

    VN:R_U [1.9.5_1105]
    Rating: 0 (from 0 votes)
  9. Над текстом рыдал от смеха.
    В концовке уронил скупую мужскую слезу. Птичку - жалко.
    Давайте посмотрим на жизнь реально, коллеги. Платят зарплату, которую считаешь нормальной - сиди и не рыпайся. Нашел больше - переходи.
    СКУЧНО? Сорри, коллега, я не ослышался???? ВАМ СКУЧНО???? Придумайте, коллега свою тему! Большую, сочную и вкусную! И реализуйте ее на здоровье! Вам за это не заплатят? Не беда: получите удовольствие и опыт. Никто не оценит? А оно вам надо? Большая, сочная и вкусная задача - это “rules by default”.
    И еще: не ходите, дети, на примат учиться. Для этого есть нормальные кафедры ПО ВТ и АС.

    VN:R_U [1.9.5_1105]
    Rating: 0 (from 0 votes)
  10. Ну, по поводу “не ходите, дети” - это, знаете, спорно…
    Я вот Мехмат закончила. По этой самой специальности. И ничего так.
    По крайней мере, меня еще не уволили “за то, что я не ОЧЕНЬ умная”.

    VN:R_U [1.9.5_1105]
    Rating: 0 (from 0 votes)
  11. По поводу примата…..
    Выше приведены куски кода. Если бы я ТАК написал, то не видать мне принятия лабы как своих ушей уже 2-м. курсе.
    Если бы ко мне на собеседование пришел коллега с такими каляками, то он тут же бы ушел с дипломом любого цвета хоть от МГУ, хоть от МФТИ. И мне без разницы его IQ.
    Матчасть надо знать.

    VN:R_U [1.9.5_1105]
    Rating: 0 (from 0 votes)
  12. Вы про какие фрагменты кода, коллега?
    Про тот, что я привела в комментаиях - или про то, что в статье?
    То, что в статье - реальный факт из жизни того программиста, про которого я пишу (персонаж реален, но пальцами показывать мы не будем).
    А по поводу того, что в комментарии… Да, это именно про матчасть. Точне, по теме “оптимизация запросов в SQL”. В частности, если немного подумать, можно понять, почему второй запрос выполняет только один table scan, когда выбирает данные из таблицы, получившейся в результате выполнения join.

    VN:R_U [1.9.5_1105]
    Rating: 0 (from 0 votes)
  13. Тот, который из статьи, я распечатаю и на стенку повешу. Не возражаете? Исключительно для поднятия настроения - никаких иных мыслей не имею.

    VN:R_U [1.9.5_1105]
    Rating: 0 (from 0 votes)
  14. Дык, воля Ваша. Статья изначально задумывалась исключительно как юмористическая.

    VN:R_U [1.9.5_1105]
    Rating: 0 (from 0 votes)
  15. Прикольно.
    А где вы вообще себе людей набираете, может, посоветуете?

    PS. Мне нужен человек, который бы вместо
    use pubs
    go
    create view au
    as select au_id, au_fname, au_lname from authors
    go
    select au_lname, au_fname from au join titleauthor as ti on au.au_id = ti.au_id
    join titles as ts on ti.title_id = ts.title_id
    group by au_lname, au_fname
    having count (au_lname) = 2
    go

    написал вот так:

    use pubs
    go
    select au_lname, au_fname
    from authors au join
    (select au_id, count(*) as c from titleauthor group by au_id having count(*) = 2) a2 on au.au_id = a2.au_id
    go
    ну или через вьюшку, если подзапросы нельзя использовать.

    Если выполнять их рядом в одном батче - query cost 46.22 против 53.78.
    И это на смешных 20 записях.

    VN:R_U [1.9.5_1105]
    Rating: 0 (from 0 votes)
  16. А на каких условиях Вам этот человек нужен?
    Если на part-time, то могу порекомендовать одного такого, с которым когда-то работала… А то он СЛИШКОМ умный - и ему скучно.

    Да, я должна всех сразу предупредить: с героем моей статьи я не работаю. Пересекалась с ним когда-то давно; с тех пор он значительно поумнел.

    VN:R_U [1.9.5_1105]
    Rating: 0 (from 0 votes)
  17. У нас все по-белому, так что или в штат на фулл-тайм или как аутсорсер/аутстаффер по договору с юрлицом. Просто так кого-то привлечь мы не можем :(
    А вообще все будет зависеть от человека - если сильно друг другу понравимся, то наверняка что-нибудь придумаем.

    VN:R_U [1.9.5_1105]
    Rating: 0 (from 0 votes)
  18. Что ж, записывайте имена:
    Дмитрий Никифоров
    Oracle Certified Professional (DBA & Programmer)
    Ссылка на профиль: http://www.linkedin.com/profile?viewProfile=&key=734297&authToken=BJW2&authType=NAME_SEARCH&locale=en_US&srchindex=1&pvs=ps&goback=.psr_*1_dmitry+nikiforov_*1_*1_*1_*1_*1_*1_*1_*1_Y_ru_115470_*1_*1_*2_*2_*2_Y_Y_*1_Relevance

    Закончил Физтех (ФАЛТ), в 1990 году с красным дипломом.
    P.S. Если начнете разговор, то не говорите ему, что это я рекомендовала Вам к нему обратиться. У нас с ним давние личные счеты. Если не захочет разговаривать - просто скажите мне, у меня с ним есть общие знакомые, через них и доберемся.

    VN:R_U [1.9.5_1105]
    Rating: 0 (from 0 votes)
  19. Sorry
    http://www.linkedin.com/pub/dmitry-nikiforov/0/2b4/b35
    ссылка на профиль в LinkedIn

    VN:R_U [1.9.5_1105]
    Rating: 0 (from 0 votes)
  20. P.S. Это была минута рекламы. :-)

    VN:R_U [1.9.5_1105]
    Rating: 0 (from 0 votes)

Прокомментировать

Вы должны быть авторизованы для комментирования.

Партнеры

Microsoft ITONLINE Group ScrimTrek IT Trainings

© Careerlab, ITONLINE GROUP 2012 Команда Software People

+7 (495) 933-01-33

team@softwarepeople.ru