*sigh* one thing I didn't anticipate about this project is just how much fun designing it would be. From schema choices, to naming conventions, to frameworks, to ORM, to what methods to include in my base business object. It really is a freaking blast, and also very daunting. The amount of research I am doing, is something I expected but really didn't know how to approach. I first assumed that the best way of doing things would be the way I was used to doing things. However, after taking a look around to what is out there while making sure I knew what I was doing, I realized that there are so many more options and much better ways to achieve the goals I have for this application.
I'm dizzy with power right now, I really am. Active record set? DDD? NHibernate? Guids? Ints? Camel Case? SVN? Git? I'm gonna throw up.
By the end of this week I hope to have most of those worked out. I'm sure most of you have been here already, this is my very first time. I mean, it's not like I haven't done my own projects before, but never to this scale and this awesome of a project. Does anyone have any wisdom to pass on?
Things to avoid?
Things to make sure to take account of?
Any help greatly appreciated.
try to use as little of these 3rd party libs as possible.
ReplyDeletesure, some are handy, but a lot you find yourself using only for a very small and basic function which unfortunately comes with a whole lot of other bloat you will never use.
If you do chose to use a framework, I suggest codeigniter, as it will let you do what you want without really getting in the way. I am in a team that is currently using it and it has helped us out a lot, and even if you only use it for the MVC aspect of it, there is no significant bloat because it will only load what you tell it to load, when you tell it to load.
ReplyDelete(At least something simmilar to Codeigniter in that manner)
ReplyDeleteI'd choose three heuristics to use in this type of decision-making.
ReplyDelete1.) Simple
2.) Testable
3.) Documented
SVN is my version control system of choice. I haven't jumped onto the GIT bandwagon yet, because the perceived benefits are things I'm just not that concerned about. Plus there are some good SVN plugins for Visual Studio (Ankh, VisualSVN). We use Team Foundation Server at work, which is ok, but unless you're using Team System there isn't a lot of benefit to TFS, especially considering the cost.
ReplyDeleteI've been reading about ORM mappers for a while now, because we're using the Microsoft Entity Framework and LINQ to SQL for our project at work and I'm not sure it was the right choice. The features of NHibernate have always appealed to me, but I haven't gotten to use it on a project yet.
I do like Guids as database keys, but there are some performance issues to be aware of, I believe, though I can't recall exactly what they are. Might want to do more research there.
Above all, put your opening curly brace on the same line, and make KR proud :-)
Curly brace on the same line? Bah! Poppycock.
ReplyDeleteAnyway, I am actually a fan of no curly braces when ther e is a single line if statement. THOUGH, the argument tends to be to put them in that way it makes it easier to add lines down the road.
As an aside, I'm having trouble finding a good VS keyboard shortcut cheat sheet. The ones I'm finding have a lot of superflous ones, like the ones that are common to VS and word... the text editing ones... the ones I already know.
The specific shortcut I'm looking for is one I know exists but can't find through google (I know I can looking in my VS settings, but everytime I do I have an internal war about well, now you're wasting time to save time. ANYWAY, the one I'm looking for is the one that dynamically adds the your using statements when it doens't find the namespace for the method you are using in the ones you are already referencing.
Make sure your code is clearly commented ;-)
ReplyDeleteI am not a fool to tell you.
ReplyDeletehahah, nice, new guy. Three words Self Documenting Code
ReplyDeleteAntony, I never dreamt you would be?
Sara, do you use ReSharper? If not, I highly recommend it. It turns Visual Studio into an entirely different tool, one you can't live without. It will take care of your namespaces, but that's like a side note compared to the rest of its features...
ReplyDeletewww.jetbrains.com/.../resharper
Enjoy.
I LOVE resharper, I haven't used it in a while. How do you feel about the accusation that it hurts your local performance?
ReplyDeleteI've never noticed a problem with performance. But if I did see an issue, then that's a perfect excuse to go shopping for new computer hardware! 4GB RAM, T9500, 72kRPM, issue solved. :-)
ReplyDeleteYou could also consider trimming the rest of VS down though. Get rid of the stuff you don't need (Team System). I pair mine down to just above Express Edition level... a code window with ReSharper.
BTW: On the point of frameworks... stay FAR away from the Entity Framework. Advise your clients against it. Quit from the ones who don't listen. The entity framework is NOT an ORM. It's a far greater architectural commitment, and one that I'm not sure is necessary, let alone good.
Instead, consider POCOs and NHibernate or just straight ADO.NET. LINQ to SQL is okay for simple stuff, and shows some future promise.
I have gone with NHibernate. Expect a big Dev Diary coming soon with pictures from my web wall. I'm going to start doing my reflections on here because it's hard to relax/reflect when it's just you.
ReplyDeleteMe:Wow, I think you did really well this iteration, Sara
Me:Why thank you, Sara, I agree
I am downloading SVN and Resharper right now :).
Where are you hosting your Subversion repository? I've used:
ReplyDelete* http://wush.net ... although they're a small shop and have had issues in the past.
* http://cvsdude.com ... the biggest in the business. A little pricey and the web admin is slow. But it works well otherwise and is what I use now for client work.
* http://svnrepository.com ... a friend of mine uses them, prices look good. (supports Git too)
* http://slicehost.com ... this is what I use for my non-client stuff (personal/hobby stuff). It's full VPS useful for other things as well. If you're comfortable setting up a subversion repos and doing a little linux/apache admin and/or need a server for something other than SVN anyway, it's a good way to consolidate costs.
Best of luck.
actually, its camel toe.
ReplyDeleteDefinitely go with ReSharper, it's a must with .Net development.
ReplyDelete1) As for ORM vs Active Record vs Home Brew, it just depends on whether you want to learn an ORM (nHibernate?), learn Active Record, or roll your own. And then it depends on if you want to maintain config files, maintain active record or maintain your own sql. Though I have heard there's a really good nHibernate user group out there.
2) Ubiquitous Language. Think long and hard about what you name your classes, because it will go a long way towards the conversations you'll have with your users/clients.
3) Test. xUnit, nUnit, mbUnit (and a decent mocking framework if you're into it). It doesn't matter, just make sure you do it.
4) I'm a fan of DDD, just cause it's what I'm working with now, and it seems to work well with #2.
5) Source Control: Go with what works for you. If you know svn, use svn. If there's a small number of people on the project, it's really not going to matter much. What matters more is if you can use it and that you use it.
6) CI. Set up a build server and make sure you've got daily builds. Make sure your build script performs your tests.
7) Use Composition, not inheritance. I read something about a base class, so I thought I'd toss this in. I know that nHibernate uses a base class, but that's out of necessity.
8) Since composition came up, you might also want to look into Windsor, StructureMap, Unity or even rolling your own IOC for DI.
Some of the decisions really depend on how much time you'll spend learning a new technology (if you haven't used it before) vs the tradeoff of time it will save you. Is it really worth learning git if svn will do just as well and you know how to use it? I doubt it.
I think that the type and scope of the project might weigh in on some of the decisions as well.
I would love to go on, but I really can't right now :D
I use ReSharper religiously. It's amazing. It will give you performance issues if you have huge bloated projects though (*cough* like the mess I have to work with every day at my office job *cough*), but for normal, well constructed projects, it's a gem.
ReplyDeleteJetBrains (who makes ReSharper) also has a free CI product called TeamCity. I've played around with it a tiny bit, but it looks badass as a CI product, and even integrates with SVN and Team Foundation Server. Might want to check it out. It also supports nUnit test enforcement as a precondition to repository checkin :-)
Hi smart girl :)
ReplyDeleteI didn't read the article, but just 'developer' and then I looked at the picture. Wanna go out with me? :D Where do you life?
Nils
@MrNightLifeLover have you ever given consideration to the idea that cretins like you *acting* like you are the reason why female developers are so scarce?
ReplyDeleteMy two cents.
Lets see a picture of MrNightLifeLover!
ReplyDeleteI know Saras single, so....let see you
Sara how about a blog on available developers
....Interested in dating you?
Just a thought! :)~
Janey, welcome. Nice to make your aquaintance. I like your site, it's very good looking.
ReplyDeleteErika - lol, that will earn me a lot of credibility in the development world I'm sure.
Since information is sparse, this is going to be genetric,
ReplyDelete- If something is tedious, there is probably a better way.
- No matter how much (ego) you have invested into something, everything should be subjected to change given good arguments. (although women do seem to suffer much less from this then males though.)
- Keep your focus
- Keep your project on a diet. What is candy is to a kid, are frameworks and utilities to us.
..and Hudson is always a nice addition hudson.gotdns.com/.../Meet+Hudson http://redsolo.blogspot.com/2008/04/guide-to-building-net-projects-using.html
@Jane: He actually seems like a perfectly nice guy. And he did post a link to his blog, including a picture.
ReplyDeleteemerging-patterns.com/.../about
I don't think he said or did anything wrong. Look at this site. It doesn't exactly scream stiff and professional. It's fun and flirty. Look at he marriage proposal joke on the right, the club-fluorescent stiletto heel in the top corner. How about the camel toe comment that made it through moderation? Sara's picture isn't exactly business attire or a photo of a professional either --it's a facebook shot. Come on...
Most importantly, Sara let it through moderation. She could have denied it or deleted it (and maybe contact him offline anyway).
If professional is what is desired here, there's a different theme and tone that could be used. Currently it is not -- nothing wrong with that, just saying.
Gotta agree w/the InDefenseOfNils
ReplyDeleteSara needs more men asking her out on this site:)~