Provisioned Concurrency for AWS Lambda functions

AWS Provisioned concurrency – why use it

Elvira Sorko

Senior Back End Engineer at IT Labs

In my company, we’ve recently been working on a serverless project that is using AWS Lambda functions for backend execution of REST API Gateway. But with Lambda functions, cold starts were our greatest concern. Generally, our Lambda functions are written with Java and .NET, which often experience cold starts that last for several seconds! Reading different articles, we found that this was a concern for many others in the serverless community. However, AWS has heard the concerns and has provided the means to solve the problem. AWS in 2019 announced Provisioned Concurrency, a feature that allow Lambda customers to not have to worry about cold starts anymore.

So, if you have Lambda function and just deployed as a serverless service, or if it has not been invoked in some time, your function will be cold. This means that when you invoke a Lambda function, the invocation is routed to an execution environment to process the request. If a new event trigger did occur to invoke a Lambda function, or the function has not been used for some time, a new execution environment would need to be instantiated, the runtime loaded in, your code and all of its dependencies imported and finally your code executed. Depending on the size of your deployment package, and the initialization time of the runtime and of your code, this process could take more seconds before any execution actually started. This latency is usually referred to as a “cold start”, and you can monitor it in the X-Ray as initialization time. However, after execution, this micro VM that took some time to spin up is kept available afterwards for anywhere up to an hour and if a new event trigger comes in, then execution could begin immediately.

