Re:Imagine Session: Green Agents - Part of the Waste Management in North Macedonia

Green Agents - Part of the Waste Management in North Macedonia

Watch Now!

Aside from the “regular” waste management world, there is the work of silent, local, informal waste collectors in North Macedonia, whose contribution for a cleaner environment is growing. This presentation, which was held by REDI’s Asib Zekir (Director of Green Initiatives and REDI Recycling), focused on the work of these informal waste collectors, how they can be made formal, how it grew to this level – with the help of REDI, all the way to explaining the processes and phases they’ve ingrained in their work!

The session was held on 14.11.2022, at which Asib gave the whole background on the informal waste collectors in North Macedonia and their contribution to a cleaner environment.

Topics covered:

  • The issue of informal waste collectors 
  • REDI Recycling’s backstory 
  • The solution proposed 
  • Lessons learned 


People Re:Imagine Session – Panel Discussion at the Faculty of Philosophy

People Re:Imagine Session – Panel Discussion at the Faculty of Philosophy

Watch Now!

With the big changes that happened on the labor market – ranging from the working models, all the way to how companies approach talent – many of the employers are facing new challenges which can be crucial to whether their companies will stay relevant on the market – it’s a case of adjusting to the “new normal”, or risk losing step with industry trends.

This was just some of the questions and potential scenarios that were part of the panel discussion titled ’Developing the Workplace of the Future which was held on 22.11.2022, at the Faculty of Philosophy in Skopje. The panel discussion was organized by the Faculty of Philosophy – Skopje, together with IT Labs as part of the Re:Imagine People Management sessions, which will contain experts and leaders in the HR industry. 

This panel discussion was opened by the dean of the Faculty of Philosophy, Prof. Ratko Duev, PhD, and it was the first in a series of sessions – and at it we had the following experts: 

Discussion Moderator: 

Prof. Sofija Georgievska, PhD, Head of the Center for HR Management 

Panelists: 

  • Frosina Zafirovska, Chief People and Talent Officer at IT Labs 
  • Biljana Blazevska Stoilkovska, Professor at the Faculty of Philosophy 
  • Dejan Vanevski, Strategic Business Development Manager at Thrivity 
  • Vaska Gjorchevska Zaevska, Deputy Director at Vitek Macedonia 
  • Stefan Jovanovski, Head of the Human Resources at A1 Macedonia 
  • Dejan Madzoski, Human Resources Director at NLB Bank .

We’re thankful to the Faculty of Philosophy – Skopje for partnering up with us for this panel discussion, and for lending their space for this session and the ones that will come after it! 


Re:Imagine Session: The Power of Power Apps

The Power of Power Apps

Watch Now!

Power Apps, a component of Microsoft Power Platform, is a suite of apps, services, and connectors, as well as a data platform, that provides a rapid development environment to build custom apps for your business needs. 

Low-code platforms are exploding in popularity, and organizations are expected to build 70% of their new applications using low-code or no-code platforms by 2025. 

Every business is becoming a software business, making digital transformation a critical initiative for maintaining a competitive advantage. 

So how can you take advantage of Power Apps? Can the potential they carry be used to set your business up for the future? The answers to these questions and many more were answered in our Re:Imagine session that was held on 01.11.2022, at which IT Labs’ Blagoja Panovski (Principal Software Architect) and Aleksandra Vinokikj (Technical Lead) dived deep into the subject, from what you can do, all the way to what the future holds when it comes to Power Apps! 

Topics covered:

  • Low code platforms – what should I know about it? 
  • Microsoft Power Apps – lessons learned
  • Demo
  • Q&A Session


It’s Time to Have the Talk on Hybrid and Remote Working

It’s Time to Have the Talk on Hybrid and Remote Working


Over the past three years, we’ve seen massive shifts in all aspects of our everyday lives, and while most of these shifts have been temporary, there’s one change that seems like it’s here to stay – remote and hybrid working.

What started out as a no-brainer move, is now a topic for hot debate – with opinions flying left and right, people waging a productivity-vs-happiness discussion (and almost a war), and quoting research old and new to state their point.

But is reality, black and white? Is this going to be the one thing where the data from research will create two opposing sides, and in the end, we’ll say “it depends”?

