We are red blooded developers here, and we seek out good code where ever we can find it. As the world of open source evolves, and new versions of php are released, things are getting better and better on the open source front.
As a developer, my take on open source installs of e-commerce applications is as follows. E-commerce applications should be scalable and you should be able to grow with them. You should also have the team you need to make any future changes lined up. If you are serious about your companies growth, you should do a lot of research in advance. That being said, you can expect to need to replace the majority of – if not all code (and graphics) within 2 years.
Your web site will have a shelf life of 2 years! Don’t worry, thats like 15.75 years (in terms of ‘dog’s years’) in our industry. Hey, not bad. You are stretching your dollar when you look at it that way. Now you need to hire someone to get your store online, and start making money. What should you look for?
1. Never hire a company who sub-contracts to someone else because they cannot do the job This is pretty much bad for everyone. As a subcontractor, I was not really that interested on a long term relationship. Why should I be? Hey, I have to give away 1/3 of each dollar to ‘the man’. Hell no! I prefer relationships that have no middle man to try to blow a whistle when they don’t know when its appropriate. Plus, if that goes too long in that direction, everyone loses.
As a business owner, don’t be that guy. If you do, you will find yourself using technology that no one will step into cheaply. Either you hire someone whose focus is on something else, so they do a ‘cheaper’ job but it takes them around 1-3 years to tool up on it, or – you hire a team of people to step in and take the ropes. At that point, you’ve got 3 or 4 people do a job so it happens faster but you now have to pay more.
Not that subcontracting is bad in every case. But if you are doing all the work, and they make a cut for nothing, they better be taking all the legal responsibility. Its better for everyone involved in that specific type of situation to give the original guys a finders fee and handle all the contract paperwork yourself. Of course, if you ever hear the words, “we don’t need a contract, do we?” uttered by the actual client, run. You don’t want to connect with someone who won’t operate from integrity, and its my experience and opinion that those are the only type of people who don’t want contracts.
As the owner of a software company, I never work without a contract that specifies code ownership. Subcontracting can be great in many occasions – but code ownership is a HUGE part of our mindset when we approach any project.
Here’s the best option – scout until you find someone you like, and actually honor their intelligence and respect them enough to enter a contract with them. Cement the relationship by putting things in writing. If you happen to find a person of worth who is coming to you as a subcontractor from another company, do the right thing. Show the talent that they matter by arranging to pay them for their time.
2. Avoid tight coupling unless you intend to stay with this technology for a long, long time. Technologies evolve. My approach to coupling data with other systems is to keep it lean.
If you are thinking about changing an e-commerce platform but you’ve already coupled quite well with another POS, reconsider the fields and data that you bind there. You may want to consider only the basics – order info and customer number.
3. Be ready for updates to php Technologies evolve, part two! I am already looking at code I wrote 3 months ago, and thinking that its outdated. Not to mention code I wrote in 2007.
Coding to the standards in the framework you are changing is always a good practice. However, if I am writing a new module for Zen Cart I am going to have to take a step back and return to an older, and I would even say, outdated way of approaching this code.
If you want to compare, download and take a look at prestashop. I started reviewing the code structure last evening. I had dreams about it last night when I slept. This code is clean, its well organized, I love the way that they wrap a lot of SQL filtering through classes. Its the way I will approach things from now on.
These open source libraries are available and change all the time. Which brings me to the next point.
4. Don’t be afraid to start over! Technologies evolve, part 3! Don’t stagnate. I hate it things grow stale, and code is no different.
I am not opposed to starting something brand new. Shake up the world! Get rid of the cobwebs. Hey, if you hired us and we found a better technology 10 minutes before the launch, I may just tell you to hold on, until we can get hooks into it and see what its about.
5. Growth is important! Technologies evolve, and so should we!
Since technologies change, so should we be able to adapt! I am not interested in a list of items in a contract, I am interested in growth, the ability to move laterally in any situation, the ability to adapt new ideas to what we are creating.
Bottom line is this:
1. Contract the right people for the job.
2. Avoid tight data coupling
3. Strive to get code that adheres to web standards. Avoid technologies like flex, flash because they are not available on the iphone / ipad. Javascript has evolved. You’ll never even miss flash.
4. Be ready for updates to php. Improvements to php and javascript allow for a constant stream of code improvements. Be open to new ways of thinking, new ways of working.
5. Don’t be afraid to start over! Yes, the improvements to php have opened the door for many new things. I wouldn’t try to re-code zen cart by restructuring all the sql filtering, wrapping them in classes. It would be nice, it would be an improvement, it would also be a colossal waste of time.
6. Adapt to new technologies. Be open to improvements. Try new things. Keep things fresh. I research and download new e-commerce applications at least once a month. I look at their file structure, code syntax, objects and classes, and I love this! It keeps me fresh. Find a developer who is not afraid to roll up their sleeves and look at things from from the perspective of growth and adaptation.