The Mythical Man Month

Една от класиките сред книгите за управление на софтуерни проекти. Написана преди повече от 40год., много от тезите са валидни и днес, което е и причината за преиздаването ѝ след толкова време.

Описват се основни възприятия в процеса на разработка, върху които малко хора са се замисляли и осмисляли – като защо обичаме да програмираме, какви са негативните страни от това, защо не успяваме да прогнозираме добре необходимото време за разработка. Някои от причините за последното са това, че сме оптимисти, не включваме в преценката си времето за комуникация, за дебъгване и тестове. Съществува също така грешното схващане, че работата на един разработчик е константа като човекочас. Съответно при забавяне в разработката на проект най-лесното решение е да се добавят още хора. Пропуска се обаче, че това внася допълнително натоварване към останалите и изисква повече време докато екипът се сработи. От тук произлиза и изводът, станал известен като закон на Brooks – “Adding manpower to a late software project makes it later”.

Друга интересна концепция, която се развива в книгата е начин за управление на разработката на голям софтуерен проект от голям екип разработчици (100+). Представят се предизвикателствата пред ефективното управление на много хора и един подход, който може да помогне – създаването на малки “хирургични екипи”. Малките екипи се състоят от един основен разработчик – “хирургът”, който взима решенията и разработва най-важните части от софтуера. Около него се създава екип от поддържащи роли – “копилот”, който може да върши всичко, но е с по-малък опит; “администратор”, който се занимава с административните дейности; “редактор” – документацията; двама “секретари” помагащи на администратора и редактора; “чиновник”, “инструменталист”, “тестер”, “адвокат на езика”, който познава тънкостите на използвания език за програмиране. По този начин комуникацията се разделя по определени роли и се улеснява скалирането на екипите.

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

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

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

PMI-PBA Certification

Преди два месеца започнах подготовка за изпит за сертификат за бизнес анализатор – PMI-PBA и в настоящата статия ще споделя мнението си за книгите и материалите, които използвах.

В мрежата има много информация относно процеса за кандидатстване (попълване на формуляра, изисквания за допускане до изпит, проверка на кандидатите), препоръки за курсове и учебни материали, трикове за по-лесно запомняне и успешно попълване на теста. Обемът информация, върху който е изграден изпита е доста голям. Самият PMI има изготвен списък от 12 книги за прочит. Препоръчват се различни курсове, семинари и книги по темата.

За своята подготовка аз избрах:

1. Онлайн курс – iZenBridge – PMI-PBA Exam Prep Course.

За този курс разбрах от един форум. Оказа се доста добър и полезен. Изготвен е специално за успешното вземане на PMI-PBA сертификата.

Съдържа повече от 60 часа лекции, групирани в няколко раздела. Има както въвеждащи, така и подробни лекции по различните теми. На по-важните теми има отделни лекции.

Информацията е поднесена по добър начин и на разбираем език. На моменти качеството на видеата не е много добро, но това не пречи на възприятието.

На края на всеки раздел има примерен тест от 10 въпроса за проверка на придобитите знания. Отделно има достъп до примерни тестове с по 50 въпроса от всяка област, както и 2 примерни теста от по 200 въпроса. Хубавото на тестовете е, че след попълване може да прегледаш отговорите и към всеки въпрос има допълнителна информация за отделните опции и анализ на верния отговор.

Включени са и видея с разяснителни семинари.

Курсът е достъпен в рамките на 90 дни. Регистрацията дава достъп до форум и възможност за задаване на въпроси, както и участие в различни семинари.

В курса е препоръчана следната книга:

2. Business Analysis for Practitioners: A Practice Guide

Книгата е доста добра. Информацията е обяснена от практическа гледна точка, систематизирано, без излишни подробности. Съдържа и речник на основните термини. Хубаво е да се прочете в началото на подготовката.

3. PMI-PBA Certification Study Guide.

Книгата е една от най-препоръчваните във форумите, свързани с PMI-PBA Certification процеса, но спорен мен не е достатъчна за придобиване на практически знания. По скоро може да бъде използвана като наръчник или план за вземане на изпита.

Съдържа информация за това, какви стъпки са необходими да бъдат предприети за успешното изкарване на сертификата – от попълването на формата за кандидатстване, през процеса на подготовка, до успешното преминаване на изпита.

