1 Сентябрь 2008 г.

Багаж знаний. Часть 4.

Рабочий инструментарий программиста

Как я уже писал ранее, рабочее место современного программиста оснащается, как "космический корабль", кучей различного ПО: см. "Инструменты программиста": http://www.alvosoft.com/itlife/2007/05/blog-post_30.html. По этому вопросу даю еще ссылку: http://alenacpp.blogspot.com/2008/01/wiki.html. Теперь, как и с технологиями, список с небольшими комментариями от себя (сразу извиняюсь, что в списке я не всегда корректно "на одну доску" ставлю в качестве примера два сильно разных инструментария- для кратких пояснений различия между ними можно не учитывать, общей картины это не ухудшит):

  • Система контроля версий (представители: CVS, SVN)- данные системы ведут учет версий файлов, хранят все версии и информацию о том, кто изменил файл, какие именно строчки в файле изменил и когда. Это позволяет восстановить состояние файлов на любой версии, а также организовать коллективную работу на проектом. Работа над проектом нескольких человек практически невозможна без использования какой-либо системы контроля версий. Поэтому научиться работать с CVS или SVN начинающему специалисту надо обязательно.
  • BugTracker (представители: Jira, BugZilla)- системы отслеживания ошибок. Позволяют пользователям вести учет найденных в ПО ошибок и отслеживать этапы их устранения. Это тоже обязательный элемент изучения для начинающего. В командах разработчиков багтрекеры используются незначительно реже, чем системы контроля версий.
  • Документирование (представители: Wiki, Doxygen)- эти системы позволяют документировать исходный код программы (Doxygen), а также документировать процесс разработки (wiki): обмен мнениями, идеи, планы. Системы просты в изучении, поэтому даже обсуждать не стоит, надо их изучать или нет- даю полчаса на изучение. Время пошло!
  • Profiler- позволяет замерить время выполнения отдельных функций программы с целью выявления узких мест для последующей оптимизации кода программы. Этим пользуются нечасто, чаще предпочитают купить железо помощнее. Для начинающего достаточно просто знать что есть такие штуки как "профайлеры".
  • Debugger- отладчики программ. Ну, без них отладка ПО мучение сплошное. Обязательно надо уметь не только ими пользоваться, но и великолепно владеть методами отладки. Тут учебники не помогут: практика, практика и, еще раз, практика.
  • Сборщик (представители: make, cmake, ant)- программа, которая по заданному сценарию вызывает компиляцию отдельных файлов исходного кода ПО в нужной последовательности. Конечный результат работы сборщика: собранная и готовая к запуску программа. Обычно у сборщиков бывает несколько целей работы: сборка отладочной версии ПО, сборка с тестированием, сборка релиза, сборка инсталляционного пакета. В правильно организованном процессе сборки подготовка инсталляционного пакета должна выполняться в два этапа: выгрузка из системы контроля версий нужной версии программы и запуск сборщика- все, после этого в заданном каталоге должен оказаться инсталляционный пакет. Обычно в командах программистов от 5 человек, как правило, есть отдельный человек, который занимается исключительно сборщиком. От начинающего программиста требуются общие знания о сборщиках.
  • Тестирование (например: UnitTest)- видов тестирования много, это отдельная от программирования область деятельности. В серьезных проектах обязательно есть тесты, есть люди, занимающиеся тестированием. Программисту достаточно понимать, что тестируется и как, не вникая в тонкости построения систем тестирования.
  • Написание справки (представители: Tex, Chm)- часто программистам самим приходится писать справки для пользователей. Это не любимое дело большинства из программистской братии. В серьезных организациях для этого есть отдельные люди, и даже отделы. Техническая сторона дела- формат записей, сборка справки несложна, однако косноязычность- непреодолимый барьер для большинства IT-специалистов. В общем, бегло просмотрите что это такое, чтобы знать, кто такие "течрайтеры" и как с ними общаться.
  • Инсталляторы (представители: Inno Setup, MSI)- этими программами, отвечающими за корректную установку или удаление ПО, как правило, занимаются отдельные специалисты. Программист сталкивается с ними в основном когда пробует сам продавать свое ПО (shareware). Поэтому от начинающего программиста достаточно, чтобы он знал, используемые им технологии: какие dll надо включить к инсталляционный пакет, какие значения задать в реестре и т.п., чтобы сообщить это специалисту, занимающемуся сборкой инсталляционного пакета.
  • Защита ПО (представители: Execryptor, Hasp)- в этим программист уж вряд столкнется в начале карьеры. Установкой системы защиты ПО от нелегального копирования редко занимаются в самих организациях, предпочитая отдавать эту работу на аутсорсинг. Это связано с тем, что защита обычно пересматривается перед релизом и держать на постоянной основе своего специалиста по защите большинству фирм не выгодно.
  • Проектирование (представитель: UML)- в этой области знаний больше "воды", чем реально полезной информации. UML- хорошо пропиаренный способ описания проекта. Я работал и был связан с очень крупными IT-предприятиями, имена которых у всех на слуху. Их штат сотрудников насчитывает более 1000 человек. И что характерно, они не используют ни UML, ни каких-либо других способов описания проекта. Прекрасно обходятся доской с фломастерами и живым общением. Поэтому моя рекомендация начинающим: "на первых порах" держитесь подальше от слов UML, методики проектирования- это точно не первоочередные вещи, которые надо изучать.
  • Управление разработкой (представители: MS Project, электронные таблицы)- волей-неволей, но вы все же придете к понимаю необходимости управлять процессом разработки. Даже, хотя бы лично для себя составить кратенький план: "1). написать класс…; 2). не забыть его подключить туда-то…; 3). изменить то-то…". Например, я делаю такие пометки в обычном notepad.exe. Рекомендую этот стиль работы: вы ничего не забудете сделать, что повысит качество вашей работы, а вашему начальнику вы в любой момент сможете предоставить отчет о том, что сделали, и о том, что вам еще предстоит сделать.
  • Протоколированное общение (представители: телеконференции, IM-клиенты, e-mail)- я указал именно протоколированное общение. В работе важно, чтобы общение записывалось, чтобы можно было потом что-то важное по записям вспомнить. Личный совет: никогда не удаляйте протоколы- пройдет 3-4 года и обязательно что-то всплывет, что потребует вспомнить, что же вообще-то было.
  • Обмен файлами (представители: SMB, FTP)- ну куда уж без этого! В ходе работы файлам обмениваются постоянно, начиная с внутренней документации, заканчивая личными фотками с отпуска. Я предпочитаю FTP- неприхотливый протокол. FTP-сервера у меня запущены и дома, и на работе.

