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 AngularJS 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 the AngularJS and ReactJS frameworks?
Laurentiu: In my case, yes! After 3 months of full-time learning and practicing with AngularJS, I barely felt like I scratched the surface. Now, after more than 2 years of using AngularJS 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 AngularJS, 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, Angular 4 is becoming popular now. It is faster than AngularJS, but we also have to look at the application’s size, an Angular 4 is not ideal for every type of project. If you want to develop an enterprise application, it is important to have a reliable framework that won’t crash and, in this regard, AngularJS is recommended.
Although its popularity started decreasing, the framework is still on top. AngularJS has been on the market for many years and has improved and matured during this time. Angular 4 is recommended for smaller projects, where you can easily refactor while learning, it is also great for mobile support (you can build native mobile apps with strategies from Ionic Framework, NativeScript and React Native).
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 AngularJS, 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 AngularJS. 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 six 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, I think 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: AnguarJS’s set of built-in directives are very helpful, they enable quick prototyping and can deliver heavy data-driven single page applications. Developing with AngularJS 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 AngularJS 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 a specific approach that is becoming very popular these days: 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 AngularJS 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: We will probably make a mobile app using Angular 4. 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. I also need to take a look at the newly announced version of React (Fiber), who knows what it will bring.