Започва със съкратен преглед на съдържанието на изпита, последван от по-подробно описание на всяка една от 5-те области от знания, които ще бъдат тествани. Информацията е кратка, без подробности. Едно и също съдържание се повтаря в различна форма – текст, таблица, диаграма. Важната информация е маркирана, за бърз преглед в последствие и по-лесно запомняне. Има много препратки към PMBOK като източник на информацията.

Книгата съдържа различни упражнения за затвърждаване на знанията – въпросници, кръстословици, таблици със скрити думи. Всеки раздел завършва с примерен тест. В края на книгата има примерен тест от 100 въпроса.

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

4. PMI-PBA® 200-Question Sample Exam.

Тази книга също е една от най-препоръчваните за придобиване на представа какво представлява самият изпит. В сравнение с онлайн тестовете, включени е курса обаче, не е особено добра. Половината книга е тест от 200 въпроса, с другата половина – същият тест с отговори. Това, което не ми харесва е, че няма никакви обяснения на понятията, в сравнение с онлайн тестовете от курса, на пример. Има препратки за информация към външни източници – тези от списъка на PMI.

 

Modernizing Legacy Applications In PHP

Modernizing Legacy Applications In PHP

Тази книга описва необходимите стъпки за модернизирането на остаряло приложение. Дава добро описание на понятието “legacy”, както и защо трябва да бъде модернизирано. Самите стъпки са добре подбрани, макар че ми се искаше примерното приложение в книгата да придобие още по-завършен вид. В крайна сметка крайният резултат доста наподобява това, което представляват повечето модерни MVC frameworks, но в по-опростен вариант. Истинската полза от изброените стъпки е това, че се разбира защо е необходимо да се предприемат, обяснени са подробно, както и след всяка глава има въпроси и ситуации, които могат да възникнат. Това, което ми липсва, обаче са неща, които са споменати в книгата като възможно развитие, но изрично е посочено, че няма да бъдат описвани и са дадени препратки към други материали по темата. Това са неща като testing frameworks, data mapper / active record database patterns, domain driven design. Липсва ми и отделна глава относно конфигурация на приложението за различни среди (само се споменава), както и error handling. Има и неща, които са излишни и идват в малко повече (споменават се почти във всяка глава): как и какво точно да търсим в кода на целия проект когато се заменят разни структури; кога да направим commit и да известим QA отдела; кога да искаме помощ или какво да кажем на operations отдела за промени по конфигурацията на сървъра и др. Като най-полезни мога да определя четири от стъпките, които виждам доста често, че се пренебрегват при разработката на приложения или просто не са усвоени: 6. dependency injection, 7. tests, 16. dependency injection container.

Continue reading “Modernizing Legacy Applications In PHP”

Pro PHP Security

CoverКнигата се опитва да опише всички основни концепции, които е нужно да разбираме до поне някаква степен, за да се подсигурим, до колкото е възможно (тъй като се твърди, че абсолютната безопасност е близка до невъзможното), че личните данни ще останат лични, че ще избегнем излишно изразходване на ресурси и че не злоупотребяваме с хората/машините които ползват нашите услуги. Oбхващат се много важни и интересни теми като валидиране на потребителски данни, SQL инжекции, Cross-Site скриптинг, Remote execution, кражба на сесия и обезопасяване на мрежови връзки (SSL, SSH), които смятам, че са задължителни знания за всеки програмист, който работи с уеб приложения.

Continue reading “Pro PHP Security”

Modern PHP

catКнигата е по-скоро нещо като ревю на новостите в PHP. В началото разказва повече за новите характеристики на PHP >= 5 като (Namespaces, Traits, Generators, Closures). Минава през PSR стандартите, използването на компоненти и удобството да използваш Composer, добрите практики при създаването на PHP приложения, проследява целия процес по създаване на PHP приложение (Hosting, Provisioning, Tuning, Deployment, Testing, Profiling) и накрая завършва с може би най-интересната за мен част – HHVM и Hack и влиянието им върху PHP. Повечето от нещата в книгата са известни за хората, занимаващи се с програмиране, но се дава една базисна насока при създаването на нови приложения.

Continue reading “Modern PHP”