Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Оплата труда программиста (https://javascript.ru/forum/offtopic/7172-oplata-truda-programmista.html)

Kolyaj 19.01.2010 10:08

Оплата труда программиста
 
Навеяло темой.

А кто знает нормальные схемы оплаты труда программистов? Нормальные как для программиста, так и для работодателя.

Допустим, вы хотите нанять фрилансера, или ввести в своей фирме оплату за результат, по какой схеме вы будете работать?

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

2. Оплата за потраченное на задачу время (для фрилансера). Тут есть один затык: производительность труда программистов отличается иногда в 10 раз. Получается, если Вася пишет программы быстро и качественно, а Петя медленно и херово, то Вася получит значительно меньше. Не говоря ещё о затягивании сроков.

3. За количество написанных строк кода. По слухам индусская система оплаты :) Если опустить возможность написания кода, вида
if (x > 0) {
    // ...
} else if (x <= 0) {
    // ...
} else {
    // Тут пишем, что душе угодно, чтобы на пиво хватило.
}
то получается, что программисты в данном случае мотивированы писать неоптимальный код, и никакого рефакторинга.

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

Так какая у вас схема оплаты, как вы с ней живёте, и какая, на ваш взгляд, идеальная?

Gvozd 19.01.2010 10:34

время от времени беру заказы на биржах фри-ланса
Беру деньги за готовый продукт.
В течении обычно семи дней после приема проекта, и получения денег, я предоставляю гарантийный срок, когда исправляю и модифицирую(если модификации незначительно отклоняются от ТЗ) скрипт, без дополнительных денежных вливаний
После этого срока, я оставляю за собой право брать деньги за правку багов и модификации скрипта, хотя обычно баги я правлю бесплатно(дело чести по отношению к своему продукту).
Оплата же обычно происходит по схеме:
Заказчик переводит всю сумму переводом по протекции с паролем, сроком до момента сдачи проекта + 7 дней
Таким образом я имею возможность спокойно работать, зная что получу эти деньги
Но и по другому получить оплату также возможно

Kolyaj 19.01.2010 10:40

Не, в данном случае интересно, как вычисляется конкретная сумма, и как, в случае фриланса, она объясняется заказчику (если он требует).

PeaceCoder 19.01.2010 15:12

Цитата:

Сообщение от Kolyaj
2. Оплата за потраченное на задачу время (для фрилансера).

Я бы еще добавил 4 пункт:
4. Оплата за сложность выполнения задачи vs срок (определяется программистом: сюда включается необходимое время и знания для выполнения, ведь каждую задачу можно выполнить лиж бы как и через левое ухо правой рукой)
Еще можно добавить оплату за высвободившееся время (если работа выполнена раньше сроков) или вычет за сверх срок (для справедливости)

Таким образом у программиста есть стимул сделать пораньше все и получить деньги + премию

Цитата:

Сообщение от Kolyaj
как вычисляется конкретная сумма, и как, в случае фриланса, она объясняется заказчику

Как один мне сказал - я беру деньги не за работу, а за свои знания. Я знаю как это сделать и сделать качественно.

Kolyaj 19.01.2010 15:23

Цитата:

Сообщение от PeaceCoder
4. Оплата за сложность выполнения задачи vs срок (определяется программистом: сюда включается необходимое время и знания для выполнения, ведь каждую задачу можно выполнить лиж бы как и через левое ухо правой рукой)

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

Цитата:

Сообщение от PeaceCoder
Еще можно добавить оплату за высвободившееся время (если работа выполнена раньше сроков) или вычет за сверх срок (для справедливости)

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

Цитата:

Сообщение от PeaceCoder
Как один мне сказал - я беру деньги не за работу, а за свои знания. Я знаю как это сделать и сделать качественно.

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

PeaceCoder 19.01.2010 15:32

Цитата:

Сообщение от Kolyaj
сроки всегда должен назначать исполнитель

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

Цитата:

Сообщение от Kolyaj
Мне её выполнить сложно (я ни разу такого не делал), тебе легко, т.е. для меня эта задача сложная, для тебя простая, т.е. я получу за неё больше денег, чем ты, хотя сделаешь её лучше, очевидно, ты.

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


П.С. Сравнение шло, если бы мы оба делали одну задачу в одни и те же сроки.

Цитата:

Сообщение от Kolyaj
Правильно сказал-то, но топик о том, как он выясняет, сколько денег взять.

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

Gvozd 19.01.2010 15:47

Цитата:

Сообщение от Kolyaj
Не, в данном случае интересно, как вычисляется конкретная сумма, и как, в случае фриланса, она объясняется заказчику

Цитата:

Сообщение от PeaceCoder
Как один мне сказал - я беру деньги не за работу, а за свои знания. Я знаю как это сделать и сделать качественно.

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

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

Сообщение от PeaceCoder
добавить оплату за высвободившееся время (если работа выполнена раньше сроков) или вычет за сверх сро

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

Kolyaj 19.01.2010 16:01

Цитата:

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

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

Цитата:

Сообщение от PeaceCoder
А теперь разберем по полочкам.

Так, а где на этих полочках зависимость от сложности? От скорости есть, от сложности нет.

Цитата:

Сообщение от PeaceCoder
Все задачи выполняются ~ одинаковыми способами

Задачи низкого уровня (написать функцию, модуль) выполняются одинаковыми способами, задачи высокого уровня (написать интернет-магазин) выполняются разными способами.

Цитата:

Сообщение от PeaceCoder
Цена понятие растяжимое.

Да нет, есть простое правило: "Товар стоит ровно столько, сколько за него готовы заплатить". Хотя я бы добавил "заплатить продавцу", т.к. один сможет продать товар за штуку баксов, а другой и за бакс не продаст.

Цитата:

Сообщение от Gvozd
90% моих заказов является написание парсеров и граберов

На nodejs получился бы отличный асинхронный многопоточный парсер ;)

Gvozd 19.01.2010 16:16

Цитата:

Сообщение от Kolyaj
На nodejs получился бы отличный асинхронный многопоточный парсер

возможно что и так, но я пишу их на PHP, и в ближайшее время эта ситуация не изменится потому что:
большинство хостингов заказчиков PHP-шные. также есть denwer
поставить же nodejs у себя на сервер(учитывая что у большинства все-таки нету возможности ставить свой софт), либо домашнем компе, для большинства заказчиков нетривиальная задача,и им проще найти исполнителя на PHP
более того в большинстве заказов изначально определяется язык разработки(PHP. Реже-Perl)
к тому же в Nodejs уже есть встроенный в язык полный DOM+XPath?
Если нет, то и речи нету о том чтобы переходить на него

В любом случае для PHP я уже выработал свой инструментарий для ассинхронности, который потихоньку дорабатываю


Часовой пояс GMT +3, время: 12:25.