Archive for the 'Uncategorized' Category
Wednesday, July 28th, 2010
- look at other similar projects, how long those took, what problems you ran into on those
- hourly estimates, number of days
- write out a narrative of the expected timeline
- add a lot of padding to initial estimates
- your estimate builds your client’s expectations; don’t inflate them artificially
- if you’re really honest, some clients might come back and say no; have to accept that possibility
- if you do a high-end hourly estimate, you might come in under budget and the client might get a better deal
- keep your old proposals for similar kinds of projects; you can reuse them
- trickier with R&D work where there’s no clear answer of what it’ll take to do solve a problem before you get deep into it
- migration is a very tricky process, difficult to accurately estimate, though you can still use past experience to anticipate how long it will take
- get it in the client’s mind that estimates will have to be revisited after looking at the data
- Use formulas like if x is the amount of time you estimate, add 1/3 or 20% project management + 10% quality assurance or some other padding margin
- train clients to take responsibility for these things
- wireframe or explain exactly how you’re going to tackle a problem up front for the client
- you can give warranties on Drupal sites, though it’s not mandatory; a warranty can say “I’ll fix whatever is wrong for the three week period of this warranty”
- don’t underbid to make the sale unless you want to get burned
- your rate needs to cover your unbillable business costs
- specifically say that requesting additional estimates for additional work is paid work
- some people charge for change orders on contracts
- maintenance contracts - some people offer annual packages for basic maintenance and changes, some monthly packages, but certain requests constitute entirely new projects
- you can create those contracts with clauses that deal with if other people get involved in the projects in the interim so you aren’t expected to fix other people’s problems
- maintenance agreements = an important source of recurring revenue
- include requirements around hosting in your contracts, charge more for annoying/atypical/unfamiliar hosting situations
Posted in Uncategorized | No Comments »
Saturday, July 24th, 2010
Presented by Alex Urevick-Ackelsberg, Zivtech (12-person Drupal shop based in Philly)
Starting Out
- look to other existing shops to get insights into the business of selling Drupal
- Define the type of Drupal/web shop you are. Are you just a Drupal firm? Do you provide other services/products? What are you selling?
- Good to write up a mission statement, followed by a business plan - take the time to look at the market, the other players in the market, assess the cost and payout of the business
- Small Business Association - many resources that you can tap into when starting out, even just as a freelancer
- Cash flow is a tricky thing to handle; need to know how much money you need to get started. Do you need investors? Loans? Are you going to bootstrap it?
- Money comes in through accounts receivable; goes out through payroll, accounts payable, and taxes. Need to have it coming in faster than it’s going out.
Partners
- Who are you looking to partner with? Why? Do you want to stop doing certain parts of the work? Does your shop need skills that you don’t have?
- Define roles for each partner
- Split tasks and responsibilities up
- Keep partners accountable
- Seth - the perfect partner is someone who you don’t agree with all the time, to be challenged
Management
- Remote vs office
- Being in the same room can help facilitate quick communication
- Managing teams of developers
- can be like herding cats
- if your shop sells hours
- who ends up being a project manager? is that a separate role or can other people take on that role in addition to development?
- Sometimes developers don’t have good project management skills; sometimes it’s based on scale and you just get to a size where it won’t work
- Fixed bids vs retainers/hourly
- “If you want a good way to bankrupt your company, do a fixed bid.”
- Zivtech either sells buckets of time (e.g. 100 hours to be used within a certain amount of time) or estimated costs (here’s the top of what we think it’s gonna cost, if it gets to where we think it’s going to be 10% over that we come back and check in)
- push back from others in the audience (Liza, Seth) about fixed bids working if projects are managed well, clients not being willing to go for non-fixed bids
- Zivtech bills based on who’s working on the project; different levels of skill
- Liza - can be important to have a client manager (not necessarily the same as the project manager)
- someone else in the room - gives clients deadlines for giving feedback
- Zivtech uses unfuddle for ticketing, time tracking, etc - has git and svn repositories
- suggestion: multiply the number of hours you think a task will take by three and you’re more likely to be on target!
- Juggling more and longer term engagements
- Tricky to figure out how to juggle how many projects you’re taking on at once
- A key thing is to overbook yourself
- Balancing contribution and business development with client work
- balance the non-billable hours well
- make sure you’re charging enough to withstand the time that folks are doing non-billable work
- Drupal is something of a publish or perish business; you’ve got to put yourself out there, contribute to the community
- Outsourcing
- a more flexible way to pay people for work than payroll; accounts payable is “pay when you can” whereas payroll happens every two weeks no matter what
Sales and Marketing
- Sales cycles
- understand how long clients will take to make decisions, sign contracts, send initial deposit and later payments
- understand how clients’ fiscal years work and how that will affect the work you’re getting
- RFP, estimates, and proposals - understand how your internal cycle works
- MeetUps, Camps, Local community sites and conferences - good sources for new clients
- Contribute!!! in open source! Publish or Perish!
- Develop or claim modules in desired verticals (e.g. mapping, media, mobile, etc) - focus your contributions in the area you’re trying to work with
Basic Roadblocks to Growth
- Cash flow is king!
- you can demand a certain amount up front from many clients, though some clients will tell you how they’re going to pay; they generally ask for 40-50% up front
- Taxes
- Accounts Receivable/Collections
- gently but consistently remind clients to pay you
- make sure you get into your clients payment system ASAP - contact billing right away
- do regular billing, biweekly or monthly
- try to avoid being a hard-ass to collect; you’re building relationships, so you want to communicate the need to pay as gently as possible
- Talent
- can be a huge impediment to Drupal shops
- you need to aggressively train smart people, not just expect to find all the highly-developed talent you need
Get Help!
- SCORE (Service Corp of Retired Executives), SBA, Business Schools
- some business schools have programs where they place interns with you for a period of time to assist you in the startup stage
- Collaborate with other shops
- Consultants email list
Questions
- is client acquisition a “hard marketing” expense? As in, something that can be written off?
Posted in Uncategorized | No Comments »
Tuesday, March 16th, 2010
- NYC has the first group page on CiviCRM.org. It’s a pilot, so comments and suggestions are very welcome to make it more useful.
- Case Study: Fred from the Man Up Campaign
- Joomla website
- Use CiviCRM profiles for contact pages to collect information from site visitors, track their inquiries
- Also successfully used Profiles to collect fairly complex applications for a large campaign
- Added tons of custom fields to collect info via profiles, but use standard fields for email addresses, phone numbers, etc so basic info is easily accessible through search results fields and other views of contact summaries
- Custom fields can then be added to different profiles in different arrangements for public display and use; can also be used internally for data entry
- Also set up simple donation interface for the site through Civi - using PayPal, probably going to switch to Authorize.net
- Other folks using PayPal Pro (user does everything right on the site for about $37/mo, better experiences reported than with standard PayPal), Authorize.net (good experiences reported, the more payments you receive the more you can negotiate your per-payment rate down), Intuit and Google Checkout (painful experiences reported for both)
- Peter on CiviMail
- gotta keep your email lists and your emails themselves clean to avoid being blacklisted as spam
- big risk to send mail via shared hosting because you don’t know who else is sending crap email/spam from your shared host; better off going with VPS and setting up your own mail server
- Peter went with Google Apps & Gmail to send through CiviMail
- Other hosted options: May First/People Link has a dedicated bulk mail server that members can use to send via CiviMail; CiviSMPT is out there too
- CiviMail includes tracking via click-thru processes to allow reporting on who clicked what when
- CiviMail also tracks opens via a 1px image included in the email; not guaranteed since images aren’t always opened by email clients, but can give you some indication of how many folks are opening an email. Good for comparing who opened Email X vs Email Y (percentages, not accurate numbers)
- CiviMail includes handlers for forwarding replies, auto-responders, unsubscribes and resubscribes, opt-outs. CiviMail uses tokens in the emails so that it can tell which user is clicking and unsubscribe that particular user; unsubscribes users from the group you sent the mailing to. Users who click on the unsubscribe link don’t need to log into anywhere because of the token.
- Unsubscribed users will be removed from the group, but there will still be an indication that they used to belong to that group so you can tell that they unsubscribed themselves.
- Set up a cron job to run the script that looks for outgoing mail in CiviCRM and sends it; configure it to go every x minutes and send y number of emails per process. You need to know what your server’s hourly/daily/size limits.
- reply channels through VERP address - CiviCRM can go through a separate mailbox, pull out replies through the VERP token, track who replied, opted out, etc
- Another cron job is set up for a script checks whatever inbox you set up as the reply channel and processes the emails according to the VERP tokens in the reply-to addresses
- Whether VERP works depends on your mail host/mail system; Google supports VERP, should check whether your host does too.
- you can use a separate email account for the reply channel; you could also have this go to a bogus email account - CiviMail can process all the things on your own mail server that weren’t addressed to a real account (only possible if you’re running your own mail server)
- VERP will actually process the messages in your selected VERP inboxes.
- There’s an experimental script on the wiki that will map response emails to activities for the responding CiviCRM contact
- This stuff is set up through different CiviMail scripts triggered by cron jobs - these are located in the civicrm/bin folder
- Can create mail content on screen (editing HTML directly or using WYSIWYG, though that can wreck the email HTML) or import it from elsewhere; save templates for emails; you can create both HTML and plain text
- You can insert tokens from contacts’ info, tokens for opt outs
- CiviMail will block emails that don’t include opt-out mechanisms somewhere in the email (header, body, footer)
- CANSPAM regulations require opt out AND full snail mail addresses to be included on emails that are soliciting money! (did not know that!)
- Some folks suggest putting the opt-out link right at the top of the email (e.g. in the header) so users opt out instead of clicking “This is spam.”
- CiviMail lets you send test emails to certain groups, schedule mailings or send immediately.
- You can create CiviCRM profiles that allow mail recipients/site visitors to subscribe/unsubscribe themselves from public groups (and create CiviCRM contacts if they’re not already in there); adding the checksum value (token provided when creating the email) pulls that contact’s information into the profile fields, letting them edit their existing information
- You can look back at scheduled and sent emails, archive them, reuse old emails as templates, view reports
Posted in CRMs, CiviCRM, Drupal, Uncategorized, databases, networking | 2 Comments »
Sunday, April 26th, 2009
I attended NTEN’s Nonprofit Technology Conference in San Francisco and was one of the NTEN live bloggers. I covered a bunch of sessions with notes and commentary. Click on the CoveritLive widget below to check out the transcript, which also includes some comments and questions from folks who were reading along live.
Posted in Uncategorized | No Comments »