
Greetings to all readers, today's article will be a bit unusual, in the sense that the topic will be raised not entirely programmer, but rather closer to analytical and business. We will talk about what to do when starting your own startup on the Internet, and try to consider one of the most popular myths (or not?) About the design and engine of your brainchild.
And so, for a start, let's consider the very concept of a startup, precisely in the context of our conversation. This is the creation of a website or service that can:
- have a unique functionality, which has no analogues yet, or it is heavily scattered across different systems. That is, you have conceived something that is not yet at all ( type 1 ).
- implement already existing main functionality, adding to it certain features that extend or take the use of already known functions to a new level. For example, the idea of ​​digg-sites is not new, but to the standard opportunity for any user to publish their news, she added two functions that brought the level of use of this standard functionality (news post) to a qualitatively new level ( type 2 ).
- transfers existing functions and / or services to a new environment for them, allowing you to open previously unused markets, for example, if previously dedicated servers and file storages were only for business users and corporations, now with the arrival of products like Microsoft Home Server or FreeNAS implements all the capabilities at the user level and is suitable for deployment and operation at home ( type 3 ).
- Aggregates functionality from different, already existing sources, deriving new opportunities based on a combination of existing services or improving the use of these ( type 4 ).
Of course, this classification is not the most complete, but for our purposes it will completely come off. And then we will focus on the following issues:
- own, completely from scratch, written software system that implements the functionality of a startup against the use of ready-made engines, open or commercial, with partial refinement and adaptation.
- Do you need your own, completely unique design, or you can use a free template or even a default theme for your engine.
The first myth is the most common. Its roots grow strongly from the very nature of a startup, which in many cases is triggered by a technical team, that is, by developers, and among them (yes, why bother, among us, since I also often play the role of developer, although I reorient all the time it is the project management that is widely believed that someone other than themselves must have written or will write a terrible, undocumented and “buggy” code, so it’s best to throw everything away from the very beginning and create your own - and immediately get the most unique th and "clean" in all aspects of the system. It is also warmed up with a mass of primitive comments in forums and blogs, which immediately post well-established “buggy crap” labels to posts about any development, often without real knowledge and experience of using this system, but simply “because Vasya the programmer said so over a beer. " So there are common beliefs about the "validity" of some products and the "stagnation" of others, about the curvature of Indian, Chinese and all other programmers-outsourcers, about the constant security holes of a particular engine (which is certainly not that far from the truth, but this is just a specific work moment, which does not mean that software X cannot be used, you just need to
competently do this). And, of course, all programmers know how to write the very system that immediately solves all the problems with security, load, and similar tasks.
Consider this from the managerial side, that is, as managers or owners of the startup itself, and not programmers (who, in essence and reality, are still just technical staff). If your project is of type 1 (that is, you have conceived an extremely unique functionality that will blow up the market, or, even better, create this market itself), then yes, apparently, your only way is to create your own software. completely independently. And that, since any project, despite its uniqueness, still requires a lot of standard features, ranging from internal functionality (such as registration systems, access to a DBMS, a template engine, etc.), and ending with external services like the project blog, the developers site , the forum is all logical to give to the already proven third-party systems.
And if you build a startup that belongs to type 2 or 3, then the most rational is still to choose from the existing systems closest to yours, based on the list of necessary improvements and changes, and also be guided by such criteria as community size and level of support, the quality of the code and the number of projects implemented on this product, although in different cases it happens in different ways - it is possible that the best project for you has just come out in the release and you will have to rely on the alpha or beta version, speaking on days and almost the first user. By the way, it does not need to be avoided, and if the functionality and other criteria suit you, it will be wise to use third-party products (meaning open source projects). For example, creating a news resource with additional functionality of video and audio comments and rating is the last, it may be logical to use the already proven open blog engine Wordpress, adding to it several third-party plug-ins that implement additional functions. Honestly, a lot of really interesting and useful projects can be implemented simply by assembling from cubes - using open systems, and building up the functions you need using a combination of several plugins. At the same time, the value of the resource itself does not decrease at all! But the costs, especially temporary, significantly, often by orders of magnitude, are reduced, and it is precisely time that is the main and most dangerous enemy of a startup and always works against the creators.
')
After all, even the simplest calculations can justify for you as a project manager the difference in approaches - for example, in self-development it is:
- Detailed creation of the description of the functionality of the project - 1 week
- detailing up to the level of TZ for all development and individual modules - 2 weeks
- development of the project itself - 3 - 10 weeks
- project testing - 1 - 3 weeks (may be spread throughout the development period, as well as additional full testing at the end)
- rework and bug fixes, design development, etc.
All this translates into thousands of USD even with a relatively standard project, while I am absolutely sure that most of the time the developer or team will spend on creating and testing hundreds of times the components created by other developers. Instead, it is better to spend the same week or even two on a review of all existing systems or analogs, installing them and first introductory testing, determine their compliance with the list of required capabilities from the project and choose the system on which everything will be based, and then just create under it has additional modules, which are clearly less and the laboriousness of creation is significantly lower. Of course, now they will give me the argument that the time spent on sorting out the architecture of a foreign system is almost equal to the time it takes to develop such a solution from scratch myself, and they will be fundamentally wrong. This is especially beneficial when reusing the same solution in different projects, because once you understand it, knowledge will not go away, and often sorting out is reading the documentation and viewing the code with documentation, and developing your solution is a completely different process. By the way, there are open projects, the quality of the documentation of which will make even many commercial developers be ashamed - at least look at the documentation for PHP frameworks such as ezComponents.
But as a manager and owner of a business, what do you care about? The timing of the launch of the project, the amount of funding, the feasibility of the original functionality, extensibility and support in the future. Here is the last point in all its glory, and it appears in the case of using the finished system. How many do you think programmers can accompany a system with, say, Drupal or Wordpress or Joomla? True, there are a lot of people, since the community of these systems is very large, both in RuNet and abroad, whereas your own development, besides repeating the functionality already created hundreds of times, will contain a view of the world of your programmer and, at best, comments and some documentation. Therefore, if you need to replace or simply expand your development team, you will look for a person with standard knowledge, and he, in turn, will only understand the nuances of your development and specifics, without plunging into weekly disassembly with the principles and code of the entire system.
In general, what to say - if you approach a startup as a real business, and use economic criteria instead of emotions and typical technical thinking and evaluate your future costs (not only monetary, but also temporary and human), in most cases you will see that your task fits into the functionality of already reputable projects, requiring for implementation only individual improvements, on which it is worth concentrating all the forces of the development department, investing exactly in what we do artap unique. And users, namely users, not commentators, not other developers, not observers of news sites and blogs - come to the site and use the information posted there, useful for them, and ultimately it doesn’t matter what software or language written this system. Well, for example, almost every user at least once visited the
Wikipedia project - and like that it was created on the basis of the engine (or rather, its engine is used as free software and hundreds of other projects are based on it) MediaWiki, and basically uses common PHP and MySQL DBMS - how did it affect the value and perception of information? I think it does. And going to the Mozilla Firefox browser
website , few people know that it is built on the basis of the standard
Drupal engine - and after all, such a community and a company like Mozilla could also make its own engine. But she did not, devoting all her efforts to the development of basic infrastructure and projects, which are their main business processes. But for some reason, observers and critics like to approach the project's evaluation criterion as “if it is written on the standard system X, then no one will therefore walk / use it”. What is the connection between these theses - no one has yet told. Moreover, it is the choice of the standard system, in most cases, open-source for launching a startup that is an indicator of the logic and reasonableness of management thinking, and shows that the basis is still functional and quality issues, and not abstract theses that “ better is worse, but one’s own ”or a banal“ cut ”of free money that does not take into account the specifics of an investor. And only in a few, I specifically emphasize, in
few cases the requirements for the functionality of the project determine the need for the developers of their unique solution.
Once again, a brief optimal action plan:
- We make a list of the functionality of our startup
- Analyzing the market of existing developments, choosing a list of projects that can be the basis of the project
- We consider each project in terms of compliance with our “feature list”, availability of support or community, quality of documentation, etc.
- We try to choose the product for the basis that implements most of all our requirements, or it implements key functions.
- We focus our tools and developers on creating add-ons and extensions, bringing a third-party product to our requirements, making the most of the standard functionality.
- And only in the absence of real analogs or the complete uniqueness of the project being created, we proceed to self-development, which, by the way, should also begin with the exact same plan, only finished products, components and development tools — frameworks, component sets, should be considered servers and services, etc. especially low-level details).
Everything, for today we will complete our review, tomorrow there will be a continuation.
Ps . In fact, this article as an answer to criticism here and in private conversations of my last project -
DevLinks.com.ua