501

Кто что забыл в IT

Предисловие

Попросили меня в комментариях рассказать, с чего начать путь в IT непрограммисту. «С понимания того, что IT это не только программирование,» - тут же нашлась я. И вот плавно комментарий перерос в пост.


Дисклаймер

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


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


Текст мой, фото из интернета.

Кто есть кто в процессе разработки

1. Приходит заказчик, у которого ферма по производству сферических коней в вакууме. С ним заключают договор «на автоматизацию производства сферических коней в вакууме». Эти услуги продают сейлзы.


Для сейлза важно:

- понимать предметную область, в которой работает компания (в нашем случае это автоматизация производства);

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

Кроме того, тут важны «софт скилы»:

- умение презентовать продукт;

- объяснять, как все работает;

- уточнять, что в общих чертах нужно клиенту.

2. Когда документы подписаны, начинается этап анализа. Бизнес-аналитик приходит к заказчику и начинает задавать каверзные вопросы:

- А как вы коней создаёте?

- А что вы при создании задаёте? Только радиус? Или ещё цвет?

- А кто вообще коней создать может?

- А кто должен знать, что коня создали?

Потом аналитик идёт, выписывает в деталях, что нужно сделать, и согласует это с заказчиком.


Бизнес-аналитику нужно:

- уметь вгрызаться в заказчика и вытаскивать все детали того, как люди работают;

- хорошо структурировать мысли (хорошо бы знать про требования, критерии приемки и т.д.);

- уметь описывать процессы и согласовывать с заказчиком. Для этого есть разные нотации: UML, BPMN;

- быть стрессоустойчивым;

- для этапа дизайна (ниже) нужно уметь описывать модели данных, взаимодействие систем (для этого тоже есть диаграммы, например UML);


Рядом с бизнес-аналитиком на этапе анализа работает системный аналитик. Этот человек смотрит, что есть в системе сейчас (как устроены базы данных, с какими системами нужно настроить взаимодействие и т.д)


Системный аналитик должен:

- умеешь формулировать свои мысли;

- понимать, как устроены системы;

- понимать, как устроено взаимодействие систем (тут стоит почитать про API);

3. После анализа идёт этап дизайна. Здесь участвуют аналитики и архитектор. На данном этапе, после того как понятно, что есть, придумывают, как сделать заказчика счастливым.

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


Архитектор видит систему в целом и принимает глобальные решения. Деталями занимаются аналитики. В архитекторы часто уходят разработчики и аналитики, тестировщиков я пока не встречала (но это не значит, что их нет).


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


Дизайнер должен:

- разбираться в том, как строятся пользовательские интерфейсы;

- разбираться в UX;

- иметь чувство прекрасного.

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


Разработчики бывают совершенно разные. Есть те, кто делают красивые формы (фронтенд), есть те, кто пишут логику (бэкенд), есть те, кто делает и то, и другое (фулстек). Кроме того, есть спецы по БД, по интеграциям (API). Если интересна работа разработчика, то нужно вначале понять, к чему именно душа лежит.

5. Когда весь код написан, надо тестировать. Тут у нас тестировщик. Он проверяет, что все соответствует дизайну, работает корректно. Если что-то пошло не так, тестировщик заставляет программиста переделать.


Тестировщик должен:

- понимать, как должна работать система

- иметь воображение, чтобы понять, что можно сломать

- быть усидчивым

- понимать, как строятся тесткейсы и тестовые сценарии

- уметь воспроизводить найденные проблемы и описывать их для разработки.


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

6. Пока все тестировали и правили, документатор поговорил с аналитиками и описал поведение системы понятным пользователю языком.


Документатор молодец, если:

- понимает, как будет работать пользователь;

- понятно рассказывает;

- умеет грамотно выражать свои мысли.


Не редки ситуации, когда документацию пишет бизнес-аналитик. Просто потому, что этот человек хорошо разбирается в процессах пользователя.

7. Если все работает корректно, можно поставлять систему заказчику. Тут активно работает DevOps. DevOps - это стильно, модно, молодёжно.


DevOps может в:

- Git;

- процессы сборки (CI/CD);

- методы сборки;

- умеет писать конфиги (так что да, тут надо кодить);

- умеет настраивать интеграции;

- понимать, как устроена инфраструктура заказчика (какие системы, где, что и т.д.).

