Книги по разным темам Pages:     | 1 | 2 | 3 |

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

Недостатки:

несмотря на то, что специалисту известны многие технологии и языки программирования, его квалификация в отношении каждого конкретного инструмента может быть совершенно различной: от достаточно глубокого знания то поверхностного (на уровне написания программ типа Hello, world!), поэтому действительно сложная задача, требующая применения конкретного инструмента и знания его нюансов, может быть для программиста-коммивояжера неразрешимой;

по каждой отдельно взятой технологии или языку программирования коммивояжеры редко достигают той глубины знания, которой обладают специализированные шахтеры;

у подобных специалистов часто возникают проблемы с поиском работы, поскольку а) им интересно многое, но не что-то одно конкретное и б) могут присутствовать внутренние сомнения относительно профессиональной пригодности для данной конкретной вакансии;

могут испытывать трудности в части профессионального роста, потому что часто непонятно, куда стоит расти.

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

В качестве еще одного примера можно привести парадигму Рантье.

Слово рантье (фр. rentier от rente - рента) обозначает человека, живущего на проценты с отдаваемого в ссуду капитала или на доходы от ценных бумаг.

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

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

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

Табл. 1.

Примеры ответов программистов, преимущественно подпадающих под разные парадигмы специалиста, на вопросы о работе и обучении Примеры ответов Вопрос Шахтер Коммивояжер Как вы можете Я - системный программист, В настоящее время я - ведущий научный сотрудник охарактеризовать свой специализируюсь на C++, но знаю и Центра анализа и управления рисками ВНИИ ГОЧС рабочий профиль, то применяю несколько других языков. МЧС России1, занят разработкой прикладных есть своими словами Что касается областей деятельности, научных методик, моделей и т. д., а также описать, чем то у меня их две основных: мобильная автоматизацией, то есть разработкой ПО для занимаетесь на разработка (телефоны, смартфоны, расчетов и анализа согласно этим методик и другим сегодняшний день коммуникаторы и прочее) и серверная научным результатам. Задачи возникают разные: от Какое ПО используете и разработка для высоконагруженных разработки простых вычислительных программ до разрабатываете, каковы решений. В ходе карьеры я чередовал программ составления отчетов на базе анализа Ваши функции эти области, на последнем месте же я больших объемов данных и имитационных моделей, их фактически сочетаю. В настоящее поэтому применяются разные инструменты: от C++ и Федеральное государственное бюджетное учреждение Всероссийский научно-исследовательский институт по проблемам гражданской обороны и чрезвычайных ситуаций МЧС России (федеральный центр науки и высоких технологий).

время основную часть рабочего программ, написанных с нуля или на базе библиотек времени я уже не пишу код, а ставлю (например, Pilgrim 5), до Microsoft Access с Visual задачи другим программистам, Basic for Applications и геоинформационных систем провожу оценку и планирование (например, esri ArcGIS в прошлом ArcView). По ходу работы, а также разработку карьеры долгое время работал в сфере ИТархитектуры. образования, успел получить также опыт работы системным аналитиком (разработка систем дистанционного обучения), техническим писателем, специалистом технической поддержки.

Перечислите, Языки: Языки:

пожалуйста, С++ - владею достаточно хорошо, C++, C# - на сегодняшний день это два основных технологии, языки, основной рабочий инструмент; инструмента, владею уверенно;

методики и т.д., Python - знаком в общих чертах, на VB, VBA - в прошлом приходилось работать которыми вы владеете, уровне написания несложных довольно часто, так что знание уверенное, на и степень, в какой скриптов для обработки текстовой сегодняшний день применяются эпизодически владеете.

информации; при необходимости;

Test Driven Development - разработка, управляемая тестами. Процесс разработки ПО, базирующийся на многократном повторении очень коротких циклов разработки (создание провального теста, определяющего нужный функционал, написание кода, позволяющего программе пройти этот тест, рефакторинг кода).

Perl, PHP - когда-то был знаком, но Java, JavaScript, Perl - в прошлом приходилось знания остались в прошлом; применять несколько раз;

C#, Java - знаком в самых общих Python, PHP, Ruby, COBOL и еще с десяток чертах. языков - базовые теоретические знания или Технологии: навыки на уровне написания программ Hello world! мобильная разработка - Windows Технологии:

CE / Smartphone / Mobile, PalmOS, Symbian, Brew; компьютерная графика и интерактивные приложения - OpenGL, DirectX (достаточно серверная разработка - Unix/Linux:

давно не приходилось этим заниматься), но pre-fork, threading, sockets, знания и навыки практической разработки разработка приложений для работы обширные;

под высокой нагрузкой;

имитационное моделирование - Pigrim 5;

SQL - в общих чертах, на уровне стандарта SQLТ92. разработка на платформе Microsoft Office (в том Методики: числе сложных больших приложений, таких как графические конструкторы) - Access, Visio, Предпочитаю итерационную Excel, Word.

модель, TDD2, раннюю Методики:

