Как да оценим проект за уеб разработка

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

Когато трябва да прецените

Оценката колко време ще отнеме даден проект е важно, ако сметките ви се базират на време. Може да мислите, че ако плащате по часа (или седмица или месец), няма да е необходимо да преценявате времето. Това може да е вярно, но повечето клиенти ще искат да разберат общата цена на проекта.

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

Ако цените на проектите са базирани на стойност, все още се нуждаете от поне груба оценка на необходимите усилия. Това ви позволява да направите проверка на реалността спрямо цените си, за да сте сигурни, че правите поне минималната си почасова ставка. Ценообразуването, основано на стойността, трябва да ви позволи да увеличите драстично часовата си ставка, но ако се опитате да работите върху проект с ниска стойност за вашия клиент, бихте могли да свършите работа с много ниска скорост. С натрупването на опит ще придобиете вродено усещане кои проекти можете да си позволите да поемете и кои не са достатъчно ценни за вашия клиент, за да бъдат полезни.

За задълбочена дискусия относно ценообразуването на вашите проекти, вижте моето Ultimate Guide to Pricing Free Web Development.

Разбивайки го

Повечето проекти, докато ги получите, са твърде големи, за да се оценят. Проектите са колекции от много дискретни задачи. Имате много по-голям шанс да поемете някоя от тези задачи и точно да прецените колко време ще отнеме, отколкото да се опитвате да оцените проекта като цяло. Записвайте тези задачи поотделно, за да можете да разгледате всяка от тях поотделно.

Нека да разгледаме пример.

Пример: Направете моя блог за WordPress по-бърз и по-евтин!

При мен идва клиент със сайт с голям трафик на WordPress. Сайтът е бавен, а хостингът е скъп. Клиентът иска да помогна за решаването на тези проблеми. Аз поставям идеята за адаптиране на сайта към GatsbyJS, генератор на статичен сайт, изграден на React. Това би позволило на клиента да обслужва сайта като статична едно страница, което го прави супер бързо и лесно за хостинг. Клиентът харесва идеята, но задава страховития въпрос: „Колко ще струва?“

За да отговорим на това, първо трябва да разберем колко време ще отнеме това. За целите на този пример, ще приемем, че ценим този проект въз основа на времето, което ще отнеме за завършване, тъй като това е сценарият, при който оценката е най-важна. Нека го разделим на части.

Разбивка на най-високо ниво

  • Адаптирайте темата на WordPress към GatsbyJS
  • Мигрирайте съдържанието към сайта GatsbyJS
  • Улеснете потребителя да добавя съдържание, да изгражда и разгръща сайта

Сега взехме един единствен проект - преместете WordPress сайт в GatsbyJS - и го разделихме на три части. Тези парчета обаче все още са твърде големи за оценка. Колко време отнема да „адаптирате тема на WordPress към GatsbyJS?“ Не знам. Колко време отнема „да улеснява потребителя да добавя съдържание, да изгражда и разгръща сайта?“ Отново, не знам. Това означава, че моите парчета не са достатъчно малки. Нека направим още един пропуск.

Разбивка на адаптирането на темите

  • Адаптирайте темата на WordPress към GatsbyJS
  • Намерете шрифтовете, използвани в темата на WordPress
  • Мигрирайте глобалните типографски стилове
  • Адаптиране на заглавката
  • Адаптиране на областта на съдържанието
  • Адаптирайте долния колонтитул
  • Адаптиране на страничната лента

В процеса на мислене за това как да разбия адаптацията на темата разбрах, че на сайта има някои страници, които не използват глобалната заглавна част, област на съдържанието, долен колонтитул и странична лента. Тези страници са изградени по поръчка с конструктор. Ще трябва да ги изградя ръчно.

  • Създайте персонализирани страници на WordPress

Това е приятен страничен ефект от разбиването на вашите проекти. Ще откриете части от проекта, които може би сте пренебрегнали иначе.

Мислене чрез миграция на съдържание

  • Мигрирайте съдържанието към сайта GatsbyJS