8. Когда все развёрнуто у заказчика, сотрудников заказчика учат. В богатых компаниях это отдельные тренеры. В бедных (или в сложных предметных областях) этим занимаются бизнес-аналитики. Сотрудникам заказчика показывают презентации, рассказывают, как они будут работать, дают задания что-то сделать самостоятельно.

9. Когда все обучены, начинается приемочное тестирование. Аналитики и руководители проектов сидят и с потными ладошками молятся, чтобы ничего у заказчика не отвалилось. Если что-то отвалится, что команда переделывает. Если все хорошо, новая система вместе с документацией переходит заказчику. Этап проекта (а то и весь проект) заканчивается.

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


Саппорт должен:

- быть стрессоустойчивым;

- уметь выпытывать и понятно описывать, что пользователь сделал;

- помнить (хотя бы самые часто встречающиеся) проблемы, с которыми сталкивались пользователи, и их решения.

11. Над этим процессом стоят менеджеры. Самые стрессоустойчивые ребята. Они воюют за бюджет, следят за сроками, убеждают заказчика, что он сам на такое поведение согласился (вот подпись). Менеджеры разруливают конфликты и следят за тем, чтобы выполнялись условия контракта.

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

P.S.: Всем желающим влиться в IT - удачи и роль по душе!

Больше постов читайте по тегу «Аналитика». А если хотите изучить новую профессию, посмотрите актуальные курсы от проверенных школ с реальными отзывами на сайте Пикабу Курсы.
Вы смотрите срез комментариев. Показать все
86
Автор поста оценил этот комментарий

То чувство, когда на проекте на тебя повесили 9 из 11 ролей.

Иллюстрация к комментарию
раскрыть ветку (23)
9
Автор поста оценил этот комментарий

Держись там! Когда-нибудь все образуется

3
Автор поста оценил этот комментарий

А если вы программист под микроконтроллеры в какой-нибудь мелкой форме, то вы можете быть все в одном, а иногда бывать и регулировщиком и пусконаладчиком и монтажником..

раскрыть ветку (2)
4
Автор поста оценил этот комментарий
И схему нарисуй и прототип запили и код напиши и всё за 50% от зарплаты веб программиста, который на удалёнке сидит в кресло пердит.. не идите люди в эмбед, как бы вам это интересно ни было...
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

и не забудь про сертификацию

2
Автор поста оценил этот комментарий

Это обычно либо в совсем дношных галерах бывает, либо в стартапах.

3
Автор поста оценил этот комментарий
Это отличная возможность стать крутым.
раскрыть ветку (17)
24
Автор поста оценил этот комментарий

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

раскрыть ветку (2)
2
Бежит, орёт
Автор поста оценил этот комментарий

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

Реальное интервью на что-то вроде начальника отдела аналитики со стороны заказчика, на очень жирный гос проект (кем кандидат до него допущен - отдельный вопрос):

- Как подчинённым задачи выдавали? В чём отслеживали статусы?

- Ногами подходил и выдавал. Иногда по почте.

Автор поста оценил этот комментарий
PM что ли?
5
Автор поста оценил этот комментарий

Смотря что понимать под крутостью)

С одной стороны, узнаешь много нюансов, которые сам же можешь учесть в разработке конечного продукта, можно гибко управлять требованиями, назначать самому себе сроки (о, это вообще прекрасно), можно избежать 10 этапов согласования изменений и т. д.  А с другой стороны, слишком много неинтересных задач (тестирование, документация, встречи с клиентами), вся ответственность на тебе - стресс, ну и самое грустное - сложно стать крутым разработчиком, когда ты непосредственно на разработку тратишь всего от силы 40% рабочего времени.

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

раскрыть ветку (13)
3
Автор поста оценил этот комментарий

Почему вы считаете себя плохим разработчиком? У вас есть отличная возможность видеть картину на всех уровнях и выстраивать эту систему максимально эффективно. Вы тратите минимум времени на передачу информации от уровня к уровню и передаете ее с наименьшим количеством ошибок. А то что код попроще да без кучи СОЛИДных переподвыподвертов, зачастую имеющих сомнительную ценность, так это вряд ли сильно мешает работоспособности программы. Да и то. Вы вполне можете научиться тем же трюкам, только не за 5 лет, а за 10. Но мне сомнительно что кодер замкнувшийся на одном языке, СОЛИДности и паттернах сможет через 10 лет во все то же что и более широкий специалист, а не будет просто бездумно писать по ТЗ абы что. Программа которая делает все что надо, но при этом состоит из 10 классов, а не из 1000 - все так же полезна. Программа которая делает не то что надо, но содержит в себе кучу классов и это все организовано в красивые паттерны - все еще является программой которая делает юзеру боль, вместо выполнения его задач.

