I was interviewed more than ten years ago by a team of a small company. Smart people and we got along well, until I was allowed to ask them questions. And some of them rub them the wrong way, or I felt like it by my decision to increase the pressure of evasive and half-thought answers.
The question in cause was related to the fundamental decisions in the life of a large project where the steering wheel will turn the whole development efforts for years to come. I will enumerate examples of it and give my two cents along with examples of companies with recent developments which are giving mixed signals to their potential customers:
- new developments: a decision of what platform to choose when a new project comes alive, do you go with the language/development tools of choice and experience in your company or get everybody on board for something new/exotic but with intrinsic benefits. I saw that as a client of Questrade which developed their trading platform in WPF (windows presentation foundation). That technology was thought to capture the web browser and desktop development in one swoop and also be adapted by all browsers. The mess created for some of the customers can be easily scooped from online forums.
- software integration: when to stay on the same platform or create layers of translations for your code base of millions of lines of code. That is in my alley when companies I contracted for acquired a hodgepodge of companies just for business reasons (some of them proved to be clearly mistakes). We had to spread the wings of covering a totally set of OSes and SQL servers and front-ends and …. A famous example is of Facebook and their HHVM.
- decision process : when options are available where do you turn on the right path, who/what is the decision maker or the process in taking the turn? For upgrading a service do you look-up and test, just talk with consultants, have a network of gurus or simple post a question on Stackoverflow? Some companies are taking the time to justify the choice with prototypes and examples and real-development time spent on checking the promises of the “green-land”.
- one base code for all platforms: in some cases, companies are thinking to extend the base of their users by using cross-platform development tools (Xamarin/PhoneGap/Sencha Touch). There are pros/cons and situations where cross-platforms are a good compromise but for any serious project companies have to bite the bullet and learn the paradigms and the frameworks of native developments. Here is again the famous case of Facebook and their push for HTML5 with the latest turn towards native development. Another famous example is about Linkedin and their mobile client.
- who is your mentor/guru: what if you are totally clueless about the next step and the company is at a real cross-road? Who are you turning to, do you have a network of people who can contribute to the discussion and give you a direction in the process?
- cloud technologies: in this age, cloud development is very important and the cost of opting for one or another player means integrating and developing for that specific cloud provider (PAAS). We chose a certain path due to “fast-to-market” approach but quickly realized it might not be the most convenient on the long run. Spending time of reading other companies blogs and hearing about all advantages/disadvantages of each platform has its own important role in the future of your product. I am talking here about Amazon, Azure, Google and IBM (maybe). The gorilla of the cloud services seems to have at least 5-6 years advance from all other competitors and the luxury of crashing prices and enhance their products at a quicker pace.