Информация по перечисленному инструментарию можно найти в http://ru.wikipedia.org/. В каждом пункте я привел по паре примеров, но подобного ПО существенно больше- освойте, хотя бы перечисленное для начала. Приведенные примеры- наиболее популярные программы, зная их, на собеседовании вы будете чувствовать себя гораздо увереннее.

(Продолжение следует...)

Ярлыки:

Комментарии: 8:

Anonymous Анонимный сказал(а)...

ВАЖНО!!!

Про UML:

Молодые люди, ДЯДЯ АЛВО ОШИБСЯ!!!

И "пример" привёл столь же абсурдный сколь и неконкретный.

Алво, тут Вы себе же и противоречите -- UML это мэйнстрим, так что будьте последовательны, и всё же посоветуйте молодёжи учить его ОБЯЗАТЕЛЬНО!

Без UML в разработке будет ХАОС. Это типа как музыкантам общаться без нот.

5 Сентябрь 2008 г. 0:04  
Blogger Alvo сказал(а)...

Вы невнимательно прочли:
"Я РАБОТАЛ и был связан с ОЧЕНЬ КРУПНЫМИ IT-предприятиями, имена которых у всех на слуху. Их штат сотрудников насчитывает БОЛЕЕ 1000 человек. И что характерно, ОНИ НЕ ИСПОЛЬЗУЮТ ни UML, ни каких-либо других способов описания проекта. Прекрасно обходятся доской с фломастерами и живым общением."
Я знаю о чем говорю. А Хаоса позволяет избежать управление а UML и управление- не одно и то же.
PS: я не могу назвать эти предприятия, ибо подписывал NDA, но поверьте мне, вы 100% пользуетесь ПО этих фирм ежедневно.

5 Сентябрь 2008 г. 0:25  
Blogger Dart сказал(а)...

alvo, я слsшал в Индии есть масса очень крупных компаний с численностью более тысячи человек. Вы, наверно, их имели в виду? :)
Самое главное, что надо знать о UML - это уметь читать use cases.
А use cases - это стандарт для описания требований в RUP, MSF,...
Уметь читать требования это, имхо, гораздо важнее для программиста чем "управление проектом", о котором вы упомянули.

5 Сентябрь 2008 г. 9:07  
Anonymous Анонимный сказал(а)...

Это снова я, Анонимный который про ХАОС :)

UML = Unified Modeling Language

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

Modeling -- значит для моделирования. Я не знаю как кто пишет программы без моделирования, проектирования, развёртывания и т.п.

Language -- значит ЯЗЫК. Вот тут-то и собака порылась. Как в том анекдоте (примерно): "Умеют ли ругаться матом сибиряки? Да они на нём разговаривают!". Так вот: на UML надо разговаривать (шире -- общаться)! Т.е. вопрос учить его или нет -- даже не встаёт.


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

Поэтому про UML не утерпел -- наболело :) Если б все в командах знали UML может и в головах было б почише и меньше мысленного поносу выливалось в документы и тем паче в код.


Засим прощаюсь :)

5 Сентябрь 2008 г. 11:46  
Blogger omega сказал(а)...

Поддерживаю автора - без UML прекрасно обходятся во многих компаниях.
А юз кейсы составлять есть и другие способы :)

Вот подумайте сколько ОС было написано без UML? А игр? А компиляторов? Когда просто не было никакого UML.

5 Сентябрь 2008 г. 18:35  
Blogger axe сказал(а)...

Use Case -- только вершина айсберга. Это скорее для аналитиков. А Mr. Alvo пишет советы-то для программистов.

А как же без Class Diagram, Sequence, Deployment и (реже) State Diagram.

А есть ещё несколько типов диаграмм очень полезных, но не вошедших в первые версии стандарта UML

5 Сентябрь 2008 г. 23:20  
Blogger Alvo сказал(а)...

Про UML пошли уже теоретические разговоры. Поставьте себя на место ведущего программиста, к которому прикрепили стажера. Вы ему в первую начали бы объяснять про UML или все же сначала подтянули его опыт в программировании?
Второе, ради интереса, зайдите на сайт www.hh.ru и сделайте поиск по вакансиям: сначала по слову java, потом по словам java, UML. У меня получилось около 900 и 90. Разница в порядок.
Я согласен, что идея UML как унифицированного языка описания проекта, заманчива. Но это только идея. В реальности UMLю в 90% случаях предпочитают доску или лист бумаги.

5 Сентябрь 2008 г. 23:43  
Blogger Alvo сказал(а)...

Да! Еще интересен обратный запрос: по базе резюме по словам java, "java uml". По первому варианту нашлось в 4 раза больше резюме. Т.е. как ни смотри, а вероятность молодому специалисту столкнуться с UML на практике весьма низка.

5 Сентябрь 2008 г. 23:52  

Отправить комментарий

<< Главная страница