раскрыть ветку (9)
1
Автор поста оценил этот комментарий

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

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

раскрыть ветку (8)
1
Автор поста оценил этот комментарий
Не парься. Узконаправленность или мультиплатформа-при всем желании на старте ты это не выберешь-так сложилось. Куда взяли, там и работаешь.
что касается старых проектов, год-3-5 назад, оно постоянно так и будет казаться говном, если ты растешь. Для этого и делаются апдейты. На старте идеал ты не напишешь.
Есть задача, есть решение. Проблемы могут вылезти на дистанции. Могут появиться новые библиотеки.

Я вот в фулстак не могу. Бэк я-легко, а вот фронт мне тяжело. Мне то понятно что и как, а вот френдли интерфейс создать не могу 🤷‍♂️.
0
Автор поста оценил этот комментарий

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


Я уверен что им живется попроще. Ведь не надо знать и бек, и фронт, и базу, да и проект им знать не надо - все в тз написано. А что не написано, так всегда есть сказать что кто тз не прописал, тот пусть и виноватым будет. Хотя и так ведь постоянно ноют что все им не так. И тз меняют, и колеги косячат, и дедлайны плохие. И только они в белом :)


Ну а проект сам. Чем бы он был лучше? Вот вы понимаете что можно сделать лучше. Значит вы сами можете сделать лучше. Тогда в чем лучшесть узкого специалиста по сравнению с вами? Тем что он может сделать лучше только свою узенькую часть?

раскрыть ветку (6)
1
Автор поста оценил этот комментарий

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

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

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

Ещё пример, когда у тебя в наличии только узкие специалисты, начальство вынуждено нанимать сотрудников, чтобы покрыть все задачи по проекту. Тогда как есть одна я, то начальство в эту сторону даже не смотрит. А в итоге одна я ну никак не могу сделать проект равносильно команде узких специалистов, от этого страдает качество и развитие продукта.

раскрыть ветку (5)
0
Автор поста оценил этот комментарий

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

Код может и получится лучше. Но все так же остается необходимость в том кто вот это хороший кусок кода и тот хороший кусок кода соединит вместе чтоб оно дало хорошую программу. Разве нет?

Разве тех долг копится от того что специалист широкий? Как узость поможет не копить тех долг? Мне всегда казалось что тех долг возникает когда бизнес говорит "надо вчера" и слабо зависим от ширины специалиста.

Бегая с фотошопом - почему развиваться не успеваете? Разве потому что это фотошоп? Или может потому что времени нет?

Если и менеджер, и программер, и тестировщик - разве перевес на срок внедрения возникает потому что один человек все три, или сколько их там, роли? Мне чегой-то казалось что перевес на срок внедрения возникает потому что это бизнес хочет и того, и этого, а еще и там вот подпилить.

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

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

раскрыть ветку (4)
0
Автор поста оценил этот комментарий

Отвечая на ваши вопросы, я попыталась объяснить почему, на мой взгляд, команда узких специалистов лучше, чем "все в одном". Лучше для конечного продукта. И да, время (=деньги) для продукта и бизнеса - это (в текущих реалиях) важнее всего. А про качества человека или разработчика вопрос вообще не стоял, по крайней мере с моей стороны.

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

раскрыть ветку (3)
0
Автор поста оценил этот комментарий

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

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

раскрыть ветку (2)
0
Автор поста оценил этот комментарий

Да, хуже. Да, не так хорошо. Из-за указанных мною выше причин. Это не простое уравнение количество х время, тут важна совокупность всех указанных факторов.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Зарплата выше рынка или в районе 100к? А то может получиться так, что вас несколько используют.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

У меня хорошая ЗП, с индексацией даже, но не выше рынка, просто тут есть один очень весомый бонус - ссуда. Иначе, я бы давно уже ушла)

0
Автор поста оценил этот комментарий

Или можно идти в си левел ;)

Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества