SWOT analysis of Ruby on Rails
According to Wikipedia (https://en.wikipedia.org/wiki/SWOT_analysis):
SWOT analysis (or SWOT matrix) is an acronym for strengths, weaknesses, opportunities, and threats and is a structured planning method that evaluates those four elements of an organization, project or business venture.
We’ve got used to see SWOT analysis for projects, companies or even people. But why not to try to apply it to a framework? It was invented in the 1960s, so it’s rather an old technique. On the other hand, it gives short and presides description of the topic. Now, when we have more and more discussions whether Ruby on Rails is fading (or even dying) it makes sense to use some tool to check it.
In theory, SWOT analysis describes:
- Strengths — what are the strong points that gives an advantage?
- Weaknesses — what are the weak points that gives a disadvantage over others?
- Opportunities — which elements of the environment can be exploit to its advantage?
- Threats — which elements of the environment can cause trouble?
There are two interesting perspectives in analysing above points:
- Strengths and Opportunities are helping as, whereas Weaknesses and Threats do the opposite,
- Strengths and Weaknesses have internal origin whereas Opportunities and Threats come from the environment.
Usually we don’t have an impact on the environment, so the best strategy here will be to maximize our strengths, minimize our weaknesses and exploit existing opportunities.
That’s the theory. Now let’s see how that analysis can look like for Ruby on Rails framework in 2017.
SWOT analysis of Ruby on Rails
- fast development — one of the reasons I came to RoR, it’s a great tool when you start a new project and want to see results soon
- many gems — there is a high chance that you find an existing gem for almost any problem you have
- good hosting — it was a weakness few years ago. Nowadays almost every hosting service provider supports RoR and we have specialised companies like Heroku
- great community — conferences, local meetups, forums, FB groups, lot of open source projects and people willing to help
- good marketing — this is a part of success of RoR. DHH and the community is doing great job to “sell” that technology
- a lot of books, courses, tutorials, learning materials, offline courses, bootcamps — this was always a priority and as a result, you can find a lot of sources of knowledge
- Ruby is attractive as a programming language — that goal of being attractive, easy and give pleasure lays in the foundation of the language
- lot of programmers — we have more and more companies and projects that use RoR. As a result, number of programmers grew. That helps in spreading the framework and increase a chance that it will be used in other project
- consumes a lot of resources (CPU, RAM) — although new versions try to improve that, Ruby and RoR have hard time competing with other technologies in that area
- bad performance in some cases — same as above. After some level of complexity of a project, performance (in the meaning of number of requests that can be handle) is weaker than for other technologies
- support for websockets — there is ActionCable library introduced in Rails 5 but still it needs some work and doesn’t have best performance
- “Rails way” is sometimes not enough for more complex systems — MVC paradigm, fat models and views that are combination of templates and views is not enough for more complex systems. There is no leading architecture in the Rails world for this. Many projects have their own architecture or use pieces of other solutions
- framework itself becomes more and more complex — there is at least 7 subframeworks in Rails 5 and each version of Rails introduces more. That illustrates how fast modern web development is growing but from the other hand raises the bar for junior developers
- weak concurrency model — there is no good concurrency model in Ruby 1 and 2. As a result of it we, developers do not use concurrent programming. As a result we don’t squeeze everything from machines that we have nowadays
- a lot of existing big systems — there is a need to maintain them, but also provide some more advanced solutions when it comes to architecture, deployment, CI etc.
- stable position in the rankings — RoR became mature technology. There is more trust that it can be used for complex and advanced systems. That’s an opportunity that was closed at the beginning of the framework
- growing demand on web programming — Rails are used more for backend and API purposed nowadays, but still there is more and more web programming and that trend will go higher
- Ruby 3 — planned for 2020. There is a lot of marketing and promising in that topic but for sure it will come with a different and much better concurrency model, which can help with concurrent programming, and a lot of performance improvements
- new languages or frameworks — Elixir with Phoenix framework is a new kid on the block and many Ruby developers already started using it
- need of better performance — for projects of some scale Rails are not enough or too expensive (number of servers)
- level of RoR programmers gets weaker — at the beginning of Rails only best developers from Java and PHP world switched to it. Now we have many developers in Rails community who don’t have so high skills
- modern web framework is not only about CRUD — Web is different now that it used to be 10 years ago. Support for CRUD applications is not enough to ensure success for a any web framework
Ruby on Rails still has a lot of strengths and still is a very popular framework (so Ruby is as a language). Undoubted advantages are: fast development, great community and stable position on the market. From the other hand, I have an impression that after many years of its existence, RoR still has the same weaknesses. Maybe only levels of these weaknesses changed. I cannot say the same about threats. 10 years ago there was a danger of not becoming a “mainstream” technology and being forgotten. Today, RoR has to compete with other technologies that wants to solve different (and totally new) problems of (mainly) web programming. These technologies wants to be more attractive to the developers to get on popularity.
In my opinion, saying that Ruby on Rails is dying is far from the truth. If RoR is able to maximize its strengths, minimize weaknesses and use opportunities, it will posses its position for a long time. But how this can be achieved?
- by being attractive for these who needs to choose fast development
- keeping great community
- not trying to complicate the framework too much
- working on performance
- and exploiting growing demand on web programming by following newest trends not forgetting about big systems that are already written and needs to be maintained
Want to know first about new articles from that blog?
Subscribe to my newsletter now! — http://eepurl.com/cVPm_v
If you like this article and consider it useful for you, please support it with 👏.