THEDUTCHMAN

На Пикабу
766 рейтинг 11 подписчиков 2 подписки 4 поста 1 в горячем
Награды:
5 лет на Пикабу
27

Безвозмездная помощь пикабушникам

Привет, Пикабу!


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


- Программирование C#: вопросы по языку, обучение,

- Разработка ПО: если вам или вашему бизнесу нужно небольшое приложение/сайт,

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


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


Пост без рейтинга, все контакты в комментариях.

Показать полностью
23

Ответ на пост «Прощу помощи советом что начать изучать в it сфере»1

Если вы всерьёз задались этим вопросом, то первым делом, что вам нужно сделать - это решить для себя следующее:


Во-первых, хотите вы этого или нет, но первым делом вам нужно будет начать учить английский. Дело в том, что вся документация, книги, курсы в 99% случаев будут на английском языке (1с в расчет мы не берем). Первым делом вам нужно будет научиться читать и понимать технический текст. Если вы еще сможете более-менее свободно говорить, то это будет огромным плюсом – разговорный английский – это очень большая проблема среди IT специалистов на постсоветском пространстве, а плохой разговорный английский очень серьезно ограничивает ваши карьерные перспективы.


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


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


В-четвертых, решите, насколько вы готовы к трудностям. К сожалению, IT – это одна из тех областей, в которых процветает эйджизм. Чем вы старше, тем сложнее вам будет найти работу. Вам придется выкладываться на 250% по сравнению с более молодыми конкурентами. Нужно запастить мотивацией.

ВНИМАНИЕ: вся информация ниже – это изложение моего собственного опыта, и мое видение ситуации, и, скорее всего, у вас будут другие мысли на этот счет. С удовольствием почитаю ваши комментарии.

Немного о себе: я занимаюсь программированием уже почти 9 лет. Начинал верстальщиком, работая без реального опыта за шапку сухарей после около 6 лет работы в саппорте, где я самостоятельно освоил азы программирования на языке C#, JavaScript и верстки; прошел весь путь от джуниора до тимлида, а сейчас занимаюсь консалтингом в области архитектуры веб-приложений и построения бизнес-процессов в разработке ПО.


Исходя из своего опыта, я разделил точки входа в IT для человека 25+ на два уровня. Уровень 0 и Уровень 1.


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


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

Дополнительно скажу, что список ниже максимально обобщенный и упрощенный, и его единственная цель – обзорно показать, какие есть возможности, и с чего можно начать.


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


Если вы хорошо владеете английским, то рекомендую посмотреть курсы на портале Udemy.com (не реклама) – там есть много реально хороших курсов практически по любой теме, и, в отличие от всяких скилбоксов и гикбрейнзов, курсы там доступны сразу и стоят в разы дешевле.


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

Уровень 0


Кол-центр IT компании (не продажи)


Что делать: принимать входящие заявки и распределить между специалистами

Необходимые навыки: умение включать компьютер и пользоваться поисковиком, обучаемость

Плюсы: низкий порог входа

Минусы: рутина, стресс, туманные перспективы

Куда можно расти: куда угодно в зависимости от профиля компании и ваших стараний

Необходимый уровень английского: разговорный английский серьезно расширит ассортимент вакансий


Монтажник сетей интернет


Что делать: лазить по чердакам и подвалам, проводя интернет, настраивать роутеры,

Необходимые навыки: умение работать с компьютером, общие представления об интернете и настройке роутеров.

Плюсы: интереснее, чем кол-центр

Минусы: чердаки и подвалы, крысы и бомжи, оборудование из говна и палок

Куда расти: сетевой инженер, системный администратор,

Необходимый уровень английского: нет


Эникейщик


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

Необходимые навыки: надо достаточно хорошо шарить в компах и орг. технике.

Плюсы: можно работать на себя, работы дофига

Минусы: этому не учат, можно надолго увязнуть

Куда расти: куда угодно