Докато разгледах това, разбрах, че трябва да взема някои решения. Gatsby има плъгини, които ми позволяват да изтеглям съдържание от много различни източници. Трябва да реша кой източник има смисъл за този проект.

Ако исках, бих могъл да го извадя от съществуващата база данни на WordPress, но това би означавало, че клиентът все пак ще трябва да хоства базата данни някъде. Това ще даде на моя клиент възможността да създава съдържание в таблото за управление на WordPress, което е това, с което вече са свикнали. Не съм сигурен колко важно е това. Това вероятно е добър въпрос да зададете на клиента.

Ако исках да направя чиста почивка с WordPress, бих могъл да използвам различен CMS като Contentful. Това все още ни оставя доста голяма сметка за CMS. Тъй като клиентът ми е загрижен за цената, не искам да минавам по този маршрут. Обсъждайки това с моя клиент, научих, че те са удобни за Markdown, така че ще продължа с това за съдържанието.

Направих малко проучване и научих, че това решение направи настоящата стъпка доста ясна. Намерих инструмент, който преобразува вашите публикации в WordPress в Markdown и създава подходящата структура на директория за Gatsby. Вероятно трябва да го тествам, за да съм сигурен, че ще работи, но ако не стане, бих могъл да напиша скрипт на команден ред, който да извърши преобразуването вместо мен. Ако искам да съм напълно безопасен, вместо това мога да преценя за това. Ако съществуващият инструмент работи, това е бонус за мен!

И в двата случая не мисля, че в момента трябва да разбивам това.

Автоматизиране на конструкциите и внедряването

  • Улеснете потребителя да добавя съдържание, да изгражда и разгръща сайта
  • Генериране на страници от източници на Markdown

Откакто съм решил за Markdown, знам, че имам нужда от тази стъпка, за да позволя на моя клиент да добави ново съдържание. Не съм сигурен какво точно искам да направя в изграждането и разполагането. Най-лесното нещо за разработване би бил прост скрипт на команден ред, който ще изгражда и разгръща, но това няма да работи добре за всеки клиент. Дори много разработчици не са удобни в командния ред, да не говорим за обикновените хора.

Още няколко изследвания разкриват Netlify CMS. Това е фантазия отпред за редактиране на файлове в хранилище на Git. Намерих стартер на Gatsby, който включва всичко необходимо за изграждането и разгръщането на сайта, след като се добави ново съдържание чрез Netlify CMS. Отново това ценно изследване направи това произведение много по-ясно.

  • Работете от стартер gatsby-starter-netlify-cms

Финалната разбивка

  • Адаптирайте темата на WordPress към GatsbyJS
  • Намерете шрифтовете, използвани в темата на WordPress
  • Мигрирайте глобалните типографски стилове
  • Адаптиране на заглавката
  • Адаптиране на областта на съдържанието
  • Адаптирайте долния колонтитул
  • Адаптиране на страничната лента
  • Създайте персонализирани страници на WordPress
  • Мигрирайте съдържанието към сайта GatsbyJS с инструмента за конвертор
  • Улеснете потребителя да добавя съдържание, да изгражда и разгръща сайта
  • Генериране на страници от източници на Markdown
  • Работете от стартер gatsby-starter-netlify-cms

Сега най-накрая имам късове, които бих могъл да се надявам да преценя точно.

Оценка на частите

Ето къде са залозите: поставяне на числа за всяка от тези задачи. Ще нарисувате едно от двете неща, за да измислите числа:

  1. Вашият предишен опит прави същото или нещо подобно. Ако всичко, което имате, е вашата памет, това е по-добре от нищо ... но не много. В идеалния случай сте проследявали времето си и можете да погледнете назад в историята, за да знаете колко време всъщност е отнела тази задача в миналото.
  2. Най-доброто ви предположение. Тъжно е, но е истина, но науката и фактите ще ви стигнат само досега в преценката ви. Дано да имате някаква основа за това. Дори и да не сте се справили със задачата, която оценявате, може би сте се научили да правите нещо подобно в миналото и всъщност сте го свършили. Времето, необходимо за това, може да е подобно на времето, което ще отнеме за това.

