raptor-dm

Не много хейта в сторону веб разработки.

Recommended Posts

Закончил верстать и программить на заказ в 2017 году, пару проектов верстал в 2018, но чисто для себя.

Сегодня решил зайти на различные сайты объявлений по поиску работы, и посмотреть какие требования к front-end, back-end или fullstack разработчику, и на зп и условия. Интересно стало, что изменилось за столько лет. Если честно это жесть. У меня сложилось мнение, что ты должен знать и уметь все и сразу. А еще больше меня позабавило это зп. Она не изменилась, даже вроде уменьшается. И то это если не считать инфляцию. Сейчас 1000$ это не те 1000$, что были пару лет назад. + Ты должен постоянно развиваться, учить новые фреймворки, каждый месяц что-то новое внедряется. Стандартная вакансия на 1000-1500$, включает в себя знания и фронта и бекенда, миллион фреймворков, пайтон, плюсы. Столько знаний и опыта нужно, чтобы получать 1000-1500$. Мне кажется тут минимум зп должна быть от 3000$.

Как Вы вообще выдерживаете это? Увеличилась ли Ваша зп если не секрет? Что Вас держит в этой сфере?

 

 

 

Edited by raptor-dm

Share this post


Link to post
Share on other sites

Доля правды есть, да. 

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

Share this post


Link to post
Share on other sites

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

После 2-х месячных курсов Junior разработчик зарабатывает от $200/мес.

Начинающий верстальщик устраивается в офис после курсов. Знания мало, но этого достаточно что бы вносить правки и создавать лендинги. В процессе работы он параллельно, согласно задач, изучает препроцессоры, JS/JQ, Photoshop, Sketch, учится работать в Web/PHPStorm, осваивает Git, получает азы в Agile/Scrum.

Основной виде деятельности — лендинги, поддержка, внесение правок.
Время выполнения типовой задачи около 2 часов.

Через 2-3 года доход Middle разработчика от $1500/мес.

К этому времени разработчик уже сталкивался с *nix системами, умеет работать в консоли, поднять и настроить web-сервер, сталкивался с Docker/Vagrant, владеет уверенными знаниями при работе с фреймворками, хорошо ориентируется в web-разработке, создаёт билдеры, имеет представление что такое клиентская оптимизация, умеет работать в команде.

Основной вид деятельности — поддержка проектов, реализация фичей, участие в планировании и естимейтах задач проекта.
Время выполнения типовой задачи от 6-8 часов.

Ещё через 2-3 года Senior зарабатывает от $3500/мес.

Разработчик умеет создавать архитектурные решения с нуля, отлично разбирается в своей нише и хорошо в смежных, имеет чёткое виденье и понимание о трендах в разработке, умеет внедрять клиентскую оптимизацию, создавать или грамотно пользоваться фреймворками, писать документацию, вникает в задачи коллег и предлагает наилучшие по цена\скорость\качество решения для их реализации, делает Code Review, внедряет стандарты в процесс разработки.

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

О кадрах на рынке:

Несмотря на то, что рынок в сфере разработки большой — специалистов мало, очень мало. Из-за долларового вознаграждения в ИТ идёт все кто хочет, ради денег, не удовольствия. Компании не заинтересованы в потере специалистов, так как поиск нового стоит дорого. А специалисты, скорей всего, хорошо трудоустроены и схантить их крайне проблематично.

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

  • собеседование с рекрутёром 1-1.5ч
  • собеседование с тех. специалистом: 2ч
  • собеседование с Менеджером: 1-1.5ч
  • Офер

8 лет назад поиск работы занял 3 дня: собеседование с владельцем компании за чашкой кофе, длительность 1.5 часа

Не совсем понимаю негодование ТС. А в какой нише можно за 5-6 лет выйти на доход от $3500/мес?
Этот доход позволяет купить 1 ком. квартиру*:

  • в Москве за $127k за 4-6 лет
  • в Питере за $66k за 2-3 года
  • в Киеве за $66k за 2-3 года

* цифры ориентировочные

11 часов назад, raptor-dm сказал:

Как Вы вообще выдерживаете это?

Это совсем не сложно если заниматься ИТ в своё удовольствие, а не только ради денег.

11 часов назад, raptor-dm сказал:

Увеличилась ли Ваша зп если не секрет?

Смена места работы может принести +60% к з/п

11 часов назад, raptor-dm сказал:

Что Вас держит в этой сфере?

Удовлетворение от того что умеешь, знаешь и делаешь.

Share this post


Link to post
Share on other sites
6 минут назад, klierik сказал:

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

И особенно хороших специалистов. 

Share this post


Link to post
Share on other sites

О, забыл ещё сказать.

А теперь представим семью, в которой оба её члена работают в ИТ. К примеру:

  • он — Senior Front-end/Back-end developer
  • она — HR, recruter, QA