Необходимый уровень английского: нет


Ручной тестировщик


Что делать: тестировать программы, писать документацию

Необходимы навыки: мыслить нестандартно

Плюсы: самая близкая к народному пониманию IT входная точка

Минусы: много рутины

Куда расти: автоматизация тестирования, программирование, продакт-менеджмент, бизнес-аналитика

Необходимый уровень английского: чтение – минимум, письмо – желательно

Уровень 1


Верстальщик


Что делать: переводить макеты, подготовленные дизайнерами в HTML

Необходимые навыки: HTML5, CSS3, адаптивная верстка, GIT либо любая другая система контроля версий

Плюсы: уже реальная работа

Минусы: много рутины

Куда расти: Junior Front-end разработчик

Необходимый уровень английского: чтение - минимум

Дополнительно: крайне желательно иметь портфолио.


Junior Frontend разработчик


Что делать: разрабатывать пользовательскую часть веб-приложений

Необходимые навыки: JavaScript, jQuery, AngularJS или ReactJS или VueJS, HTML5, CSS3, адаптивная верстка, GIT либо любая другая система контроля версий

Плюсы: уже реальная работа

Минусы: набор необходимых навыков серьезно увеличивается

Куда расти: Middle Frontend разработчик, Full-stack разработчик

Необходимый уровень английского: чтение – минимум, разговор - рекомендуется

Дополнительно: крайне желательно иметь портфолио.

Что почитать: HeadFirst HTML, HeadFirst JavaScript, HeadFirst HTML5, HeadFirst GIT


Junior Backend разработчик


Что делать: разрабатывать серверную часть веб-приложений

Необходимые навыки: Python или C# или PHP или Java или JavaScrip + любой фреймворк для разработки веб-приложений, GIT либо любая другая система контроля версий

Плюсы: уже реальная работа

Минусы: набор необходимых навыков серьезно увеличивается

Куда расти: Middle Backend разработчик, Full-stack разработчик

Необходимый уровень английского: чтение – минимум, разговор - рекомендуется

Дополнительно: крайне желательно иметь портфолио.