интеграцию.

Проектирование взаимодействия по Куперу [14], водопадная или итерационная модель разработки в зависимости от размера проекта.

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

Какие дополнительные Знаком с теориями проектирования Аналогично, плюс SW-CMM3, COCOMO4, ITILзнания и навыки (не ПО, управления жизненным циклом (хотя в противовес стандартам на интерфейсы касающиеся программных продуктов. Немного считаю стандарты на процессы сомнительными с непосредственно знаком с теориями управления точки зрения полезности), метрики ИТ-услуг.

кодирования) у вас качеством, а также с управлением имеются рисками.

Capability Maturity Model for Software - модель зрелости процессов разработки программного обеспечения.

COnstructive COst MOdel - алгоритмическая модель оценки стоимости разработки программного обеспечения.

IT Infrastructure Library - библиотека, описывающая лучшие из применяемых на практике способов организации работы подразделений или компаний, занимающихся предоставлением услуг в области информационных технологий.

Как эти компетенции До вуза я знал Паскаль и немного C, До вуза я знал восемь диалектов Бейсика (Spectrum, приобретались по ходу в самых общих чертах представлял, Yamaha, G-BASIC, QuickBASIC и несколько других).

жизненного пути, что такое Ассемблер. В институте В институте изучил Паскаль, C, затем C++, начиная с вуза изучил C++ - это собственно Ассемблер, общие вопросы, связанные с разработкой основное, что пригодилось в БД, минимум по метрикам ПО, зачатки Perl. Во дальнейшем. Помогли также общие время обучения самостоятельно освоил Java, знания по теории баз данных (БД) и JavaScript, разработку приложений под Windows SQL. (WinAPI, MFC - это было в 1996 году, так что была Первая серьёзная работа познакомила необходимость осваивать самостоятельно, многие меня с Perl, PHP и веб-технологиями в тогда еще ограничивались программами под DOS), целом (в вузе тогда этого почти не Delphi, позднее Visual Basic. Волей случая я преподавали, а преподаваемое было в столкнулся с геоинформационными системами, минимальном, не годном к простой интерес заставил изучать DirectX, а работа употреблению объёме). Затем над диссертацией через несколько лет - привела к следующая работа была уже после изучению имитационного моделирования (Pilgrim 5), окончания института - там я начал OpenGL и всего, что связано с графикой в общем и с применять познания в C++ и визуализацией в частности.

познакомился с разработкой ПО под Работа в ИТ-образовании требовала широкого круга мобильные платформы. Потом новая знаний - декан отвечает за специальность, значит в работа - снова C++ и новые той или иной мере должен разбираться или хотя бы мобильные платформы. Потом смена иметь представление по всем вопросам, которые отрасли - разработка под Unix/Linux, затрагиваются учебным планом. Знания в области институтские познания к этому управления проектами, разработки документации, моменту практически забылись, технической поддержки потребовались уже на восстанавливал заново. Ну и следующей работе.

нынешняя работа - тут объединились мобильные платформы и серверная разработка. Руководить учился самостоятельно.

Что на ваш взгляд было На мой взгляд, много в нашем Сейчас, ретроспективно кажется, что наибольшая неправильным в обучении было лишнего, и многого проблема - отсутствие реальных задач. И дело не учебном процессе вуза явно не хватало. Самое неприятное, только в постановке: реальная задача всегда что не хватало многих вещей, которые комплексная - нужно не только разработать могли бы быть наиболее качественно алгоритм, но организовать взаимодействие с БД, освоены именно в институте - т.е. в создать интерфейс пользователя, вписать коллективе и в искусственных разработанное в какую-то уже имеющуюся систему, условиях. обеспечить вывод в файл определенного формата, Что было лишнего - явно лишние приложить к программе ту или иную документацию предметы, которые далеко не всем и т. д. В реальных условиях существуют и пригодятся или которые достаточно ограничения на условия, в которых задача решается:

егко изучить самостоятельно. жесткое ограничение по срокам, когда приходится Примеры: основы документирования выбирать инструмент, исходя из того, как можно ПО (далеко не всем нужен этот решить задачу более быстро, а не более эффективно;

формализм, легко изучить самому, без работа в команде - распределение функций; работа практики моментально забывается), только с определенными инструментами или экспертные системы (слишком узкая наоборот выбор инструмента, технологии по специализация, мало кому нужно), определенным критериям и т.д. Не могу сказать, что метрология и качество программного я получил в вузе хоть какое-то представление обо обеспечения (практической пользы всем этом.

мало, без практики моментально забывается) и т. д.

С другой стороны, не хватало технологии разработки ПО, разработки через тестирование (TDD), освоения средств для работы в команде, принципов рефакторинга и т.д. То есть нас очень мало готовили к реальной программистской работе в команде. Почти не объясняли, что такое качественный код, и как его писать.

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

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

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

культурология, разносторонне.

Pages:     | 1 | 2 | 3 |    Книги по разным темам