Archive for September 1st, 2009
[dev] Učimo li na tuđim pogreškama? Odnosno, na znanju?
Stara poslovica kaže “pametan uči na tuđim pogreškama a lud na svojima”, dugo vremena sam na to dodavao “… a ja kažem da ne možeš naučiti ako ne pogriješiš”, no nekako sam odustao u zadnje vrijeme. Moram priznati da se ova rasprava vraća iz dana u dan na naš stol – ili kada stvarno imamo neki problem ili kada jednostavno raspravljamo o tome kako bi slijedeći put trebali biti pametniji.
Biti pametniji u razvoju softvera nije jednostavna stvar. Izgradnja softvera je projekt, a projekt je po definiciji “jedinstveni napor” što pojednostavljeno znači da na svakom projektu ovog tipa iznova idete u slične, ali ipak različite napore ili probleme. Dakle, teško je uspostaviti predložak (template) za ovako nešto – možete biti uobičajeno opširni i nekonkretni koristeći pristup iz upravljanja projekta (dakle, inicijacija, planiranje, izvršenje…) ali dio koji je specifičan – uvijek je izvor novih i neočekivanih događanja.
Kako biti što detaljniji u predlošku? Kako napraviti takvo okruženje koje vam omogućuje čvrst okvir koji vam drži softver a da se pojednostavljeno bavite samo detaljima i specifičnostima?
Ne znam točno koliko smo uspjeli napredovati u tome. Gledam Microsoft: čak postoji grupa kojoj je zadatak na neki način promovirati što kvalitetniji razvoj: Developer and Platform Evangelism (znam dobro je sam joj bio manager par godina), koja priča o Software Developmentu, Application Lifecycle Managementu, Software Engingeeringu itd. Ali problem nije u priči – potencijalni problem je u implementaciji. Odnosno uporabi. Sva okruženja su inherentno kompleksna, postavljaju vam ograničenja i pravila. Potrebno ih je dobro proučiti i razumjeti – ponekad radimo duple stvari ili pogrešne stvari jer smo ograničeni resursima. Koriste li ovakve knjižnice programerima? Nucleus Research kaže da izrazito povećavaju produktivnost.
S druge strane, značajno su podržani alatima kao što su Visual Studio. Visual Studio je davnih dana prestao biti “editorski” alat na nivou malo boljeg Notepada – mada znam ljude koji ga i dalje koriste s istim pristupom.
Time programeri pokušavaju pomoći programerima – jedan od načina je i patterns&practices knjižnica koju održava Microsoft – okviri, predlošci, knjižnice pravila i uputa kako graditi softver za specifične namjene. Evo liste onoga što je izašlo samo u zadnjih godinu dana:
- Enterprise Library v4.1 is a collection of reusable software components that help developers with common development needs such as logging, validation, data access, and exception handling. They can be used “as is” or extended or modified by developers as needed.
- Unity Application Block v1.2 is a lightweight extensible dependency injection container with support for constructor, property, and method call injection. It addresses the issues faced by developers engaged in component-based software engineering.
- Composite Application Guidance for WPF (“PRISM”) v1.0 and v2.0 helps developers build and evolve modular Windows Presentation Foundation and Silverlight client applications. These applications typically include multiple screens and role-determined behavior and are designed to change over time based on business requirements.
- Application Architecture Guide v2.0 provides design-level guidance for the architecture and design of applications built on the .NET Framework. It focuses on the most common types of applications, partitioning application functionality into layers, components, and services, and walks through their key design characteristics.
- ESB v2.0 helps developers leverage the Microsoft BizTalk Server platform to build a custom enterprise service bus (ESB) for their SOA implementations.
- SharePoint Development Guidance helps customers accelerate the construction of advanced applications. This guidance helps architects and developers in the following areas: Use SharePoint capabilities to make more powerful applications; Build applications that are easier to scale, maintain and extend; Improve application quality through testing; Improve and accelerate team productivity;
- Acceptance Testing Guide v1.0 (Beta 2) provides guidance on 1. How to Plan for Acceptance Testing;2. What Kinds of Acceptance Tests to Run; 3. How to Create and Run Acceptance Tests; 4. Defining What “Done” Means; and 5.How to Justify Your Approach;
- p&p Agile Showcase on MSDN patterns & practices has been using agile development techniques for the past five years. Customers and community asked us to share our experiences and learning. This page lists resources that we’ve used to make our teams more successful
Znam da i druge tvrtke imaju isto (IBM, Sun…), Pitanje je: koliko snage stvarno (resursa) imamo za to sažvakati i koristiti. I naravno: koliko su te knjižnice dobre i same ne generiraju dodatne probleme. Naša prosječna tvrtka ima samo 3-4 čovjeka u razvoju (ponekad je to zapravo cijela tvrtka) i tek su počela značajnija okrupnjavanja. No još uvijek većina mora promijeniti model kako radi. Evidentno je također da su mlađe generacije spremnije koristiti ovako prilagođeno znanje – stariji obično ili ih ne koriste ili imaju razvijene “svoje” knjižnice od kojih ne odustaju…
Kao što sam napisao, s vremena na vrijeme lamentiram o tome… pogotovo na Microsoft Architect Forum sastancima. Evo sad će jedan krajem rujna…
RSS pretplata na članke