building complex sites with joomla
DESCRIPTION
How to survive complex web projects, tips and tricks for joomla sitesTRANSCRIPT
building complex sites with Joomla*
j and beyond 2010paul delbar, delius
* and how not to get hurt doing it
objectives
share experiences about handling complexityhow to do this with joomlawarning !
most of this presentation is not joomla-specific
what do we mean by a complex site ?
projects that tend to be complex
migrations from other CMSssites with complex content structures
strongly typed or interrelated contentonline applications or platforms
sites with an extensive functional elementintegrations with other (non-site) systemsanything with vague requirements
insufficiently clear and/or under constricted timelinesbuilding things you have never built before
customer issues that make it complex
lack of skillslow process maturityunrealistic expectationsvery complex requirementspoor communication and coordinationbudget issuestimeline issueslack of a strategic perspective
example : simplantacademy.org
original projectsomeone’s first Joomla sitelate and over budget(really) badly coded
‘can you fix this ?’customer had
bad experiencelittle technical knowledgean unclear process
example : avrr.belgium.iom.int
25th anniversary of REABacademic session, press, …discussed in Marchstarted September
customerhad 5 weeks until the eventhad no content availableruns web projects like any
enterprise IT project
joint project with
in general, areas of complexity are related to
the technical architecture chosenhow visitors wil experience the sitevisual design and user experiencecontent and data to publish on the sitefeatures and functional elementsother software solutions to integrateoperational parameters (speed, size, …)the process driving changes to the site
architecture
navigation
visuals
content
functionality
integration
operations
process
how to handle complexity
1. take the red pill
2. get to know your customer
invest in effective communication
to understand your customer, you shouldlisten, listen, listenobserve and learn about their way of doing business
create a relationshipbased on mutual respectenabling open and factual discussionsfocused on your customer’s success
ways to mess this up
start the relationship by talking about yourselfmake sure you demo at least three large sitesmake technology the centerpiece of your offeravoid discussions about budgets and timelineignore what happens after the site is livedo not challenge the customer’s requirementsassume content will be available on time
the sales phase : foundation for success or …
establish the correct sequence of eventsdocument and communicate your sales strategy
my favorite quote structurebackground environment variablesproblem definition what the customer needssolution principle how you will fix itstatement of work what you will do to get thereestimate summary what efforts it will takefinancial offer what it will costgeneral conditions how you will do business
3. structure the project
avoid heroic project targets
avoid big bang projectsuse prototypes, pilots, phased rolloutsdon’t be afraid to split the budget over phasesbe clear on go/nogo milestones
cleanup jobs : fix one issue at a timechances are you’ll discover more problems as you godon’t kill the patient in surgery
do not let budget and time constraints rush youwalk away from the deal if you need to
help the customer understand how you work
define each project phase analysisdesignimplementationrolloutmaintenance
by an explicit definition ofphase objectives and end conditionsdeliverables
example of a methodology summary
this approach agrees very well with Joomla
example of a quote
4. take your time to analyze and design
the purpose of analysis
to understand what the customer wants
develop a common terminologynot: teach them about components and modulesbreak this into content, function, visual, navigation, …
explain the process you propose to followmake progress visible : document what you learn
use sketches, flipcharts, documents, …share results and actively request feedback
the purpose of design
to describe what you will build
must be some form of documentationshould cover all elements of the stacktry not to loose the customer in translation
ensure they feel comfortable sharing that you lost them
analysis and design : navigation
discuss the intended target audiencetranslate this into a mindmapevolve into menu items for each tpe of visitor
analysis and design : navigation
complete the navigation design (Excel sheet)
build a ‘menu mockup’will serve as an initial version once you start building
analysis and design : visual
wireframes work well with Joomlavery clear separation into components and modulesour favorite: WireframeSketcher (Eclipse plugin)
prepare work sessions with customersfirst, establish sample menu/component layoutsprint empty pages and sketch or cut/paste modules
analysis and design : visual
analysis and design : content
discuss and document a conceptual content model
and here’s where Joomla doesn’t really shine ...
5. content: a matter of semantics
example: 11.be
consortium of non-profits working in the south
original sitemambo 4.5.3heavily hacked core
objectiveupgrade to 1.5migrate contentadd functionality
example: 11.be
initial analysis: 3 weeks reviewing current site : what is being displayedreview database structure : how is it stored
conclusioneverything is an article, a category or a sectioncountries are categoriesarticles (real) are articles (j)articles can describe multiple countries
com_content was hacked to link articles to multiple categories
… and everything becomes an article !
translating the semantic content structure
approach #1 : flatten into com_contentapproach #2: build your own componentapproach #3 : use a CCK extensionapproach #4: use one|content
6. migrating: build the right tools
example: broederlijkdelen.be
belgian nonprofitoriginal site
old-style CMSprovider bankrupted
here’s the data dumpwe’ll get another one
just before go-livecan you start building ?now ?
tools make your life so much easier
migration toolsscript the entire conversionimprove as you discover errors
allows you to keep the live site runningand update content just before go-live
7. start small but plan to grow tall
example : biketowork.be
example : biketowork.be
J1.5 integrated with SugarCRM (one|content)uses standard SugarCRM SOAP-interface for updateslots of personalized, real-time content (no caching)
originally (NOV08) targeted at 500-1000 userscurrently 7000+ users and climbing fast2000 visits/day in a short time window
how you can achieve scalability
decouple components and (sub)systemsmakes it easier to replace/rescale a single elementhelps to encapsulate low-level caching strategies
refactor often (evolution)monitor performance, fix the bottleneck, repeat
be ready for a step change (revolution)sometimes, it just gets too bigbe prepared to question the initial architecturein this case, dump SugarCRM
good luck !
questions can be submitted at your own risk
and on a lighter note …
http://www.youtube.com/watch?v=XgoKh-QbOMQ