Our first try to prevent cold starts, was to use warm-up plugin Thundra (https://github.com/thundra-io/thundra-lambda-warmup). Usage of this warm-up plugin in our Lambda functions requires implementing some branching logic that determines whether this was a warm–up execution or an actual execution. However, while the warm-up plugin didn’t cost anything, except the time spent on implementation in our existing Lambda functions code, the results were not satisfactory.

Then we decided to set aside a certain budget, as AWS services costs money, and use the AWS feature Provisioned Concurrency. As the AWS documentation says, this is a feature that keeps functions initialized and hyper-ready to respond in double-digit milliseconds. It works for all Lambda runtimes and requires no code change to existing functions. Great! That’s what we needed.

How it works

When you enable Provisioned Concurrency for a function, the Lambda service will initialize the requested number of execution environments so they can be ready to respond to invocations. With provisioned concurrency, the worker nodes will reside in the state with your code downloaded and underlying container structure all set. So, if you expect spikes in traffic, it’s good for you to provision a higher number of worker nodes. If we have more incoming invocations and provisioned worker nodes can’t satisfy these requests, then the overflow invocations are handled conventionally with on-demand worker nodes being initialized per the request.

It is important to know that you pay for the amount of concurrency that you configure and for the period of time that you configure it. When Provisioned Concurrency is enabled for your function and you execute it, you also pay for Requests and Duration based on the prices in the AWS documentation. If the concurrency for your function exceeds the configured concurrency, you will be billed for executing the excess functions at the rate outlined in the AWS Lambda Pricing section.

The Lambda free tier does not apply to functions that have Provisioned Concurrency enabled. If you enable Provisioned Concurrency for your function and execute it, you will be charged for Requests and Duration.

Configuring Provisioned Concurrency

It is important to know that Provisioned concurrency can be configured ONLY on Lambda Function ALIAS or VERSION. You can’t configure it against the $LATEST alias, nor any alias that points to $LATEST.

Provisioned Concurrency can be enabled, disabled and adjusted on the fly using the AWS Console, AWS CLI, AWS SDK or CloudFormation.

In our case, we selected the alias LookupsGetAlias that we keep updated to the latest version using the AWS SAM (Serverless Application Model) AutoPublishAlias function preference in our SAM template.

Provisioned concurrency enabling can take a few minutes (time needed to prepare and start the execution environments) and you can check its progress in the AWS Console. During this time, the function remains available and continues the work.

Once fully provisioned, the Status will change to Ready and invocations are no longer executed with regular on-demand worker nodes.

You can check that invocations are handled by Provisioned Concurrency by monitoring the Lambda function Alias metrics. You should execute the Lambda function and select the Lambda function Alias in the AWS console and go to monitor Metrics.

However, as before, the first invocation would still report as the Init Duration (the time it takes to initialize the function module) in the REPORT message in CloudWatch Logs. This init duration no longer happens as part of the first invocation. Instead, it happens when Lambda provisioned the Provisioned Concurrency. The duration is included in the REPORT message here purely for the sake of reporting it somewhere.

But, if you enable X-Ray tracing for Lambda function, you will find that no initialization time is registered, only execution time.

If you trigger Lambda function via Amazon API Gateway using the LAMBA_PROXY as Integration request, you will need to set Lambda function Alias in the Lambda function reference.

Another important thing to keep in mind when using Amazon API Gateway, Lambda functions and you want to prevent cold starts is to provide Provisioned Concurrency to all Lambda functions used in the API GW. For example, if you are using custom Authorizer in the API GW Authorizers, you should do the following:

  • Configure Provisioned Concurrency on custom authorizer Lambda function Alias
  • Use Lambda function Alias reference in the API GW Authorizers.

  • Set Permissions with Resource-Based policy on custom authorizer Lambda function to be able to invoke with defined API GW.

You can track the performance of your underlying services by enabling AWS X-Ray tracing. Be aware of AWS X-Ray pricing.

Otherwise, end user will experience longer load time, caused by custom authorizer lambda function initialization. We can see this in the AWS X-Ray traces by enabling X-Ray tracing on API GW Stage.

Scheduling AWS Lambda Provisioned Concurrency

For our project purposes, we found that spikes are usually during the day, from 10 am until 8 pm, and there is no need for provisioned worker nodes during the night. That’s why we decided to use Application Auto Scaling service to automate scaling for Provisioned Concurrency for Lambda. There is no extra cost for Application Auto Scaling, you only pay for the resources that you use.

We are using AWS SAM to schedule AWS Lambda Provisioned Concurrency and to deploy our application. The following code shows how to schedule Provisioned Concurrency for production environment in an AWS SAM template:

In this template:

  • You need an alias for the Lambda function. This automatically creates the alias “LookupsGetAlias” and sets it to the latest version of the Lambda function.
  • This creates an AWS::ApplicationAutoScaling::ScalableTarget resource to register the Lambda function as a scalable target.
  • This references the correct version of the Lambda function by using the “LookupsGetAlias” alias.
  • Defines different actions to schedule as a property of the scalable target.
  • You cannot define the scalable target until the alias of the function is published. The syntax is <FunctionResource>Alias<AliasName>.

Conclusion

The use of serverless services, as AWS Lambda function, and their downsides, affects the end-user experience. Cold starts impact your serverless application performance.

Provisioned Concurrency for AWS Lambda function helps to take greater control over the performance and reduce latency in creation of execution environments. In combination with Application Auto Scaling, you can easily schedule your scaling during application usage peaks, and optimize cost.

Enjoy your day and keep safe!

 

Written by:
Senior Backend Engineer at IT Labs


IT Labs wins the Gold!

ISTQB – Gold Partner status means top-notch testing

Software bugs beware!

The software testing team at IT Labs has brought home the gold — as in, Gold Partner status awarded by the International Software Testing Qualifications Board, or ISTQB.

This ISTQB partnership is an indicator of the high-level skills and competencies of the 200-member team at IT Labs, which has a longstanding commitment to the continual growth and development of its team members.

“What this recognition means in real terms is a powerful combination of defect prevention, pre-test defect removal, and better testing that avoids costly and embarrassing bugs in software,” says Ilija Mishov, founding partner of IT Labs. “That saves time and improves quality.”

Testing certification brings software quality awareness, best practices, and context for developers, testers and business analysts as they work together in the Agile environment.

“It makes a huge difference to have objective metrics to guide and control a project and accurately report the status, as well as having defined entry and exit criteria,” Mishov adds. “Also, this level of certification means a testing team is able to meet and overcome some of the obstacles to high quality – incoming quality, time, manpower, and so on – because they’re now equipped with tools and techniques to address those issues. This arsenal of testing techniques has a direct and positive impact on the bottom line.”

The ISTQB Partner Program comprises four levels of partnerships (Silver, Gold, Platinum and Global), and the partnership level of an organization is determined through the number of certification points it has accumulated.

For more information, visit http://www.istqb.org/partner/.


The Secret to Improving ROI on Software Development Projects

For tech leaders having an agile software development plan for their enterprise — that is future proof to COVID-19, Brexit, and is available when called for — is probably needed now more than ever before for UK businesses.

Many businesses were able to carry on as normal through the disruption caused by last year’s two major antagonists. However, many businesses had to close or go into hibernation, furloughing employees and even parting ways with some.

John James Abadom

Business Partner at IT Labs

As businesses re-emerge from the cold thaw, a dynamic approach is needed for organizations to fare well in 2021, especially by upscaling and moving at speed.

However, in the UK we are facing a skills shortage, and IR35 is officially activated.

Hiring the right talent with the necessary skills, and that is flexible, is crucial for achieving and maintaining agile software development. This delivers high levels of performance within an organization, improving employee productivity and customer satisfaction by applications and systems being made highly available.

Businesses will have placed various programs and initiatives on hold that will now require additional resource planning and Human Capital Management (HCM) to deliver success.

It will be imperative for organisations to have processes such as ‘Software Delivery Life Cycle’ (SDLC) and strategies that embed the use of cross-functional teams, which can improve productivity for the betterment of your staff and customers and help your organizations flourish in 2021.

Brexit is here, and UK organizations that rely on EU IT talent might have to revise, or review, their strategy for sourcing software development teams at scale, and at speed, to deliver business outcomes.

Solutions today need to offer organizations the ability to be dynamic, creating super teams that are highly skilled at using innovation and technology to advance their organization, whether by adopting a Cloud-First approach, embedding ‘Next-Gen’ technology such as AI, RPA, ML, Cloud, etc… or by adopting agile frameworks and methodologies (Scrum, Lean, Kanban, XP, Crystal, DSDM and FDD).

The UK and USA signed a joint Customs Mutual Assistance Agreement (CMAA) late last year, which is aimed at enhancing bilateral approaches that secure and facilitate lawful trade between both countries. This declaration has opened opportunities for British businesses wanting to launch into new markets, or even consider global expansion as their next agenda on their five-year business/IT strategy plans.

Will businesses in the UK be agile enough to consider — and even take advantage of — this agreement and opportunity?

As we navigate 2021, there is a sense of required dynamism and the need to have access to high-performing, purpose-driven software development teams.

Developing relationships with experts like IT Labs might well make the difference for your organization in 2021.

Wouldn’t it be great to face this year with confidence in your company’s ability to further improve the ROI on software development projects?

Should you want to find out more about how IT Labs is working with FTSE 100 and mid-size companies, feel free to reach out to me at john.abadom@it-labs.com to schedule a short discovery call.


Should you be moving to Micro Frontends?

Kiril Zafirov

Front End Engineer at IT Labs

This article describes how to achieve frontend architectures using multiple frameworks and libraries with a particularly important goal in mind. i.e., combine into a single web application while displaying one result (as illustrated in Figure 1), and at the same time not affecting the user in terms of how he sees the page.

The technique of micro frontends is the process of decomposing a large frontend monolith application into smaller chunks that can be developed, tested, and deployed independently while still appearing to the user as a single product.

Figure 1: Multiple micro frontends combined into single page

What are micro frontends

"An architectural style where independently deliverable frontend applications are composed into a greater whole"

– Martin Fowler –

The idea behind micro-frontends is to present the business subdomain and allow the team-independent implementation with the same or different technology choices, as illustrated in Figure 1. The web application is a composition of features owned by different teams, each with different domain problems. The web development’s front end can (and should) follow the same structure. This is where the micro frontends come into play. Each of the micro frontends can be independently developed and tested in terms of features and responsibility.

Micro frontend architectures’ requirements are a shared codebase, preferably in JavaScript, managing routing and user-sessions. Additionally, maybe a thin collection of style sheets, a collection of separate modules “mini-apps,” various built-in frameworks and possibly stored in different repositories, and a deployment system that bundles all those modules together and deployed to a server.

We will touch on the following in this article:

  • What are the pros and cons of this approach
  • The different approaches/implementations that can be taken to build such architecture
  • Cross-Application Communication
  • Routing

Reasons why you should move to micro frontends

As software architecture evolves, the front end should follow that evolution as well, as shown in Figure 2. If we look back, the applications were built as large monoliths. This slowly progressed to microservices, but the UI got stuck as one large monolithic codebase, structured around the solution as a whole and not around a certain domain. This way, even the smallest of changes that needed to be deployed would’ve meant redeploying and running the pipelines for the whole front end again.

The proposed approach of micro-frontends came about naturally by following the microservices pattern,

Figure 2. Software Architecture from Monolith to Microservices

where it would be dividing the teams as independent owners of the whole feature end-to-end.

Each team would be responsible for the creation of the UI portion of the application, styling, code, layout, architecture, backend, devops, and connection to the database.  It has its own build and test pipelines and CI/CD procedures. This enables the following:

  • Better scaling capabilities of the frontend application
  • Fewer communication issues between the multiple teams for one feature change
  • Reduced code and testing complexity
  • Aids with the application being more resilient to non-working or broken portions
  • Helps to overcome the law of diminishing returns

Figure 3. End to end teams with micro frontends

Several companies and projects are running into the issue of having old, large codebases demanding full rewrites. These were probably the side effect of pressure to get faster to production and market, instead of evolving the product for maintainability. This is creating a situation that can be seen as a time-consuming rabbit hole where developers get weighed down by old tech stacks or the large monolith’s sheer complexity and subsequently unable to deliver new features to customers without being held back.

And usually this is where incremental updates start with having one team getting the first feature as a micro frontend delivered to production and the rest of teams will follow. The end-game is that we are free to make case-by-case decisions on individual parts of the product and be able to make the incremental upgrade to the existing architecture. Each micro frontend can be upgraded when needed or makes the most sense and be redeployed as a separate portion, rather than having to upgrade and migrate everything at once. If we want to experiment or do the new feature in the latest technology that is still in the experimental version, we can do that in a more isolated fashion than we could before.

The source code being delivered for each micro frontend is much smaller than the source code for the whole monolith which is also a plus because you can implement lazy loading and improve the performance of each service separately and thus on overall on the application and the user experience. The code is isolated and may be placed even in different repositories. There is a clear line around the bounded context and what should the application contain according to that context. Micro frontends architecture forces your decisions to be explicit and deliberate about data and events flow between portions of the application.

Independent deploy ability of micro frontends is key to success! This reduces the scope of any given deployment and all the risks that comes with it. Autonomous teams have full ownership of everything and they deliver the value to users which enables them to move quickly and effectively and as described in Figure 3. Teams need to be formed vertically for each functionality on the contrary to technical capabilities.

Monoliths are not bad but at times they are hard to manage. In a large monolith with pieces tightly coupled and interdependent, whatever change, upgrade, update, fix, no matter how small it is it demands the whole monolith to undertake the change and be released, and in cases if there is sub-dependents on the monolith they will also be affected.

Benefits

Some of the key benefits of micro frontends include:

  • Small – Smaller, cohesive and better maintainable codebases
  • Autonomy – Autonomous teams can develop, test and deploy independent features from start to end on themselves.
  • Manageability -The ability to rewrite, update or upgrade parts of the frontend in a more incremental way than it was previously possible
  • Ownershipability for a single team to decide and take responsibility for a feature

How to micro frontends

In order to be successful with micro frontends there a number of cases that need to be discussed and decided. From an implementation point of view, there are certain principles that need to be followed

  • Define – Each micro frontend needs to be defined around a business domain or a feature. Model around the business domain
  • Compose – How each micro frontend is going to be composed
  • Route – How is it going to be called or routed to
  • Communicate – How is it going to communicate with the rest of the application
  • Decentralization – Separate each micro frontend in its own repository , create independent pipeline as you are working in a single independent application
  • Orchestration – bringing all the micro parts to work together
  • Independent deployment – The team owning a micro frontend should be able to independently work, update, deploy, redeploy the application without touching on any of the other micro frontends.
  • Isolation of failure – When one micro frontend is not working properly or down that should not affect the other existing applications.

Before starting developing and architecting a solution we should also have in mind that the solution that we are going to build should be technology agnostic.

  • All of the code that is going to be written should be isolated and independent per micro frontend
  • Each team should posses its own prefixes and they should not come into conflicts with other teams
  • Stick to the native browser features and do not go and invent your own
  • The application that is going to be built should be as resilient as possible (Universal Rendering and Progressive Enhancement to improve perceived performance).

There are implementations ways of achieving micro frontends and we will be discussing some of them next.

Figure 4 Micro Frontend Techniques

There are two approaches to micro frontends based on the type of runtime they have and both with its sub-approaches. As the name suggests, these are being divided based on the environment the micro frontend has and if its being shared between multiple micro frontends a.k.a shared runtime or does it has its own separate runtime.  This two further branch out as it is being displayed in Figure 4.

Shared Runtime

In this approach the runtime of the application is being shared between the micro frontends. Thus we might conclude that if there are two or more micro frontends in the same page and one of them is doing some heavy computation or requires the main thread more, this might cause blockage for the other micro frontends that are on the same page.

Web Component

Pros of this approach are :

  • Web components are more or less encapsulated depending on if Shadow DOM is used or not.
  • Leverage common assets and consistent look and feel.
  • Easy to consume shared code and reduced overall amount of code that needs to be shipped (also prevents code duplication).
  • SEO and A11y are being treated as any other HTML code.
  • Fully framework agnostic and can be used as both web app or mobile hybrid application.

Cons to this approach are:

  • Bad support of older browsers (using pollyfills).
  • Initializing and bootstrapping multiple components in a page can cause performance impact.
  • If the application is bundle as a whole, any small change can trigger the whole build/deploy cycle for the whole application.

Framework Based Components

These are usual framework build controls and can be built with any of the existing or the framework to come. The challenges that need to be overcome in order for this approach to work are the vendor lock-in, they are difficult to migrate and it is extremely difficult to combine with multiple frameworks. They are not tech agnostic and they are hard to be build as autonomous features.

Transclusion

This includes applications that are being rendered at the server side using various techniques to do server side rendering and the combination of various applications in order to be delivered as a single page. The benefits of this approach are simplified client side processing and user experience, but the cons to this approach is that there is no native way of doing it and that it slows the overall page.

Separate Runtime

In this approach each micro frontend has its own runtime and it is fully independent of the other micro frontends. All of the micro frontends should be able to run in parallel without any taking the main thread and blocking the others.

MicroApps

When using the microapps approach tend to build features horizontally by vertically dividing teams, so in terms of meaning when you start developing the micro frontend respect the tradional development with embracing the javascript ecosystem and dynamic rendering, whilst investing up front in setting up teams structure and overcoming testing and scalability challenges and also dependency management.

With micro apps the user experience is slightly off because each application is isolated and has its own styles, framework, team and code logic, so there might be places where UX might be off. Other then that micro apps reap all the benefits from this approach meaning they are autonomous, tech agnostic, value and microservice driven, and they are being owned by a team. The combination of the application can be done on both the frontend side and on the server side and this will change complexity of the application transfering the complexity to the side that is going to be doing the combination. If done on the client side browser would include the content using AJAX and this reduces the backend complexity but it will introduce huge front end complexity and performance problems.

This approach is also not tech agnostic and tends to deliver bad user experience:

IFrames

  • Pros of this approach are:
    • That the team developing the application can be fully independent also in terms of choosing their own technologies and cycles

    The application is fully encapsulated in the iframe, so it does not affect The Host javascript or css.

    Cons to this approach are:

    • A lot of duplicated code if more then one micro app is initialized in a single page and this is mostly because assets, fonts, styles cannot be shared between host and app
    • Routing can become very complex
    • Difficult internationalization, preservation of unified styles
    • Additional code to handle iframe resize and problems that come with iframes
    • Not so much SEO and A11y friendly

    No matter what of the upper approach you would be taking, Orchestration for bringing everything together is needed in order to combine all the micro-parts to be functioning and working together. This can be assured with having a dedicated team to do just that and that team is called ‘The Host’. This team is in charge and responsible for orchestration and composition and is responsible for

    • Configuration for initialization
    • Routing
    • Communication between components
    • State Management
    • Providing commons/shared code
    • User triggered event-based API’s

    In order to dive deeper into micro frontends there are a number of useful API’s that can excel the composition of micro frontends.

Common considerations and downsides for all micro frontend implementations

Some micro frontend implementations can lead to duplication of dependencies, increasing the overall size bundle of the application and the bytes the user must download. As a caution that you should be also aware is because of the team autonomy each team can work in a separate fashion and that can cause team fragmentation.

Operational and governance complexity

As number of micro frontends grows so does proportionally the number of repositories, tools, build/deploy pipelines, servers , domains etc. So, before continuing further, code quality and consistency should be agreed upon, the governance of the teams should be assigned, automation for all the processes should be provisioned, and the processes set should be able to scale.

When you choose micro frontends, by definition you are opting to create many small things rather than one large thing. You should consider whether you have the technical and organizational maturity required to adopt such an approach without creating chaos.

 Cross-Application communication

One of the most common questions regarding micro frontends is how do we make it available for them to communicate with each other. And the saying goes that we should keep it to a minimum and if they still need to communicate, group them and bundle them together because with high communication frequency they should be part of a single piece. With each communication connection we add between them we introduce a dependency between them which we initially were seeking to avoid. Anyway this wouldn’t be a valid communication section if we didn’t mention a number of communication ways so:

  • Custom Events – They allow micro frontends to communicate indirectly which has a good side that minimizes direct contact and coupling, but also on the bad side it is harder to determine where the event originated from and enforce a contact that now exists between the micro frontends
  • Event Bus – There is a custom event bus strategy that allows for the creation of the event bus on “The Host” micro frontend and importing it the micro frontends that need to communicate with each other
  • Backend – Communicate through push and pull based communication via an API connection through the backend
  • Routing – Address bar as a communication Mechanism

No matter the approach that we choose we should strive to have our micro frontends communicate by sending messages or events to each other, and avoid having any shared state.

Routing

It is best to have a separate page for each micro frontend and not to mix them too much on a single page. So the recommended way of handling the routing is to give the control to “The Host” micro front end and he is responsible for doing the navigation and loading of the bundles.

https://host.com/Team-A

https://host.com/Team-B

https://host.com/Team-C

Testing

Testing each micro frontend should be easy and simple as testing a monolith with the exception that not a lot of external dependencies and connections are required.

Existing Framework supporting micro frontends

The framework that we used in our example — as of this writing, one of the best out there —  was Single Spa (Micro frontends approach that is composing multiple SPA’s together built by Canopy) with the support of System.js where you can define a single root micro frontend that is going to provide the previously talked “The Host” capabilities to all the rest of the applications. Some of the rest are :

  • Bit – which is component-based approach. Different teams can build, publish and expose their components independently, while you can also integrate and compose independent components together.
  • FrintJs – It lets you load apps coming in from separate bundlers, gives your applications a structure, and handles routing, dependencies and more. (mostly for react)
  • Mosaic – Mosaic is a set of services, libraries together with a specification that defines how its components interact with each other, to support a micro-service style architecture for large scale websites.
  • Podium – server side composition of micro frontends
  • Polymer – Web components approach. This is a Google-owned project.
  • OpenComponents – is an open-source, “batteries included” micro frontends framework.

Micro frontends – Demo project sample

We will be using the Single Spa approach to building a demo micro frontends application.

The application that we are going to build is displayed on the following image:

Figure 5: Micro frontend demo application

There are two types of highlights in the figure above and the red highlight is for the Navigation bar application which will be active all the time together with the root application – “The Host” and the rest of the applications are highlighted in green and they are as the name suggests Account Settings micro application built with Angular v10, Admin micro application also built with Angular v10 and Users micro application build with React v16.

Here you can have at least two more micro applications based on the architectural decisions that you need to make and which approach should you choose. You can have application with shared libraries and resources and also a micro app that will import the general styles for all the micro frontends. In our approach we choose not to use any shared styles, libraries or modules in order to not have any coupling between the micro applications.

Create and configure single-spa app

In order to start with developing the micro frontends applications you need to have single spa installed globally (or locally on your machine). In order to install it, type the following command in your command prompt:

npm install —global create-single-spa

Assuming that you are already in the folder that you want to start working with micro frontends you can go ahead and type in:

// Creating the single-spa app       
npx create-single-spa

if not, you can use the following commands to create a directory and navigate to it from the command prompt:

// Creating the folder for all projects
mkdir microfrontends
cd microfrontends

// Creating the root app folder
mkdir root-config
cd root-config

and then type the command for creating the single spa root application:

// Creating the single-spa app       
npx create-single-spa

So, after running this command you will be prompted to fill out a number of additional inputs via the command line and you should select this according to your need (you can see on the Figure 6 bellow for information on how the prompt looks like).

For Directory you can type free text to create a directory for where you want the cli to generate the new application,  for new project you can select one out of three options that are there

  1. single-spa root-config (you can have only one of this kind)
  2. single-spa application / parcel
  3. in – browser utility module( styleguide , api ,cache , etc) as shown in the figure below:

Figure 6: single-spa app configuration

Some of the other questions that you are asked are which package manager you would like to use and you can choose npm or yarn, will this project use typescript and you can choose Y/N, if you would maybe like to use the Single-spa layout engine which is very useful it asks for an organization name and a project name and you are done.

Figure 7: single-spa app additional configuration

The important one is the second one which asks you to Select type to generate? and for that you should enter single-spa root config in order to generate the root micro application.

After generation of the root config, go ahead and for each application create a new folder to put the micro application in and repeat the step of:

npx create-single-spa

you should now select:

single-spa application/parcel

and for framework you can choose which one you wish to use.

Repeat this step for all the applications that you need (Account Settings, Admin, users)

When you finish with the installation of each application in the console logs you see the following output:

Figure 8: single-spa creation output

You can choose to start it locally or follow the steps 2, 3 and 4 in order to test it in the browser in the single spa playground.

We used System.js to create import maps for all the micro frontend applications that we needed and imported them into the root config. For production and for development use these can be set to be loaded dynamically.

System.js allows us to import a module over the network and map it to a variable name.

Figure 9: System.js configuration

Each micro frontend application should have different ports.

App configuration

In order to register the application you need to define it in the root-config.js .

Figure 10: App configuration – root-config.js

All of your micro frontend’s applications must be registered in this file so for each application we would have a similar registerApplication function call like the one shown below. The name usually follows the pattern of “@organization/appName”.

We used eev for communication between the micro frontend applications and you can add a number of custom properties based on the needs of the organization.

To define cases where you want them to be valid only for certain environment you can wrap them in an “if” statement following the pattern shown in the figure below (This is in the index.ejs file in the root-config application).

Figure 11: Environment configuration

For the layout of the application, we used single spa layout which is a helper library from single spa that allows us to write template in the head of the html document in order to specify the layout of the application:

Figure 12: single-spa layout

If you want to checkout the full source code of this example you can do that here.

Single-Spa wrap-up

Single-Spa supported with the optional helper package  single-spa-layout  is a great framework and you can do a lot with it. It provides micro apps layout, routing, lazy loading, top level routing API controls, apps out of the box.

It supports most of the existing popular frameworks and libraries out there (at the time of writing this article) so that you can go ahead and create a new application add single spa to it and transform your application in a micro application. Because it has a lot of features, the best way to learn more about the framework is to go through the official documentation.

You can access the full source code of this example here. Have a great micro-frontend-programming!

For more information on how to proceed, go here.

Conclusion

Be mindful and use architecture patterns when needed. There are valid use cases for micro frontends, where they are probably the best solution, but also there are use cases where micro frontends are just a burden and too much of a complexity without any real benefit.

“Architecture is aways a trade-off – just find the right approach based on your context”

Luca Mezzalira –

To make micro frontends possible you need at a bare minimum:

  • Solid event driven strategy
  • A team in charge of orchestration, routing and commons
  • Well documented and defined style-guide
  • Performance budget and mechanism in place to accelerate load

CONTACT US




    By submitting your information, you are automatically accepting the Privacy Policy and Terms and Conditions of IT Labs. The information submitted to IT Labs will not be used by our partners and will not be shared to other Companies to be used in Marketing purposes.


    Deep dive into IT Labs' recruitment process with Ana and Biljana

    They are the first faces you will probably meet in IT Labs, and there is a reason for it. Biljana Stefkov and Ana Georgieva have a major role in the company’s growth by recognizing the talent that’s a good fit for our high-performing teams. You will immediately feel comfortable in their presence because they are a real embodiment of the company culture – professionals that are also kind-hearted people.    

    And they are the right people that can explain and clear the air on much confusion around the recruitment process. We had a wonderful conversation on different important topics related to recruitment in general, and how the process of recruitment looks like in IT Labs. It has meaningful insights that can help you prepare and make the right impression, so take a deep dive and read it.

    Biljana Stefkov

    Senior Recruiter

    Ana Georgieva

    Recruitment and Employee Engagement Specialist

    Why did you choose this profession? Was it a life calling? 

    Ana: I think that I defined my career path early in my high school days, but I wasn’t sure what it meant back then. I started volunteering in the local NGOs led by the desire to be the voice of the voiceless, a friend of the lonely, and shelter for the unprotected. And as the saying goes, one thing leads to another, I started working as a social worker, but then I realized that I love business as well. Long story short, this is how I became part of the IT Labs HR team.

    Biljana: I’ve always wanted to help people. By being a recruiter, that’s what you do. On the one hand, you help people find great jobs, and on the other, you help the company or client find great people. Seeing the creation of a long-lasting successful relationship is something that fulfills me.  Years ago, I became interested in HR in general, and during my career, I was involved in a few of the streams covered by HR, but recruitment stuck close to my heart. The connections you create, the people you meet, the relations you see. Everything plays its part in deciding why I choose to work as a recruiter.  I also see my personality as a mix of equal parts of creativity and drive for analytics. And found recruitment as THE profession that combines those two daily.

     

    How do you break the ice with a candidate? Do you have a trick in your sleeve? 

    Biljana: I see the interview as a conversation with a smart, mature person who is great at what they do and is also aware of why we are having the conversation.  So, in this case, I don’t necessarily see the need for having an ice breaker. When you know why you are there and know the discussion subject, it comes quite naturally to have the conversation. The main idea of having a quality talk is to listen to the candidate carefully and skillfully direct the conversation.

    Ana: When I was a beginner, I was trying to introduce myself more formally and professionally. But, as time went on, I realized that the perfect mix between being professional and friendly to the candidate is the key to leading the candidate towards a fruitful and successful recruitment process. The candidates should be aware that the recruiters are their friends and the bridge between them and the hiring managers. After all, we have the same goal – to hire them.

     

    What is your general impression – are people afraid of interviews? Can you suggest something that can help them shake off the anxiety? 

    Ana: Work on your attitude. I am not saying that you should be overconfident, but everyone enjoys having a conversation with people who have a winning attitude. Don’t overthink possible interview scenarios, prepare yourself (learn more about the position and the company), and go with the flow.

    Biljana: I think people generally are not afraid of interviews. At the beginning of the conversation, it might come a bit odd to start sharing professional and personal aspects of one’s life with someone you’ve just met. Still, it’s the recruiter’s role to create an environment that will make the candidate feel comfortable and safe.

     

    Whats your favorite question to ask? 

    Ana: I don’t have favorite questions, although I always want to learn more about candidates’ favorite projects. In my opinion, it’s vital to learn about their points of interest, such as technologies, challenges, or what kind of teams they want to work in. Having this conversation can lead you to the conclusion if your company culture matches the candidates’ expectations.

    Biljana: Each person is unique, and so is the conversation (interview) you have with them. I don’t have any favorite questions that I ask. The questions depend on the candidate’s story and the type of connection you create during the interview.

     

    How would you describe the recruiting process of IT Labs? 

    Biljana: Process-driven and flexible 😊. That’s what I love about IT Labs. It has its defined ways of how a quality recruitment process should look like. Even though we follow it in most cases, it is flexible and able to be modified to achieve the best results for all parties involved (company and candidate).

    Ana: I would agree on this one with Biljana. The perfect definition is indeed process-driven but flexible.

     

    Why should a candidate become part of IT Labs? 

    Ana: If you want to work in a process-oriented, structured, but friendly environment, you should seriously consider joining our company. As part of the IT Labs team, I would like to emphasize that working in an organization focused on people’s growth makes me feel comfortable about my future.

    Biljana: The decision of someone to change a job is quite personal, and I do think it needs to be based initially on personal needs, combined with what the other company and position have to offer. Once the personal aspect is set, IT Labs has a variety of advantages it can offer:  multiple projects and clients, modern technologies used, interesting set of requirements in job positions, a culture of appreciation, balanced approach towards support and challenge of its employees… and much more 🙂

     

    How do you sustain a professional manner while also being friendly to the candidates? 

    Biljana:  I think that in business people create special bonds (especially during a recruitment process), but I see it as different rather than regular. A specific type of connection that is leaning more towards a professional behavior combined with politeness rather than friendliness.

    Ana: Professionalism, among other things, means knowing the boundaries between work and personal life. There is no need for extra effort if you follow this simple rule.  However, we have to show empathy and validate people’s feelings during the recruitment process.

     

    What is the biggest challenge of being a recruiter?  

    Biljana: As in any profession, there are good days and bad days. What is important is to love what you do, and that’s how you’ll find joy in most of the days spent doing that. Personally, I don’t see a specific challenge of being a recruiter.

    Ana: To understand your potential candidates’ needs, their interests, and to get their attention. I am not sure if this is the biggest challenge or the shortest job description ever (just kidding). 🙂

     

    There is a negative trend of ghosting in the recruitment process. What is your take on this? 

    Biljana: To be honest, this trend is a worldwide issue from both sides – candidates and recruiters. As bad it is to be ghosted by the candidate, it’s good to take that as a lesson from a recruiter’s point of view and just imagine how a candidate would feel if you don’t come back with feedback after an interview. But I see this as a resolving issue in the future, since it’s quite connected with the increased usage of social media, and I believe that polite behavior principles will apply in this type of communication with time.

    Ana: Being ghosted, either you are a candidate or recruiter, can make you feel uncomfortable. If the recruitment process was software, ghosting is the perfect example of having a bug in the software. It is essential to understand that the bug is not intentional neither nor personal.

    I believe that both candidates and recruiters are aware of ghosting’s negative effect, but sometimes it happens.

    It’s up to us to work on the continuous improvement of our responsiveness.

     

    What is the biggest misconception that you have noticed regarding the recruitment process in general? 

    Ana: The biggest misconception that people have regarding the interview process and recruiter, in general, is that recruiters are just people who are collecting resumes and only care to fill the position no matter what. As a recruiter, I would say that this belief is incorrect. Our recruitment team is striving to build strong and long-term relationships with the candidates, understand the requirements in detail, find and hire the best-in-class engineers, and deliver high-quality results.

    Biljana: Oh, there are quite a few… 😊. But something that I’ve noticed through the years is the misconception that the initial interview with the recruiter is unnecessary, meaningless, or just a procedural meeting, without the opportunity to benefit from it. I think the truer side of the story is quite the opposite.

    The initial interview is a crucial part of the recruitment process. The discussion where both sides – the company (through the recruiter) and the candidate – can find out every important detail that helps them clarify whether they are a good potential match. The initial conversation with the recruiter is where you can ask and share literary anything you consider important for your career. It is a conversation that can lead to a life-changing decision.  It has weight; it is a constructive and directed conversation towards a specific goal. At the same time, it is flexible enough to provide a safe environment for sharing and asking the tough question you naturally wouldn’t ask during the rest of the recruitment process. It provides the candidate with a key to all the company inside info you cannot find easily on the web. On the other hand, it allows you to meet your “go-to” person – the person you can lean on through the whole recruitment process (the recruiter).

    On the positive side, I think this misconception of undervaluing the initial interview is slowly changing, as people feel freer to explore the labor market and go to interviews more often than they did previously.

     

    How can a candidate WOW you?  

    Ana: People speaking with integrity can always WOW me. I am always amazed by candidates who have a high level of self-awareness, not only for their strengths but also their weaknesses. And the third thing that is crucial for me is the candidate’s eagerness to learn.

    Biljana:  True, honest people, with an awareness of personal strengths and flaws, amaze me in any setting, not only during the interviews. Having a conversation with this type of person is truly remarkable. And I consider myself lucky since this profession allowed me to meet many great people who nurture those values in themselves.

     

    Whats the best interview advice you can give to candidates or people looking for job opportunities? 

    Biljana: Just be yourself. Take ownership of what you know and what you do and bring that to the recruitment process.

    Ana:  Try to listen carefully and take your time to answer the questions. Interviewers are just people who passed the same process as you to get their jobs. We are aware that, sometimes, the interviews might be stressful for the candidates. Don’t fake it till you make it. Be yourself.

     

    Maja Tanushoska

    Digital Marketing Specialist


    “Circle of responsibility "– a project that changes our society through activity and learning

    As a socially responsible company, IT Labs is always more than happy to have an active role in helping change things for the better. That is why we are very proud that we created the project “Circle of responsibility” in collaboration with the “Faculty of Philosophy – Skopje,” an initiative that originated from the idea to combine acts of kindness and knowledge with young minds. After finishing the first series of online lectures, we can say that together we made a difference. 

    This summer, IT Labs and the Faculty of Philosophy started the project Circle of responsibility,promoting the idea of action and learning. 2020 has been a challenging year, but we were determined to create something positive and shine a light on a year that hasnt been so kind to the world. Through the project, we have engaged the students from the Faculty of Philosophy – Skopje” to contribute to socially responsible activities of their choosing. As a reward, they got themselves a ticket to free online lectures provided by IT Labs. 

    At our great pleasure, IT Labs showed care and interest to include the students from the Faculty of Philosophy” in the project Circle of responsibilitythrough four key lectures that will help them to become more competitive in their working field. At the same time, the project motivated them to get include in around a hundred social responsibility activities to get a ticket for the training.

    Ratko Duev

    dean at the Faculty of Philosophy, Skopje. 

    With over 100 students as participants in 4 online lectures on different subjects such as digital marketing, how to crack the first job interview, business communication, and upgrading the knowledge in Excel, we are more than satisfied with the impact this project had oMacedonian society.  

    “As a socially responsible company, we are continuously dedicated to making changes for the better. It was an honor to share our knowledge with the young minds from the Faculty of Philosophy – Skopje, and I can honestly say that “Circle of responsibility” has made a significant change and made a full circle where acting and learning had achieved perfect symbiosis. “

    Frosina Zafirovska

    CHRO at IT Labs. 

    The students impressed us with their efforts by getting involved in so many different activities such as helping the elderly, donating food, creating and donating masks for Covid prevention, cleaning public spaces, and so much more.

    “The students are an important group that can be a key catalyst of the social changes if they have the right support from the surroundings. In collaboration with IT Labs, a company that recognized the need to motivate and reward them, the students showed collective awareness and shared vision to get organized into making small and big changes in our society. “

     Sofija Arnaudova

    a professor at the Faculty of philosophy and coordinator of the project. 

    But our initiatives wont stop here. We are determined to broaden this story and have an even greater impact on our society. To motivate young minds to act and learn because it matters. 

    Maja Tanushoska

    Digital Marketing Specialist


    happy worker

    Workplace Positive Psychology

    Positive psychology is a relatively new branch of psychology developed due to its historical over-focus on mental illness, research, and treatment. The focus on mental illnesses has resulted in psychologists giving attention only to the problems, weaknesses, and difficulties individuals face. Thus neglecting optimism, hope, and pleasure, which are extremely important to function normally. Positive psychology is based on the belief that people want to live a thoughtful and fulfilling life, a life worth living, while also wanting to develop the best version of themselves.

    It's no wonder that until recently, most of the articles written about human personality were treating depression, sickness, or in other words, "what's wrong, and what to do so that the person can be healed." Still, very little was focused on what makes us happy, optimistic, and satisfied, i.e. " what's good in a person's life, how we can become happier, more satisfied, and also more productive."

    happy woman at work
    The beginnings of positive psychology

    The beginnings of positive psychology go back to 1988, when Martin Seligman became president of the American Psychological Association, and then founded the magazine Journal of Positive Psychology. Essentially the dilemma he highlighted is related to why psychologists were dedicated to guiding a person to reach a functioning state on a scale from -8 to 0, and not focusing on bringing a person from 0 to 8+.

    Until 15 years ago, research done on positive emotions was almost a neglected topic compared to the number of studies done on negative emotions. At approximately that time, researchers felt the need to respond to questions related to human strengths and virtues and what conditions contribute to people being happy and working efficiently. Since then, as part of the positive psychology movement, there has been much-conducted research to show that happy people are more successful in many areas, including work, social relations, and better health. The experts often interpreted the connection between happiness and success as a premise that success makes people happy. But the results from longitudinal and experimental research made them see things from another point of view. Besides success influencing people's happiness, the results have shown that happiness can influence success by expanding their horizons, thinking, and behavior while using opportunities to upgrade their skills, make friends and set new goals.

    Speaking about positive psychology at the workplace, experts suggest that it can influence everything – from attracting to retaining talent, but also for better productivity and employee satisfaction. Considering the everyday work dynamic, requirements, and challenges that employees face, focusing on positive things can be essential for every person.

    How companies implement this?

    good job sign

    Fortunately, most companies today have changed their relationship with employees by taking care of their well-being. By doing this, they emphasize employee's importance, but also their health. These companies have seen the need to introduce a special job role titled Chief Happiness Officer, who takes care of its employees' well-being. They do this by organizing different activities and events so people feel happy and fulfilled in the workplace. There are different opinions about how this could be implemented. Either by forming a special role or every manager leads a team to take over these responsibilities as part of their job description.

    Positive psychology deals with how individuals, companies, and organizations can function optimally while also being happy and prosper. When it's applied in the workplace, it helps the managers successfully lead their teams, understand and motivate the employees, and achieve business growth. The biggest advantage of applying positive psychology is that it gives successful business results and employee satisfaction.

    A very important thing for effective usage of positive psychologies scientific principles is recognizing, understanding, and using the innate power and strengths that employees possess. Everyone has different traits and personalities, and one of the recipes for success to get the most out of them is to focus on their potential and strengths.

    In a Gallup study in 6 countries, the participants were asked for their opinion about what will help them be more successful in life – was it knowing their flaws are and how to overcome them, or knowing their strengths, and continuing to improve and develop. Most of the people answered that they would like to know their flaws, but the research shows that it is much more useful for individuals to know their strengths and upgrade professionally from that.

    Research also shows that employees who have an everyday opportunity to use their strengths are three times more satisfied with their quality of life, six times more engaged at the workplace, and 15% less chance of quitting their job.

    Companies and individuals who want to operate successfully, with people who want to live well and enjoy life, are more aware of positive psychology. That's why the interest in positive psychology in the last 20 years is rapidly expanding into business, public administration, education, and individual personal lives.

    The concept of happiness in a work-related context

    Positive psychology deals with positive thinking and positive emotions. It is trying to determine which factors contribute to the success and progress of the individual and group. One of her key concepts is the concept of happiness, and in that context, it is very interesting to see the results that this science has come up with. Particularly with its application in a work-related context.

    happy colleagues

    • Happiness is partially genetics and destiny, but not entirely. The inheritance has a 50% influence on what constitutes happiness. This is interesting data, but the question is, what's with the remaining 50%? How much of an active role do we have in living better, being happier, and more satisfied?

    • Every human being has their own "thermometer of happiness." Individuals will come back to their happiness level even after a very bad or good thing happens. Of course, if the person chooses not to take things into their own hands and start working on their happiness and satisfaction, the subsequent impact is their responsibility.

    • One of the biggest enemies of happiness is making a comparison with other people. But, not just comparison with anyone. Research shows that people rarely compare or care about how much money Elon Musk and Jeff Bezos have. Knowing that someone similar to them has achieved a significantly higher level of success will influence their mood and satisfaction.

    • Many different factors influence happiness, but most researchers agree that personal relations and social activities have a crucial influence in determining happiness. Friendships, and especially having someone to rely on, are perceived as more valuable than possessions. Even more than finance. Having this in mind, you can imagine how important personal relations are at the workplace and the working environment in which the employees have a strong connection. There is a good working atmosphere and teamwork.

    • A person's happiness increases through engagements in so-called "flow experiences. " It is a state where people lose track of time and space. People in a state of flow are thrilled when they do activities they perceive as a challenge. Interestingly, data shows that people can arrive at a state of flow much easier than in recreational activities. That is why a company needs to get to know the employees and the activities that bring them the greatest pleasure. This is one of the greatest dexterities of exceptional managers.

    • Over 65% of employees worldwide don't receive praise. Fact – employees desire praise at least once a week. Research shows that the human brain perceives positive feedback as greater social acknowledgment than receiving a financial award. This reward is particularly important for the millennials, who perceive feedback as one of the key aspects that give them pleasure. By this, we mean precise feedback that clearly states that the work they do is valued, and their effort is recognized. 75% of the current personnel consists of employees that require positive feedback; more precisely, people are raised with praise, so they expect the same thing in the workplace.

    • For a long time, there was a dilemma of what law applied to being happy in the workplace and private life. The law of overflow or the law of compensation? This dilemma asks whether unhappy people in their private life become completely focused on reaching happiness and pleasure at the workplace. Or being happy at the workplace transfers into the rest of a person's life? Maybe you already guessed that the second one predominates – happiness possesses a curious power that transfers from one life field to another and makes life more thoughtful and fulfilled.

    For all of these data and research results, conducted by this relatively young scientific branch, more and more become a field of interest for companies. Especially those companies that see the importance of their employees. These companies know that happy employees mean having better results, great products, and satisfied clients.

     

    Frosina Zafirovska,

    CHRO at IT Labs


    glasses on computer

    How to switch off when your home is your office?

    computer shut down Remember those days when you could look at the clock and know exactly how long it was until you could stop working and go home? Over the last six months, as a result of the transformation of the workplace due to Covid-19, things changed, and the physical barrier between work and everyday living got blurred for millions of people. Working from home turned homes into offices, which can be tricky when you want to press the off button at the end of the day.

    The physical office is a symbol of some kind, a place where a person can dig in on the tasks and then leave it behind at the end of the day. Thus focusing on other segments of life such as friends, family, and hobbies. Considering that now the line is blurred and everyday living is mixed with other chores (e.g., helping kids with homeschooling), it’s becoming a challenge to focus on work and then unplug.

    The other challenge is that your work is literally constantly at your side. The computer is near you, and in fact, your home is your office! So it’s easy to get caught into a cycle of “just checking something“, and finding yourself finishing up things all the time. This can lead you to burnout without you even realizing it. So, to prevent this from happening, you can do something about it, while social distancing and keeping safe.

    Change the routine

    We are creatures of habit. Just imagine how many things you are doing because it’s part of your routine. The longer you follow a pattern, it becomes part of your identity, and then it becomes really difficult to leave it behind. So, if you are constantly checking emails on your phone (even when it’s 9 PM), you should work on establishing a new routine and teach yourself when to switch off. Staring at your phone late at night doesn’t help your sleep, so if you are scared that you will miss something even if you blink, you really should work on that, because it is a constant pursuit of a damaging illusion, that you can control everything, when in fact your bad habits are controlling you.

    In this situation, you are probably affected by something called Attention Residue, a condition defined as having persisting thoughts about a task while performing another task. This leads to you constantly doing tasks in your mind. So when working from home, you are working without knowing when to stop jumping from one thing to another. It’s a cycle that you need to break free from because when the work you do is constantly staring at you, you can’t concentrate and be focused enough.

    woman at home working on computerThe out of sight rule

    The computer, the phone are symbols that your brain connects with work and tasks. And when your home is your office, that computer screen is your reminder that there is stuff to do. Also, the constant notifications on your phone don’t help if you want to switch off. So, turn off every notification that disrupts your personal time. There is another trick you can do. Physical separation is really important. In this case, if you have suitable environmental conditions, separate the place where you work from the rest of your home, so you can really leave it behind.

    Exercise

    A light walk or a bicycle ride can put your mind at ease. Exercise has an impact not just on your physical wellbeing, but also your mental health. Something that is extremely important when life or work conditions have changed. You will naturally experience heightened stress because of the new circumstances, such as being constantly at home, not knowing how to break apart from the tasks, and when to switch off. Find half an hour after the working day is done, and dedicate it to exercise or some relaxation practice. Even your home can be the place where you conduct these destressing activities. For example, you can start practicing yoga. Just choose the activity that fits you best.

    Find your hobby

    Reading, cooking, painting, DIY crafts, even watching your favorite show is a good way to distract your mind and constructively spend your personal time. Maybe if you get yourself into a bigger project (e.g. doing something for your home) that constantly needs your attention, will help you shift the routine.

    Family time

    It sounds like a cliché. In this situation, it’s more like a paradox. Aren’t you already at home with everyone? Well, in fact, it is different. Quality time with your partner and kids is completely different from constantly being in the same space at the same time. It’s easy to get the impression that if you are working remotely with your loved ones around you, you’ve done your part. But between tasks, meetings, and everything else that working remotely brings along, can you honestly say that you are spending quality time with the people around you? It’s time to change one's perspective on that. If you’ve found that balance, kudos to you!

     

    Maja Tanushoska

    Digital Marketing Specialist


    How to deal with impostor syndrome?

    Do you feel like a fraud at your workplace? Do you have that feeling that everyone around you knows what they are doing, appearing to be in control of their work, results, and professional demeanor? They look like they have a grip on their work and are up to the task, but not you! You are here by mistake, or just through plain luck; someone else would surely get the job done better, faster with results that exceed yours. You pollute your thoughts with inner comments like "you don't deserve this position," and "soon enough, everyone will find out." Don't be alarmed. What you are experiencing is called impostor syndrome, and is very common. It's a psychological pattern that affects people of every level.

    "Let me let you in on a secret: most days, I feel like a fraud. Like I don't really know what I'm doing "These are the words from the founder and CEO of Atlassian, Mike Cannon-Brookes, who gave a TED talk on this subject. In this talk, Brookes speaks about the impostor syndrome as a thing that has followed him his whole life, and when you hear that kind of thing from a person like him, you get a groundbreaking perspective. You are not alone, and you are not the only one feeling like a fraud.

    It has little to do with confidence

    Impostor Syndrome can be a scary, overwhelming feeling. It's like you are always waiting for that email, that call, the message, the SWAT team to swipe you out and reveal that you are a fraud. You can be a confident, intelligent person, but at the same time, no amount of success can convince you that you deserve it, even if all the evidence says otherwise. It's that scary realization when you walk in a room filled with people, coworkers, team members, and you feel that they will point the finger towards you while muttering, "you are here by mistake," and "you don't have the answers." The fact is, no one has all the answers. This is a challenge for a perfectionist mind; it's very hard to convince itself that someone out there doesn't have it all worked out. It is a constant chase, and it can be exhausting.

    But to help you get the right perspective and prevent the SWAT team from coming, you have to see this from a positive direction.

    And yes, there is a positive side to this.

    On a positive personal note

    Now, as a person who works in a creative field and has years of experience in marketing, I too, have experienced this syndrome. For years, I didn't know that it was a common pattern. It prevented me from speaking up when I knew I was right, to stand up for myself or others, but also it led me to paths where I put unreasonable pressure on myself through a feeling that I must DO MORE, because whatever I did was never enough. This is all down to the impostor syndrome, whispering insecurities into your ear. If you raise your hand, spill out your thoughts, then they will find out for sure that you are a fraud. If you are silent, that monster can somehow present itself as an imaginary paranoia. But after years and years of facing this, I have managed to reason with the monster (we have an occasional chat, here or there). Here are some things I have learned. My hope in sharing these, you can see the positive side of all this.

    The lessons learned

    Own what you have accomplished

    Do you cringe when someone compliments you? A compliment! To you? They must be mistaken. It is a very common situation for people with impostor syndrome to feel that they don't deserve compliments. Many times those are empty words to them. But you see (and this is something I've learned from my mistakes), you can make things unpleasant for the people around you if you refuse their kind words. They don't see your struggle. The boss, the colleague, or client is giving you recognition, and the proper way to deal with this is to OWN it. Say thank you, be happy with the result. You have good news! You are the person that got the job done and deserves the credit. Be reasonable; you are working with smart, capable people, so when they say kudos, believe in their judgment.

    Share your thoughts with others

    There is a saying that if people could hear our thoughts, we wouldn't have any friends. It can be loud in one's mind. There are so many traumas, experiences, emotions, and so many false assumptions. That is why it's healthy to share these thoughts of fraud, incompetence, underachieving, and doubts with others. People are awesome, they can give you a perspective you didn't even consider, or maybe sometimes it will help just to hear your thoughts out loud and see how ridiculous your impostor syndrome sounds.

    Don't idolize other people's success

    If the founder of Atlassian, with all of his accomplishments, can't see his success, you may want to rethink how you think. All these people around us have their struggles, challenges that you don't see. Heck, you can't see your own impostor syndrome! The unhealthiest thing to do when you are struggling with this syndrome is to measure yourself with others. That colleague knows everything; I have to be as good as that person; How come they always have the right answer? And other utter nonsense you are telling yourself.

    Remind yourself that you are here for a reason

    Why you are where you are now in your job, is not some whimsical, destiny related definition, but the reality – something on the way clicked. You got that job because you possess talent, character, knowledge, aspirations, and others saw that. That is why you are here now; the praise is real. There are no hidden agendas, no conspiracies of your incompetence, no SWAT team that will take you down because you are a fraud. And if in the future, you get promotion, appreciation, bonus, or something else that shows that your work is valued, add that to the list with reasons why you are here and doing what you are doing.

    Perfectionism kills creativity

    Have you ever been in a position when a mistake completely knocked you off? Or a negative comment from someone paralyzed you so that you don't want to do anything anymore. Or maybe you overreacted in a situation because that imposter syndrome was screaming at you? This "striving for perfection" and the need to always have the right answer can kill your creativity and productiveness. Even the best writers don't want to read their own books because they feel they could have done a better job. Perpetually going back, reviewing and rewriting, relentlessly aiming for the ideal of perfection, will never allow the book to become published. Perfection is not creativity; it's the killer of it.

    The beauty of not knowing the answers

    Here's a new perspective I offer you. Isn't it awesome you don't know everything, and that you can make mistakes, fall and get back up? There is beauty in not knowing. It means there are so many things to learn, explore, get fresh perspectives, and new ideas. Just imagine if you knew everything. What a boring life that would be!

    Maja Tanushoska

    Digital Marketing Specialist


    Talk about values with IT Labs CEO – Branislav Gjorcevski

    Company values define the culture of an organization, speaking volumes about how it brings about realizing its vision, behaviors it encourages, and the environment it subsequently creates. In a way, values pave the path for current and future employees, addressing the important client question: what kind of company are we going to collaborate with?

    On the subject of values, we had a very insightful conversation with IT Labs CEO, Branislav Gjorcevski (Banne) who gave his perspective on the importance of having core values, what they mean, and how the perception of them has changed in today's business environment.

    ITL: Hi Banne. How are the current tides in West Palm Beach?

    Banne: Currently there is an incoming high tide with lots of fish, we are waiting against the current :)

    ITL: So, speaking about core company values and their importance, how do you see them: Do you seem them as aspiration or perfection?

    Banne: I think neither. I believe that values are a representation/description of us at a given moment in time. The terms that describe aspiration are simply aspirations, not values. And aspirations that tend to perfection would be described as goals, not values. Values are things that we believe in, things that simply 'are.'

    ITL: Values should be compact, insightful, and on point. Is it that "easy " to define them?

    Banne: Not really. It's hard to boil down values to simple words. After all, simplicity is very hard. But at the end of the day, if we simply look at our core beliefs and keep it simple, it is doable.

    ITL: If we make a comparison, did things changed on how we see values in today's business environment? Do they still hold a top spot in defining a company?

    Banne: Oh yes. If we describe values as beliefs at a given moment, then if we transform ourselves (for any reason), those beliefs will change over time. 'Updating' the values means updating the beliefs of this current period. They may remain the same or subtly change. As for us here at IT Labs, our values have remained pretty consistent over time (I don't know if that is a good thing or not :).

    ITL: Is it possible to find people that completely represent the values defined by a company? There are some debates that the values should come from inside, from the employees themselves.

    Banne: Values indeed come from the employees themselves. If you trace it back, the core group hired the rest of the group, and if you hire by values then you have replication of values to the rest of the team. It would be very hard to find people that represent 100% of all the values, but it should be pretty close.

    ITL: What about the client's point of view? Are values make or break moment when someone is looking for a company to work with?

    Banne: That is true. But many companies misrepresent their values to clients, so clients have a hard time figuring out what is true. In theory, one company should just state what they believe in and have values be the matchmaker with the clients. Finding a client with similar culture makes communication a lot easier.

    ITL: What is the biggest misconception about core values?

    Banne: That they (values) are something to strive for. One company either believes-in and has integrity, or not so much. Wanting to have integrity is a wish. Having a transformational strategy about it makes it a goal, but not yet a value.

    ITL: Things change quickly, and companies are trying to adapt their work environment to the new behavior of the employees, but also the business climate. How did values change in time?

    Banne: They change only by us wanting to be better with each cycle. In theory, it should always be a positive transformation, regardless of the business climate. When the climate changes, it's a great time to review the current state of the culture and values and see if we deviated much or not at all.

    ITL: This year, IT Labs made a change in defining the core values, and the employee's opinion had a major influence in shaping the definition. What is your take on the whole process?

    Banne: I think that given that people with the same values brought in the new employees, they totally represent the overall culture. The definitions of the values (the words) were changed but the essence of our values hasn't, and that's completely in line with the core values that we've always had. It was a much-needed update for better clarity and more transparency on the internal beliefs.

    ITL: What are the challenges when a change like this comes along?

    Banne: In theory, a challenge in a situation like this would be a red flag. That means that there are different groups with different values. In our case, the core group was in total alignment with the rest of the team, which shows a fantastic execution of the expansion strategy, especially by the HR and recruiting teams.

    ITL: What advice would you give to another CEO that wants to do the process of redefining the values as IT Labs did?

    Banne: I think the process of revisiting values can be a great indicator of how much the core beliefs have changed. Also, how much they have been distributed over time to the wider group of people within the organization. A leader should pay attention to feedback from the wider team, their understanding of the values, and reflect on the differences if any. Any concerning differences could be indicators of poor hiring or poor communication and transfer of culture from one group to another.

    ITL: Thank you, Bane, for the insightful conversation.

    Banne: You're very welcome anytime.

     

    Maja Tanushoska

    Digital Marketing Specialist