Let’s dive deep and look at the latest numbers and (try to) close this debate, or at the very least, create a credible checkpoint.

What's the Big Idea?


With the development of technology and the world becoming more connected, with more people gaining access to the internet and the modernization of existing internet infrastructure, working from literally any point around the globe has become a piece of cake.  

A laptop and the password of the nearest Wi-Fi, or in some places, a USB stick connected to some network, is all you need to gain access to hundreds of thousands of jobs – full-time, part-time, freelance, contractor, consultant – you name it, there’s a job ad somewhere with that title.  

Of course, some jobs cannot be turned remote (factories, restaurants, etc.), but the fastest growing markets and industries are the ones that offer it – tech, marketing, insurance, finance.  

In the end, the debate is still flaming hot, and the first thing we need to do is take a look at the perception of remote vs hybrid, before we dive into the data. 

The Data


There is one research by economist Nick Bloom regarding remote work in the tech sector, and the data has shown that hybrid/remote models:  

  • Made employees much happier (flexibility, mobility, easier to function)  
  • Changed the structure of working hours (people tend to interchange between personal and professional obligations during work hours, and if they don’t finish everything, they take some other hours from the weekend or make it up by working a bit more on other days)  
  • Team members started messaging more among each other (people tended to write to colleagues and other co-workers, rather than walk over to their booth/office and talk to them)  
  • Productivity went UP (based on 4 different measures: promotions, performance grades, self-assessment measures, and lines of code. Promotions and performance grades were “flat” but self-assessment went up, as did the number of lines of code laid on average (by 8%).  

Regarding the company culture and the general sense of belonging and engagement that is expected among workers that go into the office, data has shown that while workers feel more disconnected and less aligned with the core values of their company, this “gap” can be closed by properly transitioning to the online/remote model, and finding suitable team-building activities and events.
 

Mitigating the potential negative outcomes (the cons above) of the hybrid/remote models are easily mitigated when the virtual/online engagement is appropriately done. 

Why The Differentiation Between Hybrid and Remote Matters


The need for remote and hybrid jobs increased, but it seems that companies and businesses have chosen to implement these working models partially or with some conditions attached to them, and this has gone on to blur the lines between the two. When a company says remote, does that mean real remote, or is it like a hybrid?

This “blurring” of the lines went on, with adding conditions and making the working models use the terms’ remote’ and ‘hybrid’ and being neither while trying to be both. And this has been reflected in the opinion and experience of large segments of the workforce impacted by these.

The need for a clear distinction between the two models is not down to them overlapping – they’re not, but companies make it seem so. The endpoint is – these two models of working are beneficial not just for workers but for companies as well, but only when implemented with just one condition – let the employee choose.

How We Made It Work For Us


As we’re firm believers in the fact that IT Labs’ team members do their best work in an environment of their own choosing, we give each and every team member the freedom to choose how they want to spend their time – we call it True Remote.   

Want to come to the office every day? Feel free to do so. Do you feel you do your best work at home, or do you want to work in non-office environments? Go ahead. A few days at home and maybe a few in the office? Works just as fine.  

Conclusion


The world of remote and hybrid work is changing, and the wide variety of tools for following procedures and creating reports boost efficiency and information flow. Project managers and clients can follow the work being done and better understand the processes that are part of development.

So, in the end, the debate regarding hybrid and remote working has nothing to do with whether they’re good models – it’s whether companies can implement them properly and if they can have their team leaders and managers adapt their leadership/management styles. Everything else is pretty much figured out.

Of course, the benefits of face-to-face meetings and close working aren’t to be overlooked, but the bottom line is: give people the freedom of choice, and they’ll do the right thing for themselves, which in the end will be the right thing for your company.


Re:Imagine Session – From Idea to MVP, From MVP to Product

From Idea to MVP, From MVP to Product

Watch Now!

Is it sufficient to start with idea development if it “looks” that the idea will bring business value? Many would say yes, but the truth is that proper planning must be executed to assess the validity of an idea, which will in turn show potential business or maybe other value to the company engaged in idea or product development.

In the video below, you will see the whole Re:Imagine session from 19.10.2022, in which IT Labs’ Chief Innovation Officer, Blagoj Kjupev, went through all the steps in the idea development process – focusing on listing the basic assessment steps required to have a justification if the idea should be developed as a prototype or MVP, and when the MVP is developed – what is required to have a product that should live and generate sufficient revenue to cover initial investment and running costs. 

This is just one of our Re:Imagine sessions, at which we have experts from various fields and industries, using the sessions as a platform to share their experiences and who dive deep into subjects! 

Topics covered:

  • Idea development 
  • Preparation/planning 
  • Final Preparation Steps 
  • Execute Implementation 


Re:Imagine Session: How to Create a Winning Team with Blagoj Kjupev

How to Create a Winning Team with Blagoj Kjupev

Watch Now!

We started our Re:Imagine sessions with one goal in mind – to give experts, leaders, and people with ideas the platform to share their know-how, experience, and findings – and maybe even find like-minded people to join them on their journey! The sessions are powered by IT Labs – a company with a vision to enable clients to compete through tech while providing a platform for bright heads to grow and develop into top-notch tech professionals.

And here, for you, we got the first one! To share with everyone who couldn’t make it to the session, but would still like to hear from IT Labs’ CIO, Blagoj Kjupev!

This session will give an excellent overview of the required steps to set and monitor a team that will bring success to any project/start-up. Based on Blagoj’s many years of experience, he’ll discuss the possible scenarios from real-life scenarios and how to overcome the most common problems. He’ll also give a great overview of the whole process – from the idea of putting together a team all the way to project execution, all with examples of different team setups.

Topics covered:

  • What is a winning team? 
  • Project team planning 
  • Team overture 
  • Team setup samples 
  • The six thinking roles/models 
  • The “surgeon” approach 


Choosing a Tool to Practice End-to-end Automation

Choosing a Tool to Practice End-to-end Automation


Why do we need automation test sites? 

As many automation frameworks/tools have risen in the last few years, we have more options to choose from when we evaluate which tool is best suited to a given project, and of course, practice makes perfect. 

Practice requires environments prepared for that purpose, and that implies choosing a demo web app that allows us to add data and test workflows without affecting real users or any other collateral effect, playing the role of “Application Under Test”. This demo web app also supports us when preparing a demo or learning a new framework/tool to automate tests or, while assessing a new automation framework to help us decide which is the best one for a given project. 

In this opportunity, we are looking for that project to use as a model (scenarios to test) for our whole QA team, that allows us to build automation suites using different frameworks, starting with Playwright and Cypress. The outcome of this exercise will be used as our IT Labs automation playground. Ideally, this project is open-source and allows us to build an immutable environment, working locally or deploying it in our in-company environments and, if needed, to add improvements to source code in order to achieve a good selectors strategy and add features to increase our testing coverage.  

What are we looking for in automation test sites? 


Usually, we look for a few elements (commonly found in all web apps) as:  

Login/Authentication: to test features which require to be logged as a valid user (right permissions applied) vs public features (available with no authentication needed).
Roles/Authorization: testing features under different profiles and authorization levels (right permissions management). For example: actions that can be performed as admin users but not allowed to regular users.
Forms: Save information and verify that information has been saved accurately.
Modals/Popups: to check success/error messages, alerts, or modal forms to save information.
Upload content: upload content and verify they have uploaded correctly and are available to consult/download such as files and images.
Download content: testing that we can download content generated by web app, such as invoices, reports and so forth.
Mouseover/Tooltips: to check help messages or error messages.
Tables/Grids: to test/search information as products listings, employees, courses and so forth, organized in table or grid formats.
Localization: to test dates and currencies formatting, time zones and languages which depend on countries/region. Also, features that should be available in certain countries/regions.
API: we can test features through REST request, as they are faster than UI and, also, we can automate these requests.
Selector Strategy: when we automate user interface tests, the first thing is to “find” elements in our web app, and then, we chain actions to those elements; this is how we interact with the web app. A selector strategy is the way we “find” and interact with all elements. So, this web app also will allow us to establish a good selectors strategy. Most elements have proper ids and names (which represent the data as username, password, personalID, address, save and submit, instead of IDs randomly generated), class names, attribute data-test or data-test-id (usually do not change over time).
Workflows (e2e use cases): a workflow is a pattern of activity enabled by the systematic organization of resources into processes that transform materials, provide services, or process information. We look for workflows because we do not test isolated components; we test workflows just like our users would. Some examples are banking features (deposits, withdrawals, transfers, create accounts), e-commerce (add products to carts, accounts creation, set addresses and payment methods), human resources (creating employees, requesting PTO, generating reports), and so forth.
Easy to manage (install, run, stop and restart) as our purpose is to work primarily in an automation suite and not get distracted in other kind of issues.
Easy to reset (reverting back to initial state) in order to get predictable test outcome consistently (always).
Easy to maintain in case we want to add more challenging features to be tested.

Automation test sites assessment 

We compared elements and features to determine the complexity of workflows and the selector strategy we can use in a few demo sites created for testing purposes:   

Ecommerce: SauceDemo, Juice Shop and Automation Exercise    

Banking: XYZ Bank, Cypress Real World App and Parabank  

Human Resources: OrangeHRM  

Flights and hotels booking: PHP Travel 

  SauceDemo  XYZ bank  Automation exercise  Parabank  Orange HRM  Juici Shop  PHP Travels  Cypress Real World App 
Login/Authentication  Yes    Yes  Yes  Yes  Yes    Yes 
Roles/Authorization    Yes  Yes    Yes  Yes  Yes   
Forms (save & check)    Yes  Yes  Yes  Yes  Yes  Yes  Yes 
Modals/Popups    Alerts  Yes    Yes  Yes    Yes 
Upload content (files, images)          Yes  Yes     
Download content (files)      Yes        Yes   
Mouseover/Tooltips        Tooltip    Yes  Yes   
Tables/Grids  Grids  Yes    Yes  Yes  Yes  Grids  Grids 
Localization (other than English)            Yes     
Accessibility                 
API      yes      Yes     
Good selector strategy            Yes    Yes 
Good workflow  Yes  Yes  Yes  Yes  Yes  Yes  Yes   

With this assessment phase, we arrived to the final two candidates  Orange HRM and Juice Shop. After further assessment, we chose Juice Shop because it has almost all the features except download files (files are open in another tab or window).  

IT Labs Automation Playground 


An automation playground is a plus when we want to assess different frameworks (writing and running the same test in different frameworks), because it allows us to focus our efforts on the technical capabilities and pros/cons of the tool/framework under assessment with complete impartiality as our Application Under Test (AUT) will be the same. 

We assess in an automation framework features different than the ones we look for in an AUT, such as: 

  • Support for multiple browsers. 
  • Support for interaction with elements in the web app, reading attributes as so on described before as testing strategy. 
  • Support for asynchronous. 
  • Multiwindow support. 
  • Download/upload of content. 
  • Visual testing. 
  • Reporting. 
  • Integration with different CI/CD tools. 
  • Error handling. 

  • Retrying (when fails). 
  • Mocks. 
  • Assertions. 
  • Support for Page Object Model or other patterns. 
  • Organizing suites. 
  • Parallelism. 
  • Parametrization. 
  • Debugging. 

As Juice Shop is an open-source project, you can fork it, as we did with our own automation-playground repository and add new features (such as download files, that it is missing in the original project right now). In that way, our automation playground will not be affected if the project is not available online anymore, and we will not affect any real user or any other side effect.  

We will use this to compare different automation frameworks as we would use the same site to do the test (with most of the features we want in automation test sites). 

We can test:   

  • Login with email and password; and using a Google account as well.  
  • A role for regular users and a role for deluxe membership where you will get discounts and delivery for free.  
  • Upload pictures as photo wall or setting user profile.  
  • Localization as there is a lot of languages available.  
  • Different workflows in a shopping cart such adding products, setting payment details, adding addresses, add reviews to products, send a complaint, a chat for customer support, order history and recycling box.  

Modals and popups, forms, tooltips, tables, grids with IDs, aria-label and placeholders are available to test interactions. We can implement a selector strategy based on IDs, names, css classes, text, links, and attributes. 

Juice Shop is a project created for security testing purposes, so, we can implement security and API testing as well. A good balance to practice automation testing. You can learn more about the challenges here. 

Our discover in our playground 

AS we mentioned before, there are many frameworks to automate tests and we need to choose the one which fits best for our project/product. 

After running a few basic tests in Playwright and Cypress, we can verify the support in following items for each framework: 

Features  Cypress  Playwright 
Support for multiple browsers  Yes  Yes 
Support for interaction with elements in the web app, reading attributes and so on (described before as testing strategy)  Yes  Yes 
Support for asynchronous  Automatic  Yes 
Multi-window/multi-tab support    Yes 
Download/upload of content  Yes  Yes 
Visual testing  Yes  Yes 
Reporting  Yes  Yes 
Integration with different CI/CD tools  Yes  Yes 
Error handling  Yes  Yes 
Retrying (when fails)  Yes  Yes 
Mocks  Yes  Yes 
Assertions  Yes  Yes 
Support for Page Object Model or another pattern  Yes  Yes 
Organizing suites  Yes  Yes 
Parallelism  Yes  Yes 
Parametrization  Yes  Yes 
Debugging  Yes  Yes 
API testing  Yes  Yes 

Playwright 

Playwright can be installed with just 1 command:

Playwright Code Generator

We can start recording a test with 1 command as well (we will bring more about it in future articles):

We can record tests, export them in several languages to include them in our suites.

Selectors Strategy

This is an example of multiple selectors that Playwright allows.

We can also build our selectors which depend on data or generated classes:

Page Object Model in Playwright 

Let’s see an example of login: 

Following the page object model (POM) we have a page login-page.js and the spec file ShoppingCart.test.js where we are using the login page: 

Login-page.js 

ShoppingCart.test.js

Cypress

Cypress can also be installed in a few commands:

It has a user interface where you can configure it, run the tests and inspect elements. You can activate it with the command: 

This is how the user interface looks like:

And this is how a running test looks like: 

Selectors Strategy

This is an example of multiple selectors that Cypress allows. We can also build our selectors which depend on data or generated classes:

Cypress Studio (experimental)  

Page Object Model in Cypress

Let’s see the same example we saw above: login. We have a page LoginPage.js and the spec file shopping_cart.cy.js where we are using the login page. 

LoginPage.js

shopping_cart.cy.js

Speed of Tests

It’s important to mention that both frameworks work without Selenium and Webdriver, they tend to be faster. Cypress runs the tests in 25secs, and Playwright runs the same in 15secs, both in headless mode.
You can check the suites here: Playwright and Cypress.

Conclusion


There are many websites out there (both online and available to be installed locally -open-source projects-) and choosing a tool to learn and practice, or evaluate an automation tool, will be based on your purpose and need. 

It is also worthwhile when we want to compare several testing frameworks and create test suites using different tools and approaches but the same website. In that way we can focus our efforts on the technical capabilities and advantages of the tool/framework under assessment with complete impartiality. 

You need to make sure that the playground project you choose allows you to establish a good locator strategy and a good workflow to be tested (not only interacting with web elements) because from a real-world user’s perspective we do not test components isolated. 

We can use Juice Shop as our playground web app to evaluate different test automation frameworks and to establish our test strategy with the advantage of having an immutable environment, easy to manage and reset guaranteeing consistent outcomes over time (same results in all testing execution cycles). 

The final takeaway is that you need to choose the automation framework that fits best for your project, and this will be determined by the kind of project and features and complexity you need to test. 

Both Playwright and Cypress are easy to install, have wide support from communities, and have all that we usually look for in automation frameworks. They are fast because they are not based on Selenium and Webdriver but still powerful in debugging and integration with several CI/CD tools. Definitely good choices for bringing automation regression into our projects/products. 

Author:

Maria Aguilera


Senior Quality Assurance Engineer in IT Labs


State Management and You

State Management and You

Milan Saric – Technical Lead

In this article we will explore the history of state management, as well as how and when they should be used. It’s my firm belief that proper state management architecture in modern front-end projects is basically 90% of the work, afterwards it’s just simple controllers and CSS. You will find the steps and a flowchart bellow detailing when to use what type of state management, as well as various alternatives to industry standard state managers for all 3 major front-end frameworks.  

History of state management

Since we had complex JS front-end apps, we had a problem, how do we cache/reuse/store data received from the backend? Thus a need for state management was born. The first solution still used today is web storage, colloquially known as Local Storage; it’s a segmented in-browser storage solution of key-value pairs. However, it had a significant downside – a 10MB limit almost across the board.  

Thus a need for more complex storage emerged, and in the early 2010s, a new competitor emerged championed by Apple, Web SQL Database. Yet, it was quickly disposed of in favor of something that wasn’t SQL-related but rather JSON based. That standard was first released in 2015 and is now known as Indexed DB.  

With new frameworks (especially React) came the need for a new type of state management, and consequently, session storage gained traction. It was a simple in-browser storage option that lives as long as the application is alive and dies with the browser garbage collection once you close the tab. Naturally, almost simultaneously, a persistent version of this was created – with the most famous of the so-called stores being Redux. 

 Below, you’ll find various ways to store app data, as well as various ways to use said storage well.  

Web Storage

  • It’s an API supported by every browser out there.  
  • It uses built-in storage that allows you to store usually up to 10MB of key-value pairs. 
  • It’s handy when storing a language setting or other bits of data. However, if you persist a complex store, it will most likely go into local storage.  

Indexed DB

  • This API is an in-browser DB that uses JSON and is indexed by a unique key. While relatively new (since 2015), it’s considered very old and archaic, despite coming out in the same year as the famous ES6. 
  • It’s helpful if you need to store and process massive data sets on the front end. For instance, if you’re creating an Excel clone that does all the processing on the front end, you might want to use Indexed DB.   
  • While the usefulness of Indexed DB is often very niche, it can be the perfect solution

Session Storage

  • The need for this arose as single-page apps came to the fore, especially when components that needed to talk to each other were more integrated.   
  • How do you update an item in a “cart” component from a very nested component, “add to cart” that’s not a direct child of the “cart” component? Well, you update the state/context/redux/whatever your project uses.   
  • In the background, it’s just an event listener for the thing you registered in the related components.   
  • It’s used to store larger objects or when you need to manipulate data on the front end manually. Most frameworks allow built-in libraries that do this. However, those libraries can’t be persisted between sessions. 

Persistent Storage

  • Persisting session storage is possible if a state management library such as Redux is used, and in almost every case, the persisted copy is stored in Web Storage.   
  • When using a library such as Redux, it’s important to structure it well like you would a DB on the backend because having wrong “schemas”, or wrong actions/listeners will always cause unclean spaghetti code and many, many rerenders in React. (Ask me how I know).  
  • This is mainly used when there’s a need for a complex “store” that needs to persist between sessions. Think of a guest cart object in a webshop or anything else as something that can be updated between sessions before going to the backend. 

Apollo GraphQL Client

Apollo has a built-in “store” for caching GraphQL calls that functions very similarly to Redux and other alternatives. It’s a very robust solution if you’re using GraphQL, and I recommend it over any other solution if using GraphQL.  

It can also be persisted and then stored in Web Storage, however, it doesn’t need to be persisted to work.   

When you’re using GraphQL, you probably want to cache the data from the backend to allow a smoother user experience, and you probably want to use the built-in method for that through Apollo Client.  

Why Use It

Almost every front-end application needs some form of state management. If it’s a simple local storage store of a token/browser settings or a very complex Redux store, it’s essential to know when to use what, as not every tool is a hammer in state management.   

If you’re building a complete PWA-compliant application that has complex interactions between components and needs to work well in the offline mode, I recommend using a complex Redux or similar store.   

However, if you’re building a simple social network like a PWA application, you probably don’t need a complex store. Something like just Web Storage and good context design is perhaps good enough.   

However, if you’re building a very complex application with a lot of data processing in the front-end or something that will store loads of blockchain data in the browser, you probably need Indexed DB.  

And if you’re building a genuinely complex monolithic front-end application, you might need all of them in some combination. It’s very project dependent, and no single solution works for everyone. 

Redux vs. Everything Else

Redux is still the industry standard for state management in React, followed very closely by NgRx for Angular and VueX for Vue. However, all of these libraries follow the same basic principles and share the same cons. They are slow, monolithic, and are used by default even if the project doesn’t require them.  

As you’re about to see in the chart below, no state manager ticks all the boxes, and it’s critical to realize what you need for your particular application and if you want to go with the industry standard or try any of the numerous alternatives.  

React

If you need a state manager for React, try any of the alternatives mentioned – I’m sure some of them will fit your needs better than the good old Redux. I recommend Zustand since it ticks most boxes and is both tiny (~1kb) and powerful. 

Angular

Angular has lesspopular state managers, but it’s still worth it to take a look at the alternatives to see if they might fit your project better.  

Note about the charts 

The charts for React and Angular are different because the feature set depends on the frameworks and stores, and there’s a large variety of them.

Note about Vue

Vue has the de facto only state manager in the VueX, and while VueX fits the Vue paradigm quite well, nothing stops you from using MobX, for instance, especially if you have a more complex state that can accommodate two or more similar applications written in anything from Vue to Angular to React and beyond. 

Flowchart

Storage State Management Decision Flowchart 

Conclusion

When designing a new front-end application, it’s imperative that you develop the state management system properly, especially in React. In my opinion, the design of the state management system is 90% of the front-end work. The rest is simple logic and CSS.   

More often than not, you’ll be using a combination of these state management tools, and it’s vital to properly know what’s stored in Redux, what’s stored in context, and what’s stored in the in-component store. This will avoid many unnecessary rerenders, and it will reduce the complexity of the entire app significantly, thus saving countless hours.  

As we’ve seen in the flowchart, every state manager has its purpose, and we will almost always use a combination of a few managers in our app. And no matter what UI framework you use, I’d highly suggest you try one of the alternatives. Especially Zustand if you’re using React. Huge applications with millions of users require complex industry standard “stores”, but the application we write every day will benefit from something more “niche” that requires less resources but still produces the same results. 

The important thing to understand on all these is that sometimes we don’t even need a complex state manager such as Redux, and that often we can use a simpler method to speed up the development process and still arrive at the same destination. 

Author

Milan Saric – Technical Lead


From Deep Love for Tech to Rediscovering his Mojo: The Story of Milos Antic

From Deep Love for Tech to Rediscovering his Mojo: The Story of Milos Antic 

Technical Lead

Anyone who’s ever done something in the tech world will know that the way up is impossible to walk unless you have that deep, burning love for technology and software. Just like our Milos Antic has – from how he made his first steps in the tech world, all the way to how he rediscovered his mojo and passion with IT Labs!

What keeps you motivated at work?

Mostly colleagues, environment, energy that I feel once I sit down in front of the computer. Of course, the project is part of it as well, but for me it’s the most important colleagues.


What drives you? What feeds that flame for learning and creating?

Before everything, my family, the fact that I will become a father and that I need to create a stable future for my family. After that, success, knowledge that I’m getting every day on the project and from my team, the performance that we are making and result of our work.


What annoys you at your job? Something you can’t stand.

When somebody is late on meetings, or when the team it’s not cooperating on a good level, but that’s not the case in the IT Labs.


What advice would you offer to young developers when it comes to loving what they do forever?

Don’t try to be the developer if you don’t love computers and software, otherwise you will start to hate it with the first coding problems. Love is something that keeps you motivated and focused at this job, if you want to join in IT industry just because it’s well paid, you will not much succeed and you will hate it soon or later. People are trying to convince you that you can get a $1000 job with 3-6 months courses, that is impossible, you can get some knowledge but if you want to be a successful developer you need to learn really hard for 12+ hours per day for at least 8-12 months.


What do you like about the working atmosphere at IT Labs?

People, people, people! We have an amazing team, atmosphere, communication so we always have time for fun, random stories, so it is enjoyable and relaxing to be in the team with all professionals from IT Labs. Every problem that we have as a team is extremely easy to solve just because we are solving it together. We have knowledge sessions where we share our knowledge and new founding, this increases your skills incredibly fast. We are working so much with the interns and juniors, I love to see how they progress every day and their transformation into juniors/mediors and impact that they are making after few months is amazing and enjoyable.


The Books That Helped Shape the Tech Leaders of Today – Part 3

The Books That Helped Shape the Tech Leaders of Today – Part 3

Talent and hard work are crucial for making it in the tech world, but for leadership in the industry, one must be ready to not just adapt to the circumstances, but also take a long hard look at oneself.

Leadership is about a lot more than just having the tech expertise and a sharp eye for detail, methods, and processes – it’s about creating connections and finding “gaps” through which you can inspire your team and drive progress and change.

In Part 1 and Part 2 of this series, I focused on books that were more about the organizational side of things, the structure, but in this one, I’m focusing more on shelling out the gems that are the true drivers of change – the change that comes from within ourselves.

Enjoy 🙂

Trillion Dollar Coach: The Leadership Playbook of Silicon Valley's Bill Campbell by Eric Schmidt & Jonathan Rosenberg

Description: A book that’s all about Bill Campbell, his life, his mindset, his leadership style – all combined nicely to provide the perfect balance between a personal story, and an educational masterpiece. 

How it can help aspiring tech leaders: Sometimes just shooting out instructions and methods doesn’t work, as they lack context. The personal aspects in this book can help you understand better why his way worked, learn about the methods, and the most important thing of all – decide if this is something you might be interested in. 

Trillion Dollar Coach: The Leadership Playbook of Silicon Valley's Bill Campbell by Eric Schmidt & Jonathan Rosenberg

Description: A book that’s all about Bill Campbell, his life, his mindset, his leadership style – all combined nicely to provide the perfect balance between a personal story, and an educational masterpiece. 

How it can help aspiring tech leaders: Sometimes just shooting out instructions and methods doesn’t work, as they lack context. The personal aspects in this book can help you understand better why his way worked, learn about the methods, and the most important thing of all – decide if this is something you might be interested in. 

The 4-Hour Work Week: Escape the 9-5, Live Anywhere and Join the New Rich by Timothy Ferriss

Description: What can effectively be described as a guidebook for people who want to live their desired life, ‘The 4-Hour Work Week’ does an excellent job of putting things into perspective for people, helping them find that way, while empowering them to stick to their plans. 

How it can help aspiring tech leaders: Lifestyles, ideas, urges – these all are important to development and growth, but the basis for all of them to bear fruit is to learn how to think for yourself and break free from the norm. Tech leaders are disruptors, after all. 


The 4-Hour Work Week: Escape the 9-5, Live Anywhere and Join the New Rich by Timothy Ferriss

Description: What can effectively be described as a guidebook for people who want to live their desired life, ‘The 4-Hour Work Week’ does an excellent job of putting things into perspective for people, helping them find that way, while empowering them to stick to their plans. 

How it can help aspiring tech leaders: Lifestyles, ideas, urges – these all are important to development and growth, but the basis for all of them to bear fruit is to learn how to think for yourself and break free from the norm. Tech leaders are disruptors, after all. 

The Art of the Start: The Time-Tested, Battle-Hardened Guide for Anyone Starting Anything by Guy Kawasaki

Description: Science is behind all the good moves leaders do, but the art of it is the connective tissue that brings it all to life, giving it meaning and purpose. In this book, you have an end-to-end guide on how you need to approach and execute various tasks – from start to completion.

How it can help aspiring tech leaders: Grand ideas are the backbone of anything meaningful that happens in the world, but turning that idea into something tangible and moving? This book contains some great ideas on how you can do it.


The Art of the Start: The Time-Tested, Battle-Hardened Guide for Anyone Starting Anything by Guy Kawasaki

Description: Science is behind all the good moves leaders do, but the art of it is the connective tissue that brings it all to life, giving it meaning and purpose. In this book, you have an end-to-end guide on how you need to approach and execute various tasks – from start to completion.

How it can help aspiring tech leaders: Grand ideas are the backbone of anything meaningful that happens in the world, but turning that idea into something tangible and moving? This book contains some great ideas on how you can do it.


Team of Teams: New Rules of Engagement for a Complex World by Stanley McChrystal, Chris Fussell, and David Silverman

Description: A bit of an unorthodox pick, but a book that’s much more about leadership than it is about military action and intricacies that revolve around it. Stanley McChrystal’s approach is one that defines the ills of today’s organizations – resistant to change, but badly in need of restructuring and reshaping in order to grow.

How it can help aspiring tech leaders: The real change must always come from the top – and the story in this book is all about that, supporting the old adage – be the change that you want to see around you.

Well, CTO Confessions is much more than just insightful and educational books - it's also about leaders, their path to becoming who they are, and the valuable lessons they learned along the way. Dive into one of our 100 episodes 

Right Here

Takeaway

When talking about difficult truths and difficult decisions, one must remember that the strain is all about finding the right circumstances and environments to execute and deliver them, rather than worry about the outfall of it all. 

Stay tuned for part 4! 


TC Gill


People Development
Coach and Strategist