Но нямам / достатъчно / подходящ опит!

Когато си нов, ще се окажеш, че се облягаш много по-силно на предположения, отколкото на опит. Това е добре.

Ще объркаш. Ще драстично подценявате нещо и ще намалите почасовата си ставка за този проект до $ 8 / час. Можете дори да направите това два или три пъти (или повече).

Това, което купувате с целия изгубен доход, е опитът, който ще трябва да направите по-добра оценка следващия път. Добавяте точка от данни, която ще вземе предвид в следващата оценка на проекта. Моля, уверете се, че сте го заснели по някакъв начин, така че парите ви да не се разхищават.

Неща, за които дори няма да мислите

Общуване с клиенти

Какви са очакванията на клиента за комуникация? Искат ли да се срещат с теб по час всеки ден или веднъж седмично? Оставят ли това на вас? Независимо, ще прекарате известно време в комуникация с клиента. Не забравяйте да вземете предвид този път в своята оценка.

Ревизиите

Този проблем може да бъде отстранен в договора ви, като се изисква повторно договаряне на условията, ако има обширни ревизии, но вероятно ще трябва да направите поне някои незначителни ревизии в почти всеки проект. Уверете се, че правите квоти за това.

пътуване

Повечето работни места за уеб разработка не изискват да пътувате, но някои очакват да влезете в офис, за да работите или просто да се регистрирате или да присъствате на срещи. Това пътуване отнема време, което трябва да бъдете таксувани като част от проекта.

Как да започнем

Ако сте нови за фрийлансирането, ето стъпка по стъпка как да започнете.

  1. Разбийте проекта най-добре, както можете. Искате части, достатъчно малки, за да можете да ги прецените, но искате да избегнете прекарването на 3-4 часа за тази стъпка, разграждайки всичко на фин прах.
  2. Разберете частите, за които имате най-малко представа. Направете малко проучване на всеки от тях, докато не придобиете малко по-добра представа колко време ще отнеме. Отново постигнете баланс тук. Очевидно можете просто да направите проекта, за да премахнете всички догадки, но това е няколко стъпки твърде далеч.
  3. Направете най-добрия си кадър с всяка задача. Знам, че нямаш много опит, но черпи от това, което имаш. Ако се натъкнете на задача, с която нямате абсолютно никаква идея да започнете, тази работа може да не е добра за вас в този момент от вашата практика на свободна практика. Няма срам да кажа на клиента, че проектът не е много подходящ и препоръчва някой друг. Все още можете да бъдете герой, като помагате на клиента да намери решение.
  4. Удвоете всичките си оценки. Поне ги удвойте. Уеб разработчиците са изключително оптимистични. Ще намерите оценките си, които смятате, че се основават на „най-лошите сценарии“, всъщност са някъде по средата на възможните резултати. Ще разберете това, като ударите действителния най-лош сценарий за няколко задачи. Удвояването на всичко ще означава, че няма да загубите ризата си за тези задачи, а допълнителният буфер за задачите, които са минали добре, може да ви позволи да продължите да достигате общата си оценка за проекта.

Ако имате еднократно отнемане от тази статия, би трябвало да завиете това като нов разработчик и като ветеран консултант. Не губете много време, опитвайки се да го направите перфектен.

Отделете час или два, за да разбиете нещата и да направите някои изследвания. Приближете се колкото можете повече и продължете напред. Запишете какво всъщност се е случило и следващия път въведете тази информация във вашия процес. В крайна сметка ще забележите, че подценяването ще се случи далеч по-рядко, отколкото когато се приближите. Това е наистина най-доброто, на което някога можете да се надявате.

Предоставям 4 безплатни наставнически сесии всяка седмица в raddevon.com. Няма значение къде се намирате в пътуването си - просто започвате, опитвате се да преминете от младши към старши програмист или нещо между тях. Направете се там, за да вземете своето!

Първоначално публикуван в raddevon.com.