В итоге суммарный семейный бюджет может достигать около $6-7000. Это позволит не то что купить квартиру, но и паркетник, помогать родителям и летать в отпуск раз в квартал с бюджетом $2-4000.

Share this post


Link to post
Share on other sites

думаю будет интересно почитать Сколько зарабатывают нетехнические IT-специалисты в Украине

Получается что возрастная группа от 25 до 30 лет получает больше всех , за ними следует категория 31-40 лет. Младшее (до 24 лет) и старшее поколение (40+) получают меньше всего.

Share this post


Link to post
Share on other sites
16 часов назад, klierik сказал:

Не совсем понимаю негодование ТС. А в какой нише можно за 5-6 лет выйти на доход от $3500/мес?

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

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

В общем реклама, трафик и продажи.

Edited by raptor-dm

Share this post


Link to post
Share on other sites

Увеличилась. Не 1000 долларов, конечно, и в рублях, но семье есть, что покушать. Меня держит то, что я больше ничего не умею. Продавцом в супермаркете я не выдержу, с людьми взаимодействовать вообще не люблю, у меня для этого менеджер, с которым я тоже не люблю взаимодействовать. По образованию мне положено работать на заводе, но нас в универе не учили ничему, что помогло бы сразу пойти и работать, дали только некоторые теоретические азы, которые я давно забыл. А для качественной работы, я считаю, нужно иметь не азы, а понимание сути происходящего. Лично я вообще не научился понимать, зачем в цепи, скажем, резистор стоит, или где его нужно поставить и зачем. Особенно, когда нам начинали рассказывать, и у каждого резистора по 2-3 назначения, эдак поставишь его куда-нибудь, а он аукнется смещением постоянного напряжения где-то в другом конце схемы.


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


В программировании у меня, к сожалению, тоже азы с некоторой специализацией в вёрстке. Я не знаю многих тонкостей, и никогда, например, не углублялся в такие темы, где понадобились бы Reflection в PHP. Или, например, я люблю использовать SQL-запросы вместо ORM, потому что польза ORM для меня не пересиливает их многословность и косноязычность. Я, конечно, понимаю, что если следовать принятым стандартам, то потом легче дорабатывать код, но я пришёл в разработку из домашних проектиков, и так и не научился наслаивать абстракции ради стандартов. А, скажем, вебпак только позавчера стал поковыривать, чтобы понимать, что в нём вообще происходит, а то он сейчас везде. Настолько некрупные проекты у меня всегда были, что мне хватало отдельных JS-файликов.

