Переклад із сайту yegor256.com . Оригінал статті англійською. Стаття викликала досить бурхливу реакцію у блозі Євгена Бугаєнка. У ній описуються критерії, які на думку автора впливають розмір погодинної оплати програміста. Позиція не однозначна, викликає питання, проте має місце бути. Матеріал не орієнтований на новачків. При цьому мені здається, стаття буде корисною для позначення напряму свого розвитку, зрозуміло, крім прокачування програмістського скіла. Оригінал перекладу розміщено тут . ________________________ Я отримую кілька листів кожен день від програмістів зацікавлених працювати з teamed.io віддалено. Перше питання, яке я зазвичай ставлю це «Яка твоя погодинна ставка?» (Ми платимо по годинах ). Мене дивує як часто люди некоректно оцінюють себе як у більшу, так і в меншу сторону. Мені називають різні цифри, від 5 до 500 $ на годину. Я ніколи не говорю ні, але зазвичай приходжу до своєї оцінки годинної ставки. Ця стаття пояснює, які фактори я розглядаю, а які ні. Це мої персональні критерії, не сприймайте їх як професійний стандарт. Мені вони здаються об'єктивними та логічними. Внесок у проекти з відкритим кодом. badge Це перша та найважливіша характеристика розробника ПЗ. Яким є твій внесок у проекти з відкритим вихідним кодом? Ти маєш твої власні відкриті бібліотеки, які використовуються в спільноті? Ти пишеш код, який доступний публічно та затребуваний іншими? Якщо тобі нема чого відповісти на ці запитання, я бачу три можливі причини. Перше, ти соромишся ділитися своїм кодом, бо він лайновий. Очевидно, це не гарний знак. Не тому, що твій код може бути поганим, але тому, що ти не достатньо хоробрий, щоб усвідомити це і розвиватися. У наших командах ми приділяємо велику увагу якостікоду та більшість наших нових членів команди здивовані нашим високим стандартам якості. Ти теж будеш здивований. Питання в тому, чи зможеш ти розвиватися чи здасись. Якщо ти не ділився своїм кодом раніше і ніколи не обробляв негативний зворотний зв'язок, ти не зможеш почуватися комфортно в наших проектах, де вимоги до якості дуже високі. Друга можлива причина, це ти працюєш із дев'яти до п'яти за їжу, без пристрасті. Насправді у цьому ніхто не зізнається. Я часто чую щось на кшталт «моя компанія не платить мені за внесок у open source проекти, а вдома хочу проводити час зі своєю сім'єю». У сучасній розробці ПЗ більшість коду, з яким ми працюємо, є відкритим – бібліотеки, фреймворки, інструменти та інше. Майже все, що ти використовуєш у твоєму комерційному проекті – це open source. Платячи тобі зарплату, твій роботодавець вже здійснив внесок у продукти з відкритим кодом, бо ти активно їх використовуєш. Проблема в тому, що ти при цьому не зацікавлений бути активнішим і робити свій внесок у open source проекти. Я бачу це як недолік пристрасті та мотивації. Чи будеш ти ефективним розробником у наших проектах? Навряд, тому що наша система менеджменту спирається на само-мотивацію . Остання можлива причина, це ти не знаєш, що писати і в який проект розвивати, що означає недолік креативності. Як я зазначив вище, майже все, що ми використовуємо сьогодні - це відкритий код. І ці інструменти сповнені багів, багато нереалізованого функціоналу. У той же час ти не бачиш жодного способу покращити їх? Ти не знаєш, що може бути зроблено краще? Ти не можеш як мінімум знайти звіт і пофіксувати один баг у тому продукті, який ти використовуєш щодня? Це означає, що ти також не зможеш знайти спосіб покращити наші продукти, оскільки ми покладаємося на твою здатність знаходити проблеми креативно . Тому, якщо твій GitHub аккант порожній і твоє CV не містить рядки «активну участь у розвитку ядра Linux» (а чому б і ні?), я моментально втрачаю інтерес. З іншого боку, коли я бачу 100+ зірковий проект на твоєму GitHub, я надихаюся та готовий запропонувати велику оплату. Розташування Розповсюджена практика платити більше тим, хто живе в дорожчих країнах. Коли я отримую резюме з Сан-Франциско, ставки, що запитуються, становлять $70+ на годину. Ті ж навички і досвід коштує $15-20 для Карачі. Причина – вартість життя у США значно вища, ніж у Пакистані. Однак ця причина для мене є нелогічною. Якщо ти їздиш більш дорогою машиною, чи зобов'язані ми тобі платити велику зарплату? Аналогічно з твоїм місцем розташування. Ти вибрав країну проживання. Ти користуєшся всіма перевагами розвиненої країни та платиш за це. Це твій вибір. Ти вирішив витрачати більше грошей за якість життя – яке це стосується мене? Хочеш платити $30 за ланч? Стань кращою як розробник. До того часу, купуй хот дог за пару доларів. Просто фраза "Я вже тут і мій ланч коштує $30" - не аргумент. Відповідно якщо ти живеш у дорожчому місці, менше грошей залишається у твоїй кишені. Для нас це означає, що $100 замотивують програміста з Карачі набагато сильніше за ті самі $100 замотивують ту саму людину, якби він жив у Сан-Франциско. Тому ми вважаємо за краще працювати з людьми, чиї витрати нижчі. Наші гроші таким чином краще працюють. Репутація на StackOverflow.com Ми всі знаємо, що на StackOverflow дуже мало людей, навіть напрочуд мало людей, які активно роблять свій внесок. Якщо твій профіль порожній (або якщо у тебе його немає), тоді зрозуміло, що у тебе 1) немає запитань, щоб ставити, 2) тобі нема чого відповідати. Перше, якщо ти не питаєш там нічого, ти не ростеш. Твій процес навчання зупинився колись, можливо після того, як ти отримав роботу в офісі . Чи може бути ти надто сором'язливий, щоб питати? Чи ти не можеш описати свої питання досить точно? Чи, може, на твої запитання вже є відповіді? Це сумно у будь-якому випадку. Друге, якщо ти не відповідаєш, значить тобі просто нема чого сказати. У більшості випадків це говорить про те, що ти не вирішуєш складних та унікальних проблем. Ти просто спільно з іншими пишеш відомі компоненти та отримуєш свій чек. Я часто чую, що люди вирішують більшість їхніх проблем, ставлячи питання колегам, які сидять поруч із ними в офісі. Вони кажуть, StackOverflow їм просто не потрібен (або інші схожі ресурси, якщо вони існують), тому що їхня команда така хороша, що завжди можна отримати відповідь на будь-яке запитання. Це добре для команди, але погано для тебе. Чому? Ти не маєш важливої ​​навички – знаходження відповіді в публічному Інтернеті. У наших проектах ми не заохочуємо будь-які горизонтальні комунікації між програмістами, і ти не зможеш отримати допомогу ні від кого. Ти будеш сам по собі і ти провалишся, тому що ти звик отримувати допомогу від старших у своєму офісі . StackOverflow це не просто індикатор наскільки ти розумний і як багато голосів у тебе є за найкращий жарт про програмістів . Це доказ, що ти можеш отримати відповіді на запитання спілкуючись із людьми, яких ти не знаєш. Це дуже важлива навичка. Стаж роботи badge "Я писав на Java 10 років!" - і що? Це число означає лише одну річ для мене – ти зумів вижити у якомусь офісі протягом 10 років. Або може бути у кількох офісах. Ти переконав когось, що він повинен платити тобі за твої 10 років, проведених у його будівлі. Чи це означає, що ти писав щось корисне? Чи означає це, що ваш код був ідеальним? Ні перше, ні друге. Стаж роботи - це помилковий індикатор. Це навіть може зіграти проти тебе, у поєднанні з іншими індикаторами, зазначеними вище. Якщо твоє CV каже, що ти тільки почав програмувати 2 роки тому і твій GitHub та StackOverflow акаунти порожні – є можливість, що ти виправишся. Ти просто на початку кар'єри. Однак, якщо твоє CV каже що ти «10-ти річний системний архітектор» з нульовим внеском у відкриті проекти - це означає, що ти або брешеш про 10 років або ти абсолютно марний як архітектор . Моя думка така, що «досвід роботи», як аргумент, має бути використаний дуже акуратно. Розігруй цю карту, тільки якщо у тебе є інші переваги. Інакше тримай це при собі. Сертифікати Oracle, Zend, Amazon, IBM, MySQL та інші – ось про які сертифікати я говорю. Щоб отримати їх, ти повинен пройти іспит. Чи не легкий, і не онлайн. Це реальний іспит, який сдається в сертифікаційних центрах, де ти сидітимеш за комп'ютером, в умовах обмеженого часу, без книг або доступу до Інтернету і відповідатимеш на запитання. Чи достатньо принизливо для такого шановного розробника? Ага. І також дуже висока ймовірність провалиться, що теж досить незручно. Якщо ти зміг пройти іспити, це дуже хороша ознака. Якщо ти це зробив кілька разів, то просто чудово. При цьому якщо ти не маєш сертифікатів за всю кар'єру, то це з однієї з наступних причин. Перша, ти боїшся провалу. Серйозна сертифікація може коштувати кілька сотень доларів (я платив більше $700 за SCEA ) і ти не отримаєш їх назад, якщо провалишся. Якщо ти боїшся програти, ти боїшся боротися. Це означає, що ти злякаєшся в реальних ситуаціях, коли треба вирішувати реальні проблеми. Друге, ти не інвестуєш у себе. Це швидше за все означає, що ти не хочеш змінювати компанії і волієш знайти затишний офіс, де ти міг би сидіти вічно. Я пам'ятаю одного разу сказав своєму другові – «Ти значно покращиш своє CV, якщо отримаєш цей сертифікат». Він відповів із усмішкою – «Я сподіваюся, що мені не знадобиться CV. Мені подобається ця компанія». Цей підхід хороший для компанії, на яку ти працюєш, але це точно працює проти тебе. Виходячи з мого досвіду, найкращі командні гравціце ті, хто працюють на себе. Здоровий індивідуалізм є ключовим чинником. Якщо твоя головна мета – це отримувати щось для себе (гроші, репутацію, навички, знання) – ти будеш дуже ефективний у наших проектах. Наявність сертифікатів у твоєму профілі це індикатор того здорового індивідуалізму, який ми шукаємо. Різноманітність навичок. Що більше технологій чи мов програмування ти знаєш, то менше ти коштуєш. Я не говорю, що неможливо бути експертом у багатьох речах одночасно – це абсолютно можливо. Але дозволь мені дати прагматичну причину, чому не слід цього робити – конкуренція. На ринку тисячі програмістів на Java7 – ми можемо легко взяти будь-кого, хто нам потрібний. Але не так багато програмістів Hadoop чи XSLT дизайнерів. Якщо ти сфокусуєшся на певну специфічну галузь і будеш у ній експертом, твої шанси знайти роботу менше, але твоя ставка буде більшою. Ми зазвичай платимо більш вузько спеціалізованим спеціалістам, головним чином тому, що у нас немає вибору. Якщо проект, в якому ми працюємо, вимагає експерта з Lucene, ми знайдемо відповідну нам людину і зробимо все можливе, щоб взяти її до нас у команду. Зробимо все можливе, як правило, означає підвищити оплату. Таким чином, коли я чую, що ти маєш досвід у MySQL, PostgreSQL, Oracle та SQLite, я розумію, що ти знаєш про бази даних дуже мало. Виступи та Публікації badge Очевидно, що мати блог (про програмування, а не про улюблену кішечку) це позитивний фактор. Ще краще, якщо ти виступаєш на конференціях час від часу. У блогах я звертаю увагу на кількість коментарів, які залишають люди до твоїх статей. Якщо це конференція, найбільш значущим критерієм є те, як важко потрапити до спікерів. І статті у блозі та презентації роблять тебе більш цінним як фахівця. Головним чином тому, що ці речі показують, що деякі люди вже оцінабо твою роботу і твій талант. І це не якийсь один програміст, а група програмістів та інженерів. Це означає, що ми теж можемо покластися на твою думку. Крім того, якщо ти пишеш і викладаєш результати праці регулярно, у тебе вже є важлива навичка/талант – ти можеш представляти свої ідеї в «зручному» форматі. У наших проектах ми не заохочуємо неформальні зв'язки та використовуємо систему тикетів. У цих тикетах ти будеш пояснювати свої ідеї, питання та міркування так, щоб інші змогли б тебе зрозуміти. Без навичок представлення ідей ти не зможеш вижити у проекті. До речі, деякі розробники патенти навіть подають на свої імена – чому ти цього не зробив? Чи можливо опублікувати книгу? Чому ні? Попереднє місце роботи Я зазвичай не звертаю уваги на цей розділ твого CV. Наша модель управління настільки відрізняєтьсявід усього, що ти міг де-небудь бачити, що це не має ніякого значення скільки разів тебе звільняли або наскільки високим був твій пост у твоїй компанії. Навіть якщо твоя посада «Технічний директор Twitter» – це нічого не означає для мене. Мій досвід мені підказує, що чим більше компанія і що вища у тебе позиція в ній – тим далі ти від вихідного коду і від реальних технічних рішень. Віце-президенти та технічні директори проводять більшу частину свого часу на нарадах і займаються внутрішньою політикою . Я більш зацікавлений у тому «Що ти робив» останніми роками, ніж «Де ти робив» це чи «Як тебе називали», поки ти цим займався. Освіта BSc, MSc, PhD.. чи це важливо? Не думаю. Освіта дуже схожа на «Попереднє місце роботи», зазначене вище. Не так вже й важливо, де ти провів п'ять років після школи. Важливо, що ти робив у цей час. Якщо тобі нема чого сказати про свою активність у студентські роки, тоді що мені скаже назва твого ВНЗ? Звичайно, якщо це Стенфорд чи МІТ, то це зовсім інша річ. У цьому випадку я розумію, що ти пройшов їх випускні іспити і примудрився знайти гроші, щоб навчатися там. Це гарний знак, і я точно запропоную велику ставку. Але якщо ти випускник шаражки з нізвідки (як, наприклад, мій університет), тримайте цю інформацію при собі. Оплату $100+ на годину ми з радістю платимо експерту, який володіє кількома продуктами з відкритим вихідним кодом, має рейтинг на StackOverflow більше 20к, має сертифікати, статті, презентації або навіть патенти. $50+ ми платимо професійному програмісту, який володіє проектом з відкритим вихідним кодом або є активним учасником такого проекту, що має рейтинг на StackOverflow більше 5к, який пише про розробку ПЗ, що володіє сертифікатами. $30+ ми платимо програмісту, який регулярно вносить вклад у проекти з відкритим вихідним кодом, що має активність на StackOverflow, з кількома сертифікатами. $15+ ми платимо решті. Не зрозумій мене неправильно і не сприймай ці цифри як особисте. Ці ставки – оцінна метрика твого професійного рівня, а не тебе як особистості. Крім того, рівень не статичний, він змінюється щодня і все повністю у твоїх руках. Я пишу цю статтю, головним чином, щоб мотивувати тебе на зріст. Всі ці критерії застосовуються до нових членів наших команд. Як тільки ти почнеш писати код, ми вимірюємо твою продуктивність і ти можеш отримати зовсім іншу оплату, подивися як ми вважаємо погодинні ставки . До речі, ілюстрації до поста створені Andreea Mironiuc . https://www.youtube.com/watch?v=GS45LzE3LPQ