Что почитать: HeadFirst (PHP & MySQL или C# или Python)


Игровой художник


Что делать: рисовать игровой арт: концепт-арты, ассеты дла игр

Необходимые навыки: навыки рисования, владение программами для 2d рисования (Photoshop) и/или 3d моделирования (Blender, 3DSMax)

Плюсы: уже реальная работа

Минусы: очень высокие требования

Необходимый уровень английского: чтение – минимум, разговор - рекомендуется

Дополнительно: портфолио ОБЯЗАТЕЛЬНО.

Показать полностью
5

Ответ на пост «Похоже, это глобальная проблема» - Часть 2

Этот пост - продолжение вот этого поста.

Дисклеймер: все нижеперечисленное является квинтэссенцией моего восьмилетнего опыта разработки приложений и может отличаться от вашего.

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


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


Собрав и подключив дом, мы можем начать в нем жить. В самом простом случае мы будем единственным собственником дома, и наш дом будет занимать весь участок. В этом случае мы просто берем наш собранный код и загружаем его по определенным правилам на наш сервер. Если вы хорошо построили дом, и больше ничего в нем менять не планируете, то вы можете дальше жить счастливо. В программировании дом постоянно развивается: появляются новые этажи, приходится менять коммуникации и снова все согласовывать и переподключать. Делать это вручную, да еще и по нескольку раз в день, бывает достаточно накладно, поэтому используются различные системы (TFS, GitLab, Jenkins и др.) для автоматизации этого дела, которые, конечно же кому-то надо настраивать. Их можно было бы сравнить с агентством, которому вы могли бы поручить заниматься всеми согласованиями перепланировок и подключением коммуникаций от вашего имени.


По мере роста Интернета начали появляться так называемые "облачные" сервисы. Теперь вам не нужно самому искать участок, на котором строить дом, и заниматься коммуникациями - за вас все сделает облако. От вас только требуется решить, насколько большой участок вы хотите. На данный момент существуют три основных игрока на "облачном" рынке - Microsoft, Amazon и Google. Они предоставляют схожий набор услуг, но каждый из них предлагает работать со своими по-своему. При этом и типов участков стало больше: вы можете получить полноценный участок в свое личное пользование с полным доступом к коммуникациям (выделенный сервер), можете выбрать только участок, а коммуникации оставить управляющей компании (например, через WebApp в Microsoft Azure).


В добавок к этому появилась мода на микросервисы, когда ваш дом спроектирован так, что каждая отдельная квартира или комната в доме, — это своего рода отдельный дом, и вы можете компоновать его в зависимости от своих потребностей. Накопили в начале только на однушку, потом "докупили" еще одну комнату, потом еще; дети съехали жить к себе - продали лишние комнаты. И все это без переездов и каких-либо перепланировок благодаря Docker и Kubernetes.

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


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


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


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

Теперь попробуем "перевести" вакансию из оригинального поста с HR-ного на человеческий:

Есть проект, написанный на React с использованием библиотеки Redux, с бэкендом на NodeJS и базой данных в MongoDB. При этом проект развернут в облаке Amazon с использованием Kubernetes.


Вряд ли тут от человека требуется доскональное знание всего. Хотя не стану отрицать, что есть конторы, в которых и такое бывает. Но что бы ты ни делал, ты должен иметь полную картину рабочего процесса в голове. Если ты фронтендер, то помимо, собственно, React'а и Redux'а ты должен знать, как запустить свой код в Docker и Kubernetes, а если ты бэкендер, ты должен знать, как там развернуть свою часть кода вместе с базой. И если ты претендуешь на должность junior разработчика, то я могу понять незнание чего-то, но если ты middle или тем более senior, то такая вакансия не должна быть для тебя чем-то из ряда вон.


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

Ответ на пост «Похоже, это глобальная проблема» - Часть 2
Показать полностью 1
12

Ответ на пост «Похоже, это глобальная проблема»1

Увидел я намедни пост, и как-то вдруг обидно стало, что решил я запилить ответочку и объяснить, где (и почему), по моему мнению, автор неправ.

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


Дисклеймер: все нижеперечисленное является квинтэссенцией моего восьмилетнего опыта разработки приложений и может отличаться от вашего.


Для начала, думаю, стоит объяснить суть оригинального поста, так как пост все-таки весьма специфичный.


Итак: на картинке в посте человек подшучивает над требованиями к какой-то айтишной вакансии (скорее всего, веб-разработчика). Суть претензий сводится к тому, что для предлагаемой зарплаты требования необоснованно завышены, и что по-хорошему в одной вакансии собрана работа нескольких человек. Как, например, если бы вы устраивались на работу грузчиком, а в требованиях к вакансии стояло бы, помимо хорошей физической формы, еще и умение водить погрузчик, грузовой кран и умение работать в системах управления складом. При всем при этом ЗП у такой вакансии средняя по рынку для грузчиков. Абсурдно? На первый взгляд, да, но давайте разберемся подробнее. Далее весь текст будет рассматриваться через призму веб-разработки, чтобы сохранить параллель с исходным постом.


Представьте, что вам нужно построить (разработать) дом (веб-проект), и вы находитесь где-нибудь годах в 90-х прошлого века. В вашем распоряжении есть доски (HTML) и гвозди (CSS), и, может, даже еще молоток (какой-нибудь веб-сервер, например, Nginx или Apache), ну, и ваши прямые (надеюсь) руки. Для того, чтобы построить дом, вам нужно знать, как использовать дерево, гвозди, и как работает молоток, правильно? Так же и веб-разработчику на самом базовом этапе нужно владеть HTML, CSS, ну и немного понимать, как работает веб-сервер, чтобы суметь "залить" на него готовый сайт, иначе его никто не увидит.


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


Теперь вы решаете, что неплохо было бы сделать так, чтобы все-таки можно было двигать мебель. Но вы никак не можете добиться от ваших рабочих того, чтобы мебель стояла на своих местах. Надо как-то нарисовать для них план, чтобы они знали, как, что и куда ставить. Но вы не можете просто взять листок бумаги и нарисовать в углу кресло. Ваши рабочие не поймут такого плана. Они работают только по планам, которые соответствуют определенным ГОСТам. Тут на помощь нам приходят базы данных (Oracle, MySQL, MSSQL, PostgreSQL, MongoDB и еще куча разных вариантов), в которых вы сохраните свой план, с которым рабочие смогут работать. Вам нужно будет выбрать определенный тип базы данных, и, скорее всего, в будущем вы уже не сможете его сменить, если понадобится. То есть вам, как веб-разработчику, нужно уметь работать хотя бы с одним типом баз данных.


Выбрав тип плана, с которым будет вестись работы, вы с дизайнером начинаете этот план рисовать. На этом этапе начинается основная "работа" над сайтом. На любом из доступных языков программирования (Java, C#, PHP, Python и многие другие) "описывается" то, как ваш сайт будет работать: кому будут уходить заявки, как будет сохраняться форма контакта и т. д.

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


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


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


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

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


Такими "наборами" или, как их называют программисты, фреймворками стали Knockout.js, AngularJS, ReactJS и (позднее присоединившийся к ним) VueJS. Они позволили значительно упростить работу с интерактивными элементами в вебе, и вместе с ними в наш лексикон пришло слово SPA, или Single Page Application (одностраничное приложение), обозначающее такое веб-приложение, где обновление содержимого на экране происходит без перезагрузки страницу. Начиная с этого момента, разработка сайтов с использованием "чистого" JavaScript или jQuery отходит на второй план, и новые фреймворки все чаще и чаще начинают встречаться в резюме и описаниях вакансий.


Теперь для того, чтобы построить дом, вам потребуется два типа знаний:


- фронтенд (фасад дома): один из фреймворков (Knockout.js, AngularJS, ReactJS, VueJS), JavaScript, HTML, CSS.

- бэкенд (перекрытия и коммуникации): базы данных (MySQL, MSSQL, Oracle, PostgreSQL, MongoDB), серверный язык программирования (Java, C#, PHP).

На этом моменте можно было бы остановиться, если бы не человеческая лень. Кто-то решил, что учить несколько языков программирования - это очень сложно, и что было бы гораздо лучше, если бы и фронтенд, и бэкенд можно было бы делать на одном языке. Так родился nodeJS.


Теперь вместо того, чтобы нанимать дизайнера и рабочих, мы можем сами сделать мебель из досок и гвоздей при помощи молотка, которым мы уже умеем пользоваться, и сами же ее расставить, как нам нужно. Удобно? Не то слово!


Продолжение следует…

Показать полностью 1
Отличная работа, все прочитано!

Темы

Политика

Теги

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

Сообщества

18+

Теги

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

Сообщества

Игры

Теги

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

Сообщества

Юмор

Теги

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

Сообщества

Отношения

Теги

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

Сообщества

Здоровье

Теги

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

Сообщества

Путешествия

Теги

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

Сообщества

Спорт

Теги

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

Сообщества

Хобби

Теги

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

Сообщества

Сервис

Теги

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

Сообщества

Природа

Теги

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

Сообщества

Бизнес

Теги

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

Сообщества

Транспорт

Теги

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

Сообщества

Общение

Теги

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

Сообщества

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

Теги

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

Сообщества

Наука

Теги

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

Сообщества

IT

Теги

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

Сообщества

Животные

Теги

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

Сообщества

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

Теги

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

Сообщества

Экономика

Теги

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

Сообщества

Кулинария

Теги

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

Сообщества

История

Теги

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

Сообщества