Friday, April 15, 2011

1. Blog your progress. Whatever you did today, blog it. Let people know what you did that worked, or what was faster (Nginx vs. Apache), or what wasn't (ColdFusion?). Don't reinvent the wheel, use WordPress [], regardless of whether you like PHP/MySQL or not.

2. Use a subscription/payment management company. You're just a small group of nerds, not accounts receivable clerks. Fastspring [], Plimus [] are free; Chargify [], Subsify [], Cheddar Getter [], BrainTree [], Spreedly [] charge; and Zuora [] is expensive.

3. Use Google Docs [] and Slideshare [] to share documents.

4. Chat. Don't just rely on email. Emails can often read like "this way or the highway". Be collaborative. You can often accomplish more with 15-30min collaboratively as opposed to composing and responding to long emails. Skype [], Jabber [], SIP []

5. Take notes on what you did. Made a server configuration or a setting change in your CMS, your compiler, or whatever? Copy and paste from xterm so you don't have to guess about those commandline switches next time. Take screenshots and make them available to others. Zim [], Projly [], DokuWiki [].

6. Have a phone numbers. If not bog-standard landline phones, take advantage of Google Voice [] and SkypeOut and SkypeIn (people can call your Skype line on a normal phone number). I realize Google Voice might not be available in South Africa yet.

7. Someone mentioned version control. Use git [] if you're a cool kid. Or svn [] if you're old and busted. Read the RedBean book []. I've had success in having non-tech colleagues using graphical clients like TortoiseSVN [] (integrates into Windows Explorer).

8. Write tests. Any member of your team, sitting anyplace, should be able to push a button and run all your tests. Tests document how you're supposed to use a given method, class, etc., especially valuable when you're so far flung. Use JUnit [], PHPUnit [], FooUnit for your language. Write the tests before you develop, and you're doing Test Driven Development [].

9. If you're writing tests, that implies loose coupling [], which might require dependency injection []. Can be difficult to climb that mountain, but it's worth it when you can just run a test and be sure your project works.

10. Development processes: Scrum [], Extreme Programming []. UML [] lets you communicate graphically about objects.

Sunday, April 10, 2011

PNL de tercera generacion