Laurentiu has been part of the team working on Aktan’s service design platform for more than 2 years and has gained a lot of experience in using Angular along the way.
Adrian has over a year of experience in working with ReactJS on the Bonobuzz application and has formed a number of opinions about this framework.
Q: Is it difficult to learn Angular and ReactJS frameworks?
Laurentiu: In my case, yes! After 3 months of full-time learning and practicing with Angular, I barely felt like I scratched the surface. Now, after more than 2 years of using Angular on a daily basis for the Aktan project, I can say that I master the technology.
Adrian: ReactJS has an acceptable level of difficulty. The complexity of ReactJS is lower than Angular’s, and a developer can become proficient in about 6 months. Nonetheless, you have to keep in touch with the technology because things change very quickly and packages and application structure may change dramatically.
Q: What would you recommend for readers interested in learning these frameworks?
Laurentiu: Looking at trends and keeping up with the new releases. If you want to develop an enterprise application, it is important to have a reliable framework that won’t crash and, in this regard, Angular is recommended.
Adrian: I have no doubt that using ReactJS can be a good thing. That being said, I have to mention that React development needs NPM, Webpack, Babel or ES6, and you have to pay some attention to them. Similar to Angular, it has reached its maturity and you can find a lot of useful packages and get a lot of support from the community. If you want to work with ReactJS, I strongly recommend grabbing some popcorn and watching some Flux and Redux tutorial videos.
There is also good mobile support for this platform. It is possible to develop native mobile apps for iOS and Android devices with React Native, which is very similar to ReactJS. Basically, learning one library will build the foundation for using both of them.
Q: Is it a challenge recruiting front-end profiles?
Laurentiu: There are not a ton of developers on the market that really know Angular. We searched for new colleagues on our current project and couldn’t find a match.
Adrian: It’s not easy, I can tell you that. Single Page Applications are the current UI trend, which began over eight years ago with libraries like Backbone and continued with Angular and then React. At first, clients were reluctant to spend time and money to start developing apps because they lacked proper documentation and the learning curve was too steep. But things are changing and we are seeing more and more front-end guys going SPA.
Looking to recruit front-end profiles? SkillValue helps you find and recruit the best IT talent.
Q: What do you like about the framework you use and what don’t you like about it?
Laurentiu: Anguar’s set of built-in directives are very helpful, they enable quick prototyping and can deliver heavy data-driven single page applications. Developing with Angular is fast once you get familiar with it. It is very expressive and you need less code for the same result as with other frameworks and libraries.
As for the negative side of things, I would say this framework is permissive enough to let developers create problems that can snowball out of control if there are no clear development guidelines and best practices adopted for the project. Anyone new working on an Angular project already in process should have a very clear understanding of what it is all about. They need to be able to create new modules without negatively impacting ones already existing. A second negative is that when an application grows too large, its performance is likely to decrease and special attention needs to be taken in regards to optimization.
Adrian: I like the fact that ReactJS is very fast because we have a VirtualDOM that is compared with the actual DOM and only a patch is applied. The large number of React npm packages available via npm is not to be neglected as well. I personally prefer to write code using the redux-saga as I feel it gives me better control over the application state and it provides a cleaner structure to organize the calls to our REST APIs. I am a fan of writing ES6 code and dispatching actions to get or set data in the state.
What I dislike about ReactJS is using inline styles. I think they have the same re-usability issues as the old inline html tags issues. Also, there may be readability and auto completion problems with some IDEs when writing inline CSS. In the past, I preferred a more template focused approach, similar to Backbone’s Marionette, and was a little surprised to see the JSX mixed up in the render function of a React component. However, now I am used to it and it doesn’t bother me anymore.
Q: Tell me one surprising fact about your project.
Laurentiu: For more than 2 years, we haven’t had any dedicated testers in our project. Although thousands of lines of code are added from one sprint to another, we have had almost no regression bugs. We have been able to add new functionalities without interfering with the old ones.
Adrian: I was surprised to see that I could easily move some utility modules written for the React Native project to the ReactJS webapp. Also, I was surprised by the relatively low learning curve at the beginning of the project.
Q: What are you most proud of regarding the project you are currently working on?
Laurentiu: At one moment, when planning for a new feature (a custom viewer for 360° photos, that had to work in collaboration mode) we got stuck and had to come up with a solution. I found an example online that was basically just a rotating sphere, made using Angular and three.js. Based on this example we developed the new feature and everybody on the team contributed to the solution. Today, it’s one of the most impressive and visually appealing features in the project.
Adrian: I am very proud of the fact that we are persistent in writing modular code that can be used everywhere and we can really stick to the react redux saga without polluting the structure of the application. We also respect ES6 standards and take care to keep linting issues at zero. There are tests for all sagas, reducers, actions and selectors of the application in order to make sure the changes to the application state are working properly.
Q: What is the next step in your project?
Laurentiu: At some point in the past we considered using the Ionic framework in order to make use of the existing code base, but the enterprise version is very expensive.
Adrian: My team will start to focus on mobile development with the help of React Native, up to this moment we have predominantly been working with ReactJS to develop web applications. I am sure that we will continue with both of them in parallel.
- How to choose between e-Commerce platforms
- Android vs iOS: where to start?
- Virtual Reality – the start of the next computing revolution