Vitalii Tsybulnyk / Виталий Цыбульник

On Software Development / О софтверной разработке

About the author

    Vitalii Tsybulnyk
Vitalii Tsybulnyk is a Software Development Expert, Software Engeneer at Mictosoft.
E-mail me Send mail

Recent comments

Disclaimer

The opinions expressed herein are my own personal opinions and do not represent my employer's view in anyway.

© Copyright 2008-2010

Необходимо ли нам образование?

Последние посты Паши Подлипенского просто таки цепляют своей актуальностью. Вот и ещё к одному не смог остаться равнодушным.

Немного обобщая, сформулирую суть поста. Поднимается наболевший вопрос "какова роль высшего образования в карьере современного ИТ-шника на пост-советском пространстве?" и в качестве ответа предлагается следующий: "При нынешней системе образования польза от ВУЗа стемится к нулю (кроме общения с некоторыми преподавателями-практиками), что признают также и работодатели":

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

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

превратить университеты в почти аутсорсовые компании. И вместо элементарных лабораторных работ на 1-2 курсах выполнять небольшие проекты. В основном саппорт старых продуктов, баг-фиксы. Этот опыт поможет молодым специалистам ознакомиться с архитектурой сложных систем на практике. На 3-5 курсах, уже можно браться за исследовательские проекты и проекты, требующие реализации сложных алгоритмов.

Что тут можно сказать?

 

Во-первых хочется немного "обыграть" утверждение о бесполезности высшего образования. Как мы это можем утверджать? Ответ довольно очевиден - 95% всего, что изучается в ВУЗе, среднестатистическим ИТ-шником потом нигде и никогда не используется. Согласимся с этим. Только ли у ИТ-шников дела так плохи? Думаю что нет. Думаю 95% того что учат будущие врачи тоже им без пользы: ботанику, химию и т.п. Думаю то же самое подтвердят представители большинства профессий. Что же делать? Институт высшего образования исчерпал себя?

Копаем дальше. Кто последний раз на работе использовал интегрирование? дифференцирование? законы гидродинамики? формулы органических соединений? стихи Шекспира? А это уже программа старших классов... Как насчёт систем алгебраических уравнений? теоремы Пифагора? стихов Пушкина? пестиков и тычинок? валентности химических элементов? А это уже средние классы пошли... И наконец, кто когда последний раз умножал в столбик? разбивал слова на слоги? делал разбор предложения? нет? А это уже младшие классы! Можно так дойти до утробы матери и понять, что 95% всего, что мы делали когда учились, мы не используем!

 

Какой тут можно сделать вывод?

Не нужно искать в учёбе точных аналогий тому, чем мы занимаемся сейчас. Их быть не может, да и не должно. Когда мы подтягиваемся на перекладине, то в 95% случаев мы не хотим просто больше подтягиваться, мы хотим быть сильнее, выносливее и здоровее, и это работает! Конечно, есть 5% "счастливчиков", которые с детства поднимали гири и потом пошли разгружать арбузы, но если даже грузить арбузы мы не хотим, это не значит что на гири нечего смотреть Smile

Возврашаясь к теме высшего образования, не стоит мерять его полезность количеством классов на С++, которые вы потом смогли использовать, или современностью языков программирования, или глубиной изучения сетевых протоколов. Это всё вы без труда освоите сами применительно к тем проектам, над которыми вы работаете. Почему без труда? Да потому что за эти 5 лет в ВУЗе вы научились главному - УЧИТЬСЯ. Вы получили, усвоили и использовали столько разнообразной информации, что стали УМНЕЕ, вы стали лучше УМЕТЬ ВОСПРИНИМАТЬ И ОБРАБАТЫВАТЬ НОВУЮ ИНФОРМАЦИЮ, а это ценнее и труднее всяких конкретных знаний.

Конечно, соблазн потратить это время "с бОльшей" пользой велик - за это время можно стать Senior'ом в своей области, но поддаваться не стоит. Шанса получить тот кругозор и "прокачать" свой интеллект уже не будет. Через 7-10 лет разница в опыте сотрётся и вот здесь я делаю ставку на человека с высшим образованием. Я думаю он пойдёт дальше.

