Saturday, May 14, 2005

Building a Dream

Over the last year and a half I've been trying to get my dream of starting a software company from "a dream" to reality. I have been developing a Project Management web application at night and on the weekends. I still have a long way to go before my app is "shippable", but I want to start talking about the decisions I've had to make and some of my experiences while developing it. Hopefully a few of you will find these ramblings informative, entertaining, or relatable. If I'm lucky at some point these ramblings might even be able to generate some all-important "buzz" around my upcoming product. :)

This first post is about my choice in programming languages.

The plan for selling my PM app is to "sell the application". Not host it and charge monthly fees for it. I think I can produce a fantastic product, but producing an outstanding software product and being an awesome hosting company might be too much for a 1 (currently) man company. Since I want to sell the app I think it's important to build it in a language that runs on multiple platforms.

The cross-platform languages I was familiar with when I decided to create this product were: Coldfusion (CF), PHP and Java. I was a capable Coldfusion programmer. I built a couple of "database-driven" PHP web sites (both of which have thankfully vanished from the Internet). And my Java "experience" was nothing more than a few tutorials.

At the time, it would have been easiest for me to build it in Coldfusion. But the Coldfusion license would add at least $1300 to the price of the app. Even if I just sell the PM application and then tell people to BYOAS (Buy your own app server) I'll obviously be forced to take into account the total cost of ownership. A higher price could stop me from being competitive and if I built the cost of the CF app server into my price it would hurt my profit margin.

So that left the free alternatives, PHP and Java.

I had a lot more experience with PHP than I did with Java. But, what I remember of PHP programming was very frightening. I don't know if it was my lack of experience as a programmer or my lack of competence in PHP, but having worked with the wonderfully simplistic and powerful CF language I just couldn't see myself going back to the world of PHP. I also didn't view PHP as a language bigger companies would take seriously. I didn't want the perception to be that some lackey threw together a crappy PM app in a week and is now trying to sell it. Regardless of how completely off-base that perception of the technology and the people working with it is, that is the way I felt about PHP at the time.

I'm sure you can take a guess as to which language I decided on.

Before I really knew anything about Java and JSP development, my mind was made up. I was going to build it in Java. I had real reasons for not choosing CF and PHP, but you could definitely make the argument that I choose Java based on my perception of it being "cool" and "sophisticated". There are several advantages to going with Java. Most of which I wasn't completely aware of at the time I made the decision.


  • More frameworks than you can throw a stick at. Even a big stick - or several sticks bundled together to form one gigantic stick.
  • More tools than you can throw a stick at. Yes, even that freakish, bundled together, gigantic stick previously mentioned.
  • Java is a real object-oriented language. Which, in my opinion makes layering the application, and utilizing the MVC pattern much easier. With all of the knowledge transfer that is going on with the "pattern" movement (Martin Fowler, GOF, etc..) the OO world is a great one to be playing in right now.

I had to get up to speed with the in's and out's of Java quickly. I didn't realize just how difficult that was going to be. Some of the books that helped me come to grips with the technology are listed below.

I made mention of Java and frameworks. At first I thought I was going to be using Struts. Struts has been the reigning champ of JSP/Java development for as long as I can remember. I started reading Jakarta Struts Live and soon realized I really didn't like Struts! It just seems really complex and confusing. Maybe after you've built an app or two with it you get to know it like the back of your hand, but I ran away from that puppy like it was mad.

But I was not sad, for JSF had just come out! I figured THAT would be the framework I use to build my app in. It's an official J2EE spec, all the big vendors are building support into their tools for it, and it was created (at least partially) by the guy who created Struts. Instead of re-writing the reasons I ran from JSF I'll just link to my original post regarding JSF. (I still think it holds great promise, but I just don't want to use it yet.)

Somewhere along the way my manager/friend sent me a link to something called "Spring". I wasn't exactly sure what it was when I first started reading about it, but I knew the phrase, "Inversion of Control" sounded cool.

In all honesty, the fact that Spring touted itself as a "light-weight" solution is really what peeked my interest. You can think of Spring as the API that helps you do everything from using JDBC in a non-painful manner, to having AOP support, to providing you with an MVC framework, and much more. (That may not sound "light-weight", but compared to what I've read about old-school J2EE development - it's damn light.) Go to their web site or read their book, J2EE Development without EJB, to get the full story. I've been working with Spring for the past 8 or 9 months and I dare say, it rocks the house.

Well, that's the story of my current technology choosing. Maybe for my next post I'll talk about how I am layering my application and working with an object-oriented technology or how I came up with the name "ataraxis software".

Thanks!

-michael.

4 Comments:

Blogger Nathan said...

I only got as far in Java as to make a crude "soda machine" simulation in CS101. I wouldn't have the first clue how to even begin to code something like what you are undertaking. Good Luck.

Saturday, May 14, 2005 11:10:00 PM  
Blogger Michael Sica said...

Thanks Nathan.

But I'm sure if you read the 7 books I mentioned above, you could build a very robust "soda machine". :)

Sunday, May 15, 2005 12:16:00 AM  
Anonymous John Topley said...

Hey, that's great Michael - I look forward to reading more about your adventure. Good luck!

Sunday, May 15, 2005 2:33:00 PM  
Blogger Michael Sica said...

Thanks John!

Wednesday, May 18, 2005 10:10:00 AM  

<< Home