Archive for September 2013
Among posts published in our blog, there are many about CMSs: Umbraco, Joomla, Drupal, Magento, WordPress etc. But one that slipped under our attention is Sitecore CMS.
What is Sitecore?
Sitecore is software Development Company that provides enterprise website, intranet, portal and marketing automation software. Sitecore offers two major products: CMS and its fully integrated “Customer Engagement Platform” which allows seamless integration between its major components: Web Content Management (CMS), Customer Engagement Platform, DMS (Digital Marketing System), E-commerce services, Sitecore Intranet Portal (SIP), Sitecore Foundry.
The Sitecore CMS – an introduction.
Sitecore CMS is .NET-based content management system and vc. Open source .NET based management systems (like Umbraco or Kentico for example), it’s paid resource. It’s not cheap (the cheapest Sitecore license starts around €10k and quickly goes up from there and then you still need to buy support) and depending on this fact the target market of this CMS is big enterprises such as Toshiba, Siemens, KIA, Mazda, Canon, Nestle, Microsoft, including government websites of Denmark. A full list of companies you could find by following this link.
Lunched in 2001 Sitecore’s CMS popularity has been growing over the last few years. According to the results of annual statistics, Sitecore demonstrated good results and what is particular important it is global player and highly competitive US and UK markets.
The Sitecore CMS is considered a pretty good product for its flexibility, scalability and accessibility to the widest range of businesses. Flexibility is an area in which Sitecore CMS excels as it is fully customizable and extendable, and practically anything can be overridden or extended. Scalability – Sitecore CMS is highly scalable and has been architected to scale extremely well, allowing organizations to grow and expand. Accessability – Sitecore is used by many companies, ranging from small and middle-sized to global leading ones.
Let’s have a look also at Sitecore’s benefits from a technical perspective:
• SQL Server and Oracle support allows flexible and hierarchical data storage;
• Simple and understandable API for technical specialists;
• Ability to configure and expand by increasing the pipelines supply, event handing, etc.;
• The engine dynamically collects and cashes management components that help to create solutions to re-use the code;
• Device management – designate page elements and other content for different clients (browser, PDF, XML, feed) or for mobile devices.
• ASP.NET Membership Services manage security, authentication, authorization, roles and profiles
• Workflow facilities make it possible to quickly define sophisticated material before being published
• Media Library provides storage of huge amount of items/data
• Integration with Visual Studio 2010 IDE
How to decide whether Sitecore is the best choice for your company.
If you decide that your company needs a CMS solution you probably need to make first steps towards understanding your use and defining requirements. If to speak about Sitecore CMS we’ve prepared some tips to find out if Sitecore is a good option for your company:
– You/your development team are fluent with .NET (C#, ASP.NET);
– You have a good sized website to host;
– You’re willing/ready to invest and migrate all your websites and web apps into a .NET environment;
– You agree with the payback period that could take over 1 year or longer depending on what you spend to implement and what customization you have done.
One more hot issue to consider is whether you’re ready to go with the paid license. Sitecore CMS is a paid one, it’s not open source. So you should pay for support and access to the code base if you need to create a highly customized deployment with heavy involvement from your team.
So to end up the abovementioned I could say that from technical point of view Sitecore is really looks great and it’s very powerful player among other management systems on the market as it is thoughtfully designed and well developed.
Thank you for your attention to my post and if you have any comments about any aspect of the Sitecore CMS, please feel free to leave your comments.
Business Development Manager
Professional Software Development
When looking for a suitable web framework you could definitely come across – Symfony and Yii – top PHP frameworks. But what to choose? Most interviewed developers prefer Symfony than Yii. Let’s see why.
Code maintenance and management. I believe there is no problem to create a code from the very beginning. Still when it is a long term project there could arise some issues – for instance, after several months of the development on Yii there could arise some problems with small workarounds, hooks…it would definitely work but supporting would kill you. Protection from corruption is quite important for every company but who would like to care about hooks and workarounds everyday if these issues could be avoided?
Style of the code. Yii team has their own code style, it’s great. Still it can be a problem in case you have a project with different code guidelines than Yii team use. Sure, you can contribute some extensions in Yii community and save the extensions similar to native Yii code. But in the end you would have to switch between different code guidelines all the time – not great. Namespaces. Namespaces helps to shortcut class names, helps with classes autoloading etc. Yii doesn’t not use them. I believe you would feel more comfortable with namespaces.
Test driven development (TDD) issue. As for code testing, tests should be written easily. In case Yii, its global service locator (Yii::app()) destroys attempts to write tests. Starting with one test, after some time you would understand that you would need to mock this service and another one, and both of them depends on 3rd service…in the end many services interact with each other in Yii L As a result we get tight coupling, which is tricky for performing decoupling application.
Thus, in spite of Yii has CWebTestCase, fixtures, base integration with phpunit etc it is more useful to test services/models without mocking other services and framework classes.
ActiveRecord. Having ActiveRecords as framework core is great, it’s really useful for beginner. Still Yii active record is too simplified and tightly coupled. Another more serious issue – there is no separation between entity and entity manager. Using Yii we have to use static methods for querying models and non-static methods for model logic. ActiveRecord and ActiveFinder are provided by a single instance in Yii and there could be a trouble when queries mixed with entity getter/setter.
Ah, regarding to static methods for querying, they can’t have state except for static one. And if you want to mix few conditions you have to merge criterias. What is Symfony in this case about? It has Doctrine 2 – quite serious ORM with unit of work and other cool things. Or as an option you can try Propel ORM. There is the things you would really like: real getter/setter, db schemas and migrations generation, behaviors that actually a generator addons, reach set of generator properties and integration in some Symfony components like forms and validator. It has some issues as well, still it works better and you can get clear separation between entities and queries.
Extensions. As for extension in Yii, firstly you should find and download it on the Yii site, manually copy it to the project directory, attach it in config. And then to monitor the site for updates. Such procedure is not comfortable for 21th century. Composer could be a great choice in this case. You can easily define project dependency and run update. It download extension/lib/component/bundle or whatever you want, setup autoloading and you can use it. Also composer cares about all component dependencies and downloads them. All components can be updated to most up-to-date version with one command. Also you can specify which version to use: to download test or dev versions , it’s easy!
There is another cool thing – contributing. It’s easy to publish your package and make it globally available, easier to define versions, easier to fork extensions, easier to send pull requests etc.
Now some short facts about Symphony:
- Symfony is not a framework but a project. Depending on your needs, you can choose to use some of the Symfony Components, the Silex micro-framework, or the full-stack framework.
- Symfony is used by many large companies (like the BBC or CBS), by many large websites (like TED, wetter.com, Lockers) and some Open-Source projects are also powered by Symfony (CMSes likeDrupal or eZpublish, libraries like PHPUnit or Doctrine, products like phpBB orshopware).
- Symfony enjoys a huge community of users and contributors; during the last year alone, 550+ people contributed to the Symfony core and the community created over 1,600 bundles for the full-stack framework. Symfony also has several annual dedicated conferences around the world and a large number of user groups.
- Symfony has been created in 2005 and here to stay. Besides SensioLabs, many other companies rely on Symfony for their clients and they contribute, invest money, and sponsor the future of the project.
- Symfony embraces the “don’t reinvent the wheel” philosophy, and provides tight integration with many other Open-Source projects.
- Symfony tries to bring innovation to PHP: it was one of the first major frameworks to embrace PHP 5.3, to introduce the usage of a Dependency Injection container, and to use a templating engine for its templates by default,Twig, which is now also adopted by major CMSes like Drupal and eZpublish. Symfony also has some unique features like its gorgeous debug toolbar and its great built-in profiler.
Conclusion. In case you would like to create a small blog – Yii would be a great choice. If you are going to develop a serious application, if you know why you need a Dependency Injection, and need to cover most of the code tests, need a super plug-in architecture, work with migrations and a fixture – only Symfony.
Thank you for your attention and look forward to your thoughts.
Tips to the Customers of Software Development Services Or How to Turn the Cooperation into a Win-Win Game?
Posted September 2, 2013on:
Every now and then it happens that customers and software development vendors stop understanding each other which leads to wasteful argues, mutual accusations and can even end with the complete project crash. By the nature of the profession I constantly work somewhere in between the client side and the programmers’ one. Basing on this experience I can say for sure – that’s not developers/testers/PM’s who are always to be blamed – the customers also should understand the basic behavioral models and principles of work. I’m not saying the client shall grovel through the whole available literature on the software development methodology. Often, it’s enough to keep in mind simple but useful tips that will save lots of time, money and keep the both parties’ nervous system robust.
1) Take an active part in the project, don’t restrain yourself 🙂
Basically there are 2 situations possible: when there is a detailed technical spec and when there is not. Even when there is – if developers pose questions, it means they really need the information for your business success, first of all. So, I’d really advise you to find at least 10 minutes to respond to the posed questions. If there is no spec and the process is going iteratively, it’s even more important for you to discuss the functionality needed. The more the BA/developer (depending on the project size/needs) knows – the more quality the product is – the less time consuming the development process – the more successful your business is.
The most important thing to understand here is that, above all, it’s your business, your product, your tastes and your vision. The thing which is completely obvious and logical for one person may not be clear at all to the other. Vendor companies can definitely advise/suggest (and they actually should), but the customers shall take an active part in the discussion. Depending on the product goal, sometimes even some simple “register” button can play the crucial part in the whole business. It’s always better to ask and make the required thing at once, then remake it again and again wasting time and patience.
2) If you are a Big Boss and simply don’t have time to take this active part described above, appoint a person who can substitute you fully in the decision-making process and whose competence and vision you trust.
3) There always shall be one person who is fully responsible for the whole project, not two, three or ten. Don’t share responsibility with your marketing assistant, accountant, art-director, system administrator, chief locksmith and charwoman. Ok, I’ve overplayed a bit 🙂 Marketing assistant and technical director can definitely advise on this and that but the final decision is always made by one person. Thus, it is always known who is responsible without shifting the duties between different departments.
4) Working out the prototype, think only about the main and the most important functionality. All bells and whistles will come afterwards. If you can not define which detail is more significant and which is less, let the competent people like Requirements or Business analyst help you.
5) Deadline is a mutual concern.
Actually, it’s an extension of point 1. If you set a tight deadline, please, ple-e-e-a-a-se don’t leave for a 3-hour lunch or for a vacation leaving the developers without the required info/docs at the last project stages. They’re upset, you’re upset (especially after vacation – I bet!). In the end, it’s a loose-loose game.
6) Listen to the programmers’ advice.
You’re not obliged to carry into effect everything they say, but try to take to heart at least part of it. Especially if you have no clue about all these offbeat terms like .NET, PHP, Java, Apache etc. and want to develop your own e-commerce system, for example. You’d better listen to the technical people in this case – not all the systems are made hands down with the help of some free ready template. It will take you some time to listen but instead will save lots of time and money. Who knows – probably they will say something useful? 🙂
If you are a rather large non-IT company, it’s actually better to entrust the process optimization to the professionals. There are always Requirements and Business Analysts who are ready to help and advice.
7) The following (and the last for now :)) tip is applicable for the life situations in general, not only in the sphere of software development. Golden rule, so to say. Every dispute, every problem, every issue can be settled and solved without shouts and emotional accusations. If there is already a problem, it makes no sense anymore to constantly clarify who is the one to blame. The parties should already think over the way out by the means of a constructive dialogue. Not in a different way. Let’s treat each other respectfully.
True – in our company there are such people like me who help establishing this communication bridge between the customers and tech guys, thus avoiding lots of embarrassing moments. Still I vote for the world peace J and constant mutual understanding. So I hope that these tips will help us in the uphill struggle of building a beneficial cooperation in the sphere of software development.
I’d be really glad to see here both parties’ opinion – customers’ and vendors’ one. Probably, you have your own list of tips or interesting moments/situations to tell about – share with us! 🙂
Business Development Manager
Professional Software Development