Jag vet inte hur det är med er, men för mig så känns det alltid lite extra kul när man får köpa in en tredjepartskomponent, nånting som något annat företag har lagt ned mycket tid och pengar i för att göra till just den bästa komponenten i just den nischen.
När man t.ex. sitter i ett projekt och inser att här behöver vi en rapportgenerator för kunden vill kunna bygga sina egna rapporter, eller här behöver vi en väl genomtestad uppladdningsrutin för kundens krav är att det ska fungera på 100% av alla browsers osv så börjar man fundera på tid för att bygga detta, har vi kunskapen för att bygga en rapportgenerator snabbt, det kanske går att bygga en uploader snabbt, men hur lång tid tar det att testa att den verkligen funkar i alla browsers på alla OS på alla typer av maskiner?
Det är i sådana lägen man börjar titta om någon annan redan gjort detta, och har dom det och dessutom packeterat det som en komponent till försäljning så blir det så mycket lättare att tidsbedömma den delen av projektet. Istället för att var ute i det blå så kan man sätta ett “fast” pris på uppgiften.
Det är en falsk säkerhet dock. För av erfarenhet så vet jag att det är många fler parametrar som avgör om det där komponent-köpet verkligen ska vara en vinst eller ej. Har företaget som säljer komponenten en bra support? Har de bra onlinehjälp? Har de ett väl fungerande forum för användarna av komponenten där de kan byta information med varandra? Satsar de på ett bra eco-system för sina komponenter med uppdateringar och patchar? Vilken typ av licens-avtal är det? Utvecklarlicens? Distributionslicens? Det kan vara avgörande om det är värt eller inte att arbeta med komponenten. Det mesta av ovanstående gäller även opensource komponenter. Som någon smart person sa om Linux ”Linux is free if your time is worthless”, tid är pengar och om du fastnar i ett fel utan att kunna få hjälp eller använder ett dött opensourceprojekt så är det inte så mycket till hjälp när deadline:n börjar närma sig.
Jag har suttit många timmar i mitt liv och sökt information om varför en viss komponent inte fungerar som det ska, plöjt igenom forum, plöjt igenom FAQ:ar osv, bara den här veckan har jag suttit säkert 3-4 timmar med ett konstigt problem med en inköpt komponent. Då kommer vi till nästa problem, mängden av information som finns och kvaliteten på den. Historiskt sett så har ju t.ex. MSDN varit ett skämt, (T.ex. man kan få reda på hur ett API-anrop fungerar, vilka parametrar den tar, men inte vilka värden parametrarna kan ha och vad de står för och ständigt fel information, dåligt med exempel osv), men där har de gjort en ordentlig uppryckning. Spana gärna in nya MSDN.
Tyvärr kan man inte kräva att alla utvecklare av komponenter ska ha samma resurser som Microsoft. Men en jag vill slå ett slag för är ComponentOne som för det första skeppar en superbra demoapplikation som visar alla komponener och de olika inställningarna (ihop med källkod) och dessutom har en myriad med exempel-projekt för varje komponent så man lätt kan komma igång, samt har ett bra forum och ecosystem för sina produkter. Det ihop med en applikation som automatiskt kollar om det finns nyare versioner av de produkter man har licens på gör livet lättare. Tyvärr är det en av dessa komponenter jag nu har problem med, men vi får se, det kan ju vara så att jag råkar vara den första som stöter på felet.
Vad gäller komponenters vara eller inte vara så ligger det ju i programmerarens natur att vilja bygga sakerna själva. Men man måste ibland inse att det kan vara billigare att t.ex. köpa in streckkodskomponenten istället för att bygga en egen. Men som sagt, tänk på att även färdiga komponenter kan dra mycket tid från projektet om du inte får stöd från tillverkaren eller ett bra community kopplat till produkten.