Кроме того, через 10 лет может появиться совсем новая технология, в освоении которой у человека с высшим образованием огромнейшая фора. Да и новые технологии придумать может только человек, у которого больше запас разнородных знаний и аналогий, чем только опыт конкретной работы.

 

Но это всё красивая теория... А что суровая действительность? К сожалению, на пост-советском пространстве долговременные инвестиции (которой на мой взгляд является высшее образованиее) не в моде ввиду изменчивости всего происходящено. Все хотят заработать побыстрее и побольше, а иногда это жизненная необходимость, поэтому я не осуждаю тех, кто бросил ВУЗ и пошёл работать - это их выбор и им виднее насколько он верный. Я обращаюсь к тем, кто дошёл до конца и получил эту "корочку" - не жалейте! Может ваши выгоды пока не очевидны, это не значит что их нет.

И уж совсем на последок - пару слов ИТ-шникам. Ни в одну ИТ-компанию мирового уровня (Microsoft, Google, IBM...) вас не наймут без высшего образования, а они знают что делают. Более того, на собеседованиях в такие компании только 50% (а то и менше) внимания уделяется вашим профессиональным навыкам, остальное - мышление, логика, математика, алгоритмы и решение проблем - то, что может дать только высшее образование. Не лишайте себя перспектив Wink


Categories: Development | Management
Posted by Vitalii Tsybulnyk on Wednesday, November 19, 2008 11:26 AM
Permalink | Comments (9) | Post RSSRSS comment feed

Почему производить ПО настолько сложно?

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

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

Что же случилось с появлением компьютеров и программ для них?
Человечество вошло в век ИНФОРМАЦИИ. Что это для нас изменило?

Изменение стало весьма существенным, появилась возможность делать две абсолютно новые вещи:

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

2. Не слепо следовать физическим, химическим и прочим законам своего мира, а создавать новые "виртуальные" объекты, аналогов которым нет в реальном мире, которые подчиняются собсвенным (нами же созданным) законам.

Второе как раз и стало тем "новым измерением" которое получило человечество в своё распоряжение и которое вновь приближает нас к теме поста.

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

Какое же место принадлежит во всём этом разработчику программ? Как ни пафосно это звучит, но ему принадлежит роль Творца миров и объектов в этих мирах. Забавно, но даже термин "объект" сохранён в науке программирования и имеет именно такой смысл, как мы только что интуитивно вывели.

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

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

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

Мы ведь только учимся. В добрый путь, господа Творцы!


Categories: Development
Posted by Vitalii Tsybulnyk on Friday, October 17, 2008 7:14 AM
Permalink | Comments (3) | Post RSSRSS comment feed

Дай своей конторе второй шанс

Давече наткнулся на занятную одноимённую статью на любимом мною developers.org.ua.

Автор выступает от имени HR-менеджера, которому остро наболела проблема текучести кадров в украинском ИТ-бизнесе.

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

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

1) автор молодец, программисты замучили своим нелогичным поведением и нежеланием помочь менеджерам, которые с ног сбились ублажать девелоперов;

2) автор - яркий пример безграмотного менеджера, а понимать и предвидеть настроение сотрудников - и есть одна из основных задач менеджера.

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

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

С другой стороны, не стоит забывать о том, что всвязи с молодостью ИТ индустрии у нас практически никто не получает профессионального образования в сфере проектного менеджмента, а опыт 1-2 года уже считается существенным. Т.е. в большинстве своём менеджеры (кстати, как и разработчики!) - это самоучки, поэтому ожидать от них профессионально грамотного поведения не приходится.

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

Только дождавшись стабилизации рынка можно ожидать что

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

2) разработчики перестанут раздуваться от собственной важности и востребованности от того что цена на их труд растёт как снежный ком и станут так же заинтересованными в своей компании, как и она в нём.

Тогда и только тогда можно требовать тех "партнёрских" отшений между сотрудником и руководством, которые так хотелось бы наблюдать автору уже сейчас.

Categories: Development | Management
Posted by Vitalii Tsybulnyk on Tuesday, August 26, 2008 7:13 AM
Permalink | Comments (3) | Post RSSRSS comment feed