Okay, so I work as a freelance web programmer (PHP, Javascript, HTML, Actionscript (Flash) and a dabbling bit of Java), which worked fine for me so far - now I have a contract with one of my most valued customers coming up. His main programmer got a baby, so he wants to only come in three days the week and I am supposed to fill out the other two days (boss likes to have someone around because of the whole "I need to see someone typing so I know there is programming being done" thing).
Problem is: I've worked with this guy before and our coding styles are like ... I don't know, two very different things that don't go well together AT ALL. But I am charged with coming up with a solution for this. So here what I have thought about so far:
- Stringent documentation of all Classes and Scripts (so far he documents rarely or never, and when he documents his code it is often the most useless comments ever)
- Stringent programming (have a standard for variable names, have clear names for methods
- Have a Subversion Server, so that any code changes will be documented, we both can work on classes without getting in each others way
- Have a global Todo List, so that we both know what has been done and what still has to be done.
So, for Documentation I thought about the JavaDoc Standard, as it is easily usable in both PHP and Actionscript. But how do I get him to actually comment his stuff without having to threaten his life?
Plus - while "coding standards" sounds like a good idea, has anyone a kind of "what works and what doesn't work"? All I've found so far are coding standards for C++, which can only be transfered to web languages so far before breaking...
Posts
If you want a structured way of making a to-do/bug list, you could look into using a free ticketing system like trac. Trac integrates with SVN to give you nice diffs between versions (like wikipedia) and you can use special keywords in your code to tell it a ticket is done. It also gives the boss a way of measuring progress, since he can see which tickets get finished. For a two man team it might be more trouble than it's worth though. Assembla does free Trac/SVN hosting, and even includes a wiki which can serve as a low tech to do list alternative to trac.
You might want to get him acquainted with the awesomeness that is Eclipse. Eclipse can handle a lot of the stuff you are dealing with when you install the right extensions. It can do pretty reformatting of HTML, Java and some other languages. Once you get him hooked on how JavaDoc integrates with it, letting you pull up the documentation as you are typing code, he might be more prone to use it himself. Eclipse also integrates with SVN through Subclipse, and with ticketing systems like Trac through Mylyn.
This. Eclipse + Subclipse combo is the best way to go for team development. I love Eclipse so much that I use it for everything ranging from writing papers to web browsing(has internal browser). Eclipse also facilitates good programming habits by auto-generating comments, creating classes that inherit methods from superclasses automatically and other neat features(creating method stubs, listing available methods for each class, compiling on-the-fly, etc...) Learning to use Eclipse will make you a better programmer.