What makes a certain technology to support anther technology which a company has been using for years? – For sure, it helps when a larger company is responsible for the production of a given technology, as it gives a bigger sense of safety and there is a bigger chance that a library will be supported for a longer time. The issue of developers is also very important. If they get interested in a given technology, then it has a bigger chance to support other related technologies, Grzegorz Graczyk, CTO w PQ Studio says.
We talked with Grzegorz Graczyk not only about the work of a developer working with the ReactJS library, but also about the work in a software house. We asked him about what made a programmer to develop in a company, what hampered their development and what problems they had to cope with on a daily basis.
What is ReactJS? What does the work of a ReactJS Developer consist in?
What are the advantages and disadvantages of ReactJS?
I believe that one of the biggest advantages of ReactJS is that it is supported by Facebook. In the context of fast development of ReactJS and frequent appearance of new frameworks it is even more significant. While relying on ReactJS we are certain that it will not disappear too quickly, since many companies have invested a lot of money in it and have created applications which use this technology. Another important advantage of ReactJS is also a rich ecosystem, as well as developed and active community around it.
In what way do you improve your knowledge and keep up with novelties in ReactJS?
There are a few places on the Internet. The first of them is Twitter. It’s worth to follow people who have influence on what goes on in the ecosystem. Those are, for sure, core developers of ReactJS, but also creators of well-known libraries (I follow, among others, @sophiebits
This is a main source of knowledge for me. Of course, you can’t write that much because of limited length of one tweet, but it’s a place in which we’ll learn if somebody has written a new post on their blog or has created a new library which we could use. Thanks to such posts, we can also learn in which direction ReactJS will head in the future.
Hacker Newsis the second place I visit. Uploaded news concern many technologies, thanks to which we can learn what generally goes on in the world.
How much time do you devote to improve your knowledge after work?
It depends. If I learn some new library or concept, then for sure longer, but usually I simply try to keep up with novelties. It doesn’t take longer than one hour a day.
In what way did the community around ReactJS help you? Do you search for solutions to problems you cope with on forums? Could you please give us any example?
Activity of the community is visible everywhere.
If it weren’t for the community, ReactJS wouldn’t be so popular.
The first place in which we should look for a solution to a given problem is of course Google. Depending on the problem, we’ll find solutions in posts uploaded on blogs, on StackOverflow or in a form of repositories on GitHub.
What problems/challenges do you face everyday?
It depends on a project I deal with. There are standard problems, in the case of which there are well-known, good and reliable solutions, but there are also problems, in the case of which you must find out your own solution. And, in fact, such problems are the most interesting ones, because you can learn new things and develop yourself as a programmer.
What are the most frequent and standard problems that a developer working on commercial projects in a software house faces?
If somebody already works in a software house, then they usually don’t have any problems arising from their skills relating to a given technology. The only issue in which problems can appear is deeper understanding of the client’s needs and answering such questions as: “Why does a given client need this application?”, “What problem is it supposed to solve?”. This is often related to knowledge of the industry in which the client is active.
Could you please tell us more about one of such solutions to problems?
Currently, we are writing an application (SaaS), which will place a widget on the user’s website. It’s difficult to find something on the Internet that would concern good practices regarding widgets, or about the way of their implementation. You can keep an eye on competition, which we actually did, but solutions applied by others weren’t sufficient for us. Two problems occurred.
The first of them was trying to avoid the situation where appearance of the widget would be affected by styling of a website. Iframes which we couldn’t take into account due to the specificity of our product were the most frequent solution applied by our competition. The second problem was the size of a package, as we offer our users a possibility to choose many widgets on a single website from hundreds of alternatives.
We didn’t want to place all of them in one package in order no to increase its size drastically, especially taking into account the fact that the majority of them wouldn’t be used. So, we developed a system which divides a package into smaller parts which are sent to the client upon their request. Such original solutions are, for sure, more time-consuming and more difficult from ordinary app coding, but they are also more interesting for a developer.
What projects help a programmer to develop?
A programmer can develop in many fields, i.e. in terms of new technologies, solutions applied in applications, from industry knowledge to soft skills.
Therefore, it’s good if a given project introduces a small number of novelties in one or few of these fields in order to push a programmer out of their comfort zone, thanks to which they will develop in a given direction.
What definitely hampers their development?
When a programmer does the same things all the time, they won’t develop themselves. A programmer must want to develop, but company culture is also very important, as if it’s not focused on permanent development of workers, then it’ll definitely hamper it.
What doesn’t the majority of programmers know about the work of ReactJS Developer?
I don’t know if the majority of programmers doesn’t know about this, but the most useful novelty is that if you know ReactJS, you can easily start writing mobile apps thanks to React Native. Maybe it’s not a one-to-one transfer of skills, because every platform (Android, iOS) has its own limitations and certain things are done differently, but while choosing appropriate libraries you can often use the same business logic, components or even styling as in the case of a web app.
Programmers devote their private time in order to keep up with all novelties. It’s probably one of these things that people who aren’t connected with IT and who get excited about the thought that programmers earn 5, 10, 15 or even 20 or 30 thousand zlotys net don’t know. What is also important in a programmer’s life, apart from permanent improvement of knowledge?
Definitely the ability to maintain a proper balance between work and a private life. It’s difficult, because projects can be very absorbing and the ecosystem changes very quickly, so in order to keep up with everything, you must improve your knowledge, which often happens outside normal working hours. You must pay a lot of attention to this fact, as it’s very easy to burn out.
What did your first contact with ReactJS look like? Why did you learn this library?
I had the first contact with ReactJS about 3 years ago. Back then, we were writing apps mainly in AngularJS, but ReactJS started to be more and more popular, so we couldn't ignore it anymore. We made a decision that we’d give it a try. We were about to start development of an internal company app, so that was an ideal opportunity. The ecosystem wasn’t so developed, but we could notice big increase of efficiency during the interface implementation.
We decided to totally move from AngularJS to ReactJS.
Firstly, we started dealing with smaller projects for our clients, but after some time we switched to larger projects and finally our entire front-end works in ReactJS.
What are some similarities and differences between AngularJS and ReactJS?
What makes a given technology/language to support anther one which a company has been using for years?
It’s difficult to say. For sure, it helps when a larger company is responsible for the production of a given technology, as it gives a sense of safety and there is a bigger chance that a library will be supported for a longer time. The issue of developers is also very important. If they get interested in a given technology, then it has a bigger chance to replace other related technologies. It usually happens when a new library/technology enables performance of existing tasks in an easier and faster way than the previous one, enables to do things which you couldn’t do in the past (like e.g. React Native) and is more user-friendly for developers.
What tools facilitate the work of ReactJS Developer?
I think it’s a very subjective question. Each developer has their favorite tools, which they like to use. When it comes to ReactJS, prettier, which is a tool that helps to format a file code in accordance with previously established rules, is undoubtedly very useful. Thanks to this, we can stop thinking about manual formatting of a given code and increase our efficiency even more.
Plug to React Developer Tools, which helps to perform ReactJS component tree inspection, is the most useful tool for ReactJS. Redux Devtools, which helps to check a current state of a given app in projects using Redux in order to manage this state, is also a useful plug.
How would you encourage other people to get interested in ReactJS?
I think that if somebody looks for a job in front-end, then they know ReactJS. It’s a very user-friendly library for developers, with many examples and tutorials. It’s difficult to come across a problem which hasn’t been solved by somebody yet. The library and the related ecosystem are constantly developing at an increased rate, thanks to which you can’t complain about the lack of work in this technology. It entails a possibility of working on interesting projects at really competitive rates in comparison with other languages or libraries.
Grzegorz Graczyk – co-founder & CTO in PQ Studio.
He’s been a programmer for 12 years. Fullstack developer, who specializes mainly in the golang and ReactJS technologies. He’s been responsible for technological development of PQ Studio for 5 years.