И вообще, когда я с условного Delphi переходил на веб, то меня привлекало то, что не нужно ничего компилировать, не нужно ничего ставить, можно лишь запустить блокнот, а браузер уже есть на любом компьютере. Теперь этого ничего уже нет, постоянно то npm, то composer, сборка vue, сборка scss, когда без vue. У питонщиков и ноды, так вообще, веб-сервер является частью проекта, и чтобы что-то исправить, надо его перезапускать, а не как в PHP, просто файлик подправить. Веб перестал быть простым.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Member Statistics

    46,511
    Total Members
    3,128
    Most Online
    anasteisa
    Newest Member
    anasteisa
    Joined
  • Recently Browsing   0 members

    No registered users viewing this page.

  • Спрашивают сейчас

  • Пишут сейчас

    • Если в кратце, проблема возникает из за того что когда заходим на страницу изначально текущий урл страницы
      http://localhost:3004/tablets/tablet_1
      Если мы покликаем по табам (у которых тоже реализован роутинг и к урлу добавляется еще значение)
      То урл будет менять свое значение например на 
      http://localhost:3004/tablets/tablet_1/characteristics
      И вот, допустим у нас сейчас этот урл и если страница перезагрзиться, то реакт будет считать что текущий урл уже
      http://localhost:3004/tablets/tablet_1/characteristics
      а не 
      http://localhost:3004/tablets/tablet_1 как предполагается
      И из за этого возникают проблемы
      Могут быть вот такие страницы 
      localhost:3004/tablets/tablet_1/characteristics/characteristics А так быть не должно. Подскажите как решить такую проблему
      Если подробнее:
      Делаю Интернет-магазин на Реакте (в рамках учебного проекта)
      На данный момент сделал роуты для нескольких страниц 
      [JS]
      <Route path="/" ... /> // главная страница
      <Route path="/tablets"  ... />  // страница категорий
      <Route path="/tablets/:id"  ... /> // детальная страница товара
      [/JS]
      И это все работает хорошо Проблема с роутингом началась когда я начал делать табы на детальной странице товара. Их я тоже хотел сделать через роутинг.
      [JS]
      <Route path="/tablets/:id/characteristics"  ... />
      <Route path="/tablets/:id/opinion"  ... />
      <Route path="/tablets/:id"  ... /> // по дефолту
      [/JS]
      Пути у табов:
      [JS]
      to=`${ текущий урл страницы }/characteristics` // Таб "Характеристки"
      to=`${ текущий урл страницы }/opinion` // Таб Отзывы
      to=`${ текущий урл страницы }` // Таб "Описание" (по дефолту)
      [/JS] http://skrinshoter.ru/s/221019/1f36Q0Gw И это работает исправно, до тех пор пока страница не перезагрузиться.
      Прикол в том, что если мы кликали по табам, урл менялся и допустим стал таким : http://localhost:3004/tablets/tablet_1/characteristics
      И потом вдруг страницу перезагрузили А при перезагрузке страницы текущий адрес получается уже http://localhost:3004/tablets/tablet_1/characteristics     а не   http://localhost:3004/tablets/tablet_1     как задумывалось.     Из-за этого возникают проблемы когда кликаешь по табам:     адрес получается уже      http://localhost:3004/tablets/tablet_1/characteristics/characteristics     http://skrinshoter.ru/s/221019/eTe8ZW5F Вот в этом и проблема. Как такое решить?
      Дело в том что location.pathname я передаю через props дочернему компоненту, он принимает его и в state я добавляю ему
      [JS]`${ this.props.pathName }/characteristics`[/JS]Вот код, как это выглядит:
        class App extends Component {   render() {     <Switch>         <Route path="/" exact={true} component={ CategoriesList }/>       <Route path="/tablets/:id/characteristics"         render={ ({ match, location }) => {           const { id } = match.params;           return <DetailPage itemId={ id } currentTab="characteristics" pathName={ location.pathname } />         }}/>       <Route path="/tablets/:id/opinion"         render={ ({ match, location }) => {           const { id } = match.params;           return <DetailPage itemId={ id } currentTab="opinion" pathName={ location.pathname } />         }}/>       <Route path="/tablets/:id"         render={ ({ match, location }) => {           const { id } = match.params;           return <DetailPage itemId={ id } currentTab="description" pathName={ location.pathname } />         }}/>       <Route path="/tablets"         render={({ location }) =>           <CategoryPage             goodList={goodsList.tablets}             title="Tablets"             location={ location }             exact={true}             />}       />     </Switch>   } } class DetailPage extends Component {   state = {     tabs: {       opinion: {         tabId: 'opinionTab',         tabTitle: 'Отзывы',         tabPathTo: `${ this.props.pathName }/opinion`,         tabContent: 'Контент отзывов'       },       characteristics: {         tabId: 'characteristicsTab',         tabTitle: 'Характеристики',         tabPathTo: `${ this.props.pathName }/characteristics`,         tabContent: 'Контент Характеристик'       },       description: {         tabId: 'descriptionTab',         tabTitle: 'Описание',         tabPathTo: `${ this.props.pathName }`,         tabContent: 'Контент описания'       }     }   };   findCurrentGood(goodsList, itemId) {     for (let key in goodsList) {       goodsList[key].forEach(category => {         if (category.id === itemId) {           this.currentGood = category         }       })     }   }   findCurrentTab() {     for (let key in this.state.tabs) {       if (key === this.props.currentTab) {         this.activeTab = this.state.tabs[key];       }     }   }   render() {     const { goodsList, itemId, currentTab, pathName } = this.props;     const { tabs } = this.state;     this.findCurrentGood(goodsList, itemId);     this.findCurrentTab();               return() {       <div className="tabs">             <div className="tabs__menu">               {                 Object.keys(tabs).map(tab => {                   const tabClass = classNames('tabs__link', {                     'tabs__link--active' : tab === currentTab                   });                   return (                     <Link key={ tabs[tab].tabId }                           to={  tabs[tab].tabPathTo }                           className={ tabClass } >                       { tabs[tab].tabTitle }                     </Link>                   )                 })               }             </div>             <div className="tabs__content">               <h3 className="info__title">{ this.activeTab.tabTitle }</h3>               <div className="info__text">                 { this.activeTab.tabContent }               </div>             </div>           </div>     }   } }  
    • Создали Landing Page на тематику "Межевание земельного участка" Сделано: - С нуля разработана концепция и структура Landing page;
      - Разработан стильный и современный дизайн;
      - Наполнили контентом;
      - Качественная верстка и программирование сайта (быстрая загрузка, чистый, валидный код);
      - Подобрали хостинг и домен для клиента, установили и настроили сайт, установили админку Клиент на выходе получил полностью готовый для работы Landing Page Срок изготовления - 2 недели Если вам нужен качественно представить свою услугу, товары или компанию пишите по контактам ниже, сделаем вам крутой веб-ресурс, будь то Landing Page, Сайт многостраничник, Интернет-магазин.
      По невысокой цене и разумные сроки
      Контакты: Телеграм: @Nikker
      Скайп: smo_perviy
      E-Mail: Golllandec@gmail.com    
    • Здравствуйте. Предоставьте, пожалуйста, ссылку на сайт
  • Popular Contributors