Four Pillars of Brainstorming

1 OaUjtxIFdNuUCFA4D-IyHw

Whether you love brainstorming or feel intimidated by the process, it’s always great to brush up on your idea generation skills. Coming up with creative ideas on demand is no easy feat, but implementing tried and true brainstorming best practices can help make the process easier. If you’re feeling stuck during a brainstorm, consider implementing the four pillars of brainstorming, a framework created by advertiser Alex F. Osborn in the 1940s. Alex F. Osborn created the term “brainstorm” and developed four pillars that you can use when coming up with new ideas.

By going for quality, withholding criticism, welcoming wild ideas, and combining and improving ideas, you can radically transform the success of your brainstorming sessions. Check out the infographic below from our friends at Fundera that outlines the four pillars and provides actionable tips to improve idea generation. Feel free to add your suggestions in the comment box below.


Feel free to share on social networks. Find the buttons below this post. This opinion article is for informational purposes only.

Remember, information/knowledge acquisition can never be too much! Let us continue to spread the word!

Follow my blog for more insightful articles:

LinkedIn connect: Temitope Adelekan

Twitter: @taymethorpenj




Brought to you by Fundera

Edited by Temitope Adelekan


15 of the Best TED Talks for Activating Creativity


The first step to overcoming a mental block is modifying your frame of mind from failure and self-doubt to positivity and knowing you are capable. Finding inspiration is one way to shift away from a negative perspective and jumpstart those creative juices.

The popular media company TED (short for Technology, Entertainment and Design) has got inspiration down to a science. Devoted to making powerful ideas accessible as well as sparking conversation, innovation and change, their global community welcomes thought leaders to share knowledge and motivate you to spread your greatest ideas. Speakers come from an array of different fields. They include authors, producers, entrepreneurs and more.

Lecturers are thinkers, doers and idea-generators!

To help you replenish your creative spark and get inspired, our friend at Invaluable compiled a list of 15 must-listen Ted Talks on creativity.

Browse the highly viewed list of speakers, find your favourite and find your inspiration.

Feel free to share on social networks. Find the buttons below this post. This opinion article is for informational purposes only.

Remember, information/knowledge is never enough. Let us spread the word!

Follow my blog for more insightful articles:

LinkedIn connect: Temitope Adelekan

Twitter: @taymethorpenj





Brought to you by  Taylor Poppmeier

Edited by Temitope Adelekan

How to Design an Effective Landing Page


Landing pages can be described as one-page websites that push the visitor toward a single action. This focus on a single purpose is the primary feature that makes landing pages different from other websites.

Their primary goal is to generate leads which are often linked to email and social media campaigns and to convert those leads into buyers and subscribers. The process of converting visitors into leads and buyers is usually accomplished by call-to-action buttons and lead generation forms.

“A landing page is any webpage on which an Internet visitor first arrives on their way to an important action that you want them to take on your site”
– Tim Ash, Landing Page Optimization

Landing pages originated in response to the poor sales Microsoft was experiencing with its Office suite and have expanded to the point where email marketing solutions, customer management, and lead capturing features are now standard and a powerful tool for retaining and acquiring customers by means of marketing and design techniques.

Although a narrow and somewhat elementary form of customer acquisition and sales, landing pages continue to be one of the most powerful tools that marketers use.


Landing page design by Dann Petty

Effective landing pages are used for conversion and sale-oriented tasks, such as:

  • Promoting new products
  • Growing subscriber lists
  • Increasing sales and leads
  • Capturing insights and data through forms

Landing Page Design Best Practices

Landing pages, although very similar to common websites, serve a different purpose. Here are the key characteristics that help make a landing page look great and convert well:

1. Visual Simplicity


Visual simplicity displayed on Conversionlab‘s home page

Visual simplicity takes into account all elements of a landing page’s user interface. Maintaining visual simplicity and a minimalist design is important because it improves visitor focus and helps to showcase the value proposition. Here are some characteristics of visual simplicity:

  • Visual simplicity maintains whitespace that focuses visitors on calls to action (CTAs) by isolating them from other elements.
  • Visual simplicity makes it easy for the key features and calls to action to stand out.
  • Visual simplicity creates contrast by displaying elements in a way that make them stand out.
  • Visual simplicity maintains the design flow by placing elements in a way that directs the user to keep reading.

2. A Great Landing Page Starts with Great Media

The right images and videos on landing pages will help persuade visitors to act on the call to action. A great image helps tell the story, demonstrates the product effectively, and creates a personal connection with visitors.


Attractive photography increases conversions on Uber‘s landing page.

The relevance of displayed images is crucial. Displaying images of friendly-looking, real people instead of generic stock images helps to build trust with visitors. Including relevant product and service imagery gives visitors a better understanding of what they are buying.

Research on the effect of video on landing pages suggests that videos have more impact than still images, where “71% of respondents confirm that video converts better than other content.” Videos help with SEO, maintain user engagement, and better explain the product or service to visitors. Another factor favouring videos is that if used well, they can replace a long-winded copy that could potentially hurt conversions.

3. The Importance of Color

Research shows that colours are a big influence on our psychology—on the way we feel and act. Appropriate colour palettes improve the user interface and help guide the behaviour of users, consequently improving landing page conversions.


Great use of color on a landing page by Mason Yarnell for Mixpanel

Here are few tips on how to use colours effectively:

  • Understand how to use high and low colors that allow the creation of high contrast, which is directly tied to copy readability.
  • Create a colour palette comprised of compatible colour combinations and built on complementary/opposite colours.
  • Address colours from the perspective of psychology and marketing. Depending on the product/service, use colours that convey the right message (e.g., green is the colour that conveys security, trust, and calmness, and therefore, its use is most appropriate for finance-related products).
  • Consider colour symbolism when targeting different demographics. Various cultures interpret colors differently, so what works for one user base might not work for another.
  • Understand that colour interpretation varies from gender to gender, and there is no “bullet-proof” solution when it comes to picking one.


Color used well on a landing page by Balkan Brothers

5. Landing Page Responsive Design

It’s been a couple of years since responsive websites became a standard in the industry, and landing pages are no exception. Responsive landing pages are meant to provide the same level of user experience and UI on mobile devices as they would on full-screen layouts.


Responsive landing page by Majo Puterka for Bigscoots

Online purchases made from mobile devices are growing, thus mobile phones will soon become a major source of traffic for shopping and purchases made online. Because landing pages are conversion-oriented, it’s important to understand the potential of the mobile audience and adapt towards that traffic funnel.


Share of unique users by platform (Comscore report)

Although most services that provide a landing page have already integrated responsiveness into their templates, if a decision is made to design a freestanding landing page, then landing page design best practices demand that responsiveness is an absolute must. Here’s why:

  • Responsive layouts offer feature and content parity as on the main landing page.
  • Responsive landing pages benefit from the massive amount of traffic that comes from mobiles and tablets.
  • Responsive landing pages integrate well with SMM campaigns that lead traffic.
  • Responsive landing pages are easier to build because of the reduced layout complexity.

Content – The Foundation of a Great Landing Page

1. Eye-catching and Concise Headlines

Headlines are the first thing visitors see when they reach a landing page and are an effective way to engage visitors. Consider the headline as a “hook” that either catches or loses the visitor.

You will lose readers if you don’t engage them in the first few seconds they’re on your landing page. Besides making an impression, the headline—being the element that stands out the most—should convey the essential message and the unique selling proposition.


Catchy and concise headline on Taster’s Club landing page

An effective landing page headline is:

  • Persuasive and catchy
  • Brief but clear, and states what problem it solves
  • Conveys a sense of urgency

2. Strong Calls to Action

Call-to-action buttons are core components of a great landing page and act as the main gateway between your product or service and the user.


Lyft making use of bright calls to action

It’s possible to improve your CTA “button game” by applying these tips:

  • Keep it above the fold and put emphasis on the primary CTA. Always make it easy for the visitor to perform the desired action.
  • Use suggestive imagery and visual cues to point visitors towards the CTA.
  • Use strong and bright colours that will make the CTA buttons stand out by creating contrast.
  • Use natural and actionable phrases for your calls-to-action, such as “Start Now,” and “Get a Free Quote Now.” Avoid using simple phrases like “submit” and “send” because they are not as effective in terms of conversion.

3. Psychological Aspects

Every person is subject to psychological principles and rules. People’s motivations, desires, beliefs, and biases lead them to make specific choices. These choices are heavily affected by a variety of factors, conscious or unconscious, and there are ways to affect them:

  • Make use of empathetic images that are relevant to the context of the user. This allows for a better connection at an emotional level and conveys feelings of empathy to the user.
  • Key elements on the landing page, such as the headline and call-to-action buttons, should create value and a sense of urgency for the user. This can be achieved by writing appropriate copy and using contrasting colours.
  • Widgets like trust badges, ratings, and awards should be displayed above the fold. This conveys a feeling of trust.
  • Displaying relevant testimonials works as a social proof to visitors and increases credibility and trustworthiness.
  • Showcasing logotypes and brands that have been involved with the service or product helps build trust by means of social proof.


Use of social proof on Unbounce’s landing page

4. Use of People on Landing Pages

Besides the various psychological aspects that can be used to get more out of a landing page, using people and friendly faces is a proven technique for higher landing page conversions.

Using pictures of real, everyday people instead of objects or stock images helps to create a more personal connection and elicit more empathy from visitors. Because people typically make their decisions at an emotional and subconscious level, creating an emotional connection through images is a very powerful technique.


Highrise increased their conversion by using friendly people on their landing page.

Studies that explored the use of human images in web design found that websites which include facial features stimulate the perception that the websites are trustworthy and therefore more appealing.


Charisma on Command owners pointing to the call to action, which increases conversion

Another great way to draw attention to CTAs is to use images of people looking at headlines and call-to-action buttons. This technique makes it easier for the user to see important CTAs and leads to higher-converting landing pages.

Common Mistakes in Landing Page Design

1. No Images or Low-quality Graphics

“A picture is worth a thousand words.”
– Proverb

Studies have shown that people perceive images better, and symbols over 1,000 times faster than text, emphasizing the need to use quality images and videos. Generic, pixelated, dated images and stock photography will hurt credibility, reduce trustworthiness, and make the landing page less authentic in a reader’s eyes.

2. Page Layouts with Too Much Content and Complexity

Landing pages are meant to be easy to use and quick to understand. Layouts that are too complex to scroll, hard to scan, and overloaded with UI elements rarely provide value and dramatically reduce landing page conversions. The decision to use common website elements like navigation bars, footers, and similar elements should be made on a case-by-case basis.


A complex layout that is overloaded with “noise”–too much text and information

Understanding the user’s perspective uncovers the weaknesses in design more effectively, helps make the page flow more intuitive, and the process of scanning the landing page less difficult.

A/B testing a landing page is a good way to gather insights that can be applied toward improving a landing page layout. Another option is to use evidence-based UX design techniques, such as the F-Shaped and Z-Shaped pattern layouts.

These types of layouts have been thoroughly analyzed and backed up with data that show common user interaction patterns. Going forward, applying the data from research greatly enhances the ability of users to interact with a landing page’s content.


A simple yet effective design of muzzle‘s landing page

3. Unscannable Copy

Good copy on landing pages is essential for creating clear and intuitive experiences for visitors. Well-written copy is not only suggestive but also exciting. Writing copy for landing pages is in big demand because marketers, designers, and business owners understand the value of great copy.

An important principle in a customer-centric copy is storytelling. Too much text, grammatical mistakes, large bodies of unbroken text, and a boring tone can lead to a poorly-performing landing page. Visitors will trust you more if they feel the copy is tailored to them and tells a compelling story.


Landing pages are essentially about acquiring and retaining visitors as well as converting them into buyers and subscribers, and they are currently one of the most popular tools marketers use to gather leads.

The use of various marketing and design techniques can have a powerful impact on the participation of users. The landing page design techniques and psychology principles outlined in this article are backed up by real data and are proven to guarantee a landing page that is effective, high-converting, and results-oriented.

Feel free to share on social networks. Find the buttons below this post. This opinion article is for informational purposes only.

Remember, information/knowledge is never enough. Let us spread the word!

Follow my blog for more insightful articles:

LinkedIn connect: Temitope Adelekan

Twitter: @taymethorpenj





Article by  Stelian Subotin

Brought to you by Toptal

Edited by Temitope Adelekan

10 Ways HR Managers Can Boost Workplace Productivity [Infographic]


Workplace productivity is a business goal that may require two things to become attainable. The first is the investment from the company and secondly, the implementation of friendly human resources (HR) policies such as incentive programs for employees.

Research backs the idea that a top precursor to workplace productivity is to have a reward system in your organisation. While the company will need to allocate financial resources toward employee incentives, the rewards are all encompassing across crucial areas in the business.

One study done among UK companies says explicitly that 85 percent of workers felt highly motivated when there were incentives at stake. And not only that, 73 percent of the employees observed a “good” or “very good” office atmosphere during incentive season. For the company, the benefits of an incentive programme are quite pronounced as the study also found that employee productivity is tied to as much as £80,000 ($106,00) increase in weekly profit on average.

Below is an infographic that shows the different ways HR managers can further boost productivity in the workplace. Feel free to add your suggestions in the comment box below.


Feel free to share on social networks. Find the buttons below this post. This opinion article is for informational purposes only.

Remember, information/knowledge is never enough in our world. Let us spread the word!

Follow my blog for more insightful articles:

LinkedIn connect: Temitope Adelekan

Twitter: @taymethorpenj




Brought to you by e-days

Edited by Temitope Adelekan

24 Google Doc Hacks & Add-ons to Make Your Life Easier


Twenty years ago, collaborating with people in real-time over the internet seemed difficult to understand. Now we do it every day with the click of a button. Google Docs is a powerful tool that makes working with people both near and far a breeze, but do you know how to use it to its full capacity? Go beyond just sharing docs and leaving comments with these 24 Google Doc hacks and add-ons.

Google Hacks Infograph

Excited to save some time? With these hacks you no longer have to manually go through a document and look for duplicates or change the capitalization structure letter by letter. Though these may just seem like minor details, they will make a major difference in productivity!

To keep your files neat and organized on your computer, you can go the extra step and download Google Drive for Mac. This will save and sync your files on both your hard drive and in the cloud, so you have a backup.

You can also download the Google Doc phone application to easily view documents when you’re on the go. If you’re worried about losing internet connection and have to do a last minute edit, you can set particular documents to be available offline. Just click the three dots next to the document’s title and choose “Available offline”. These documents are automatically put in an “Offline” folder.

Staying organized is the key to managing your workload and optimizing your time, and these easy, actionable tips are sure to help you do just that.

Feel free to share on social networks. Find the buttons below this post. This opinion article is for informational purposes only.

Remember, information/knowledge is never enough in our world. Let us spread the word!

Follow my blog for more insightful articles:

LinkedIn connect: Temitope Adelekan

Twitter: @taymethorpenj




Brought to you by GetVoip

Edited by Temitope Adelekan

16 Gmail Tips & Tricks To Streamline Your Inbox


Are you suffering from email overload?

The average person spends 28% of the work week reading and responding to emails. This equates to 13 hours a week, and 650 hours a year. Consider how productive you could be if you had a few extra hours every week to focus on the projects that really matter.

It’s not just your professional life that suffers due to information overload. 59% of Americans say that they check their emails outside of office hours.

So what’s wrong with that?

Constant connection comes with a price. Even if you stay on top of your inbox, studies have found that constantly checking your email can lead to burnout, health issues, and personal problems. A work/life balance is essential to staying healthy — both physically and mentally. It’s a no-brainer that burnt-out, sick, and unhappy employees aren’t going to be at their best when it really matters.

While you might not be able to cut down the volume of emails that you receive from colleagues and clients, you can use a variety of tools, tips, and tricks to help you make your inbox more manageable.

One of the reasons why Gmail is preferred by individuals and corporations alike is due to Google’s attention to detail when it comes to features and functionalities. Many of these tips and techniques will require you to spend some time tinkering around with your settings. But once you’ve mastered some of these shortcuts and helpful hacks, you’ll save yourself from hours of wasted time.

Below is the visual to learn the tricks.

Gmail Hack

By optimising your email account to work for you instead of against you, you can boost your productivity levels, get more work done, and reduce the risk of allowing an important email to slip through the cracks.

Do you have any preferred methods for keeping your inbox manageable and tidy? Share them in the comment section below!

Feel free to share on social networks. Find the buttons below this post. This opinion article is for informational purposes only.

Remember, information/knowledge is never enough in our world. Let us spread the word!

Follow my blog for more insightful articles:

LinkedIn connect: Temitope Adelekan

Twitter: @taymethorpenj




Brought to you by GetVoip

Edited by Temitope Adelekan

Broad vs. Narrow Skillsets: Software Engineering Skills Demystified


Every software engineer has a skillset made up of the different skills they’ve acquired. A skillset is “deep and narrow” if you’ve mastered one to two skills and little else; it’s “broad and shallow” if you can do a little bit of everything without being an expert in any field.

Most of us are somewhere in the middle with a few strong skills, a few average ones, and a lot of gaps. In this article, I’d like to discuss the broad-deep spectrum and to argue that getting closer to the broad end would benefit most programmers.

Sostware 1

Breadth and depth are, of course, relative. For example, you could be an expert in web development, or just in client-side web development, or just in JavaScript. All of these are “deep and narrow” skills in some sense, but the last is much narrower than the first.

Also, “deep and broad” and “shallow and narrow” skillsets are both possible: The first means everyone wants to hire you, and the second means you’ve yet to learn anything meaningful at all. Since they’re not very common, they’re also not worth discussing in detail.

Types of Software Engineer Skills and Skillsets

Deep and Narrow

Having a deep skillset means you’re an expert in at least one field.

Take SQL: Let’s say you know everything about relational database theory; the pros and cons of MySQL, PostgreSQL, Oracle, and SQLite; how to optimize queries; when and how to denormalize a database, etc. Clients looking for this specific skill will want to hire you ASAP, and with good reason. You’ll hit the ground running and deliver value like few others could.

However, if the project expands or changes significantly, you’ll be replaced or supplemented by programmers with the skills you lack. Even without major changes, would you be able to suggest architectural changes? The client could be better off with a NoSQL database or no database at all, but your narrow expertise might bias you against these unfamiliar options.

Broad and Shallow

On the other hand, if you’re a generalist who’s not a domain expert, you’ll need some time to ramp up on new projects before hitting peak productivity.

To give an example, maybe you need to do a Python project and you’ve never used that language before. Still, you’ve probably heard a few things about it (dynamic, interpreted, multi-paradigm) and your experience with other languages will make the transition much easier.

The code you initially write might not be Pythonic (with tuples, comprehensions, or generators) but you’ll know where to start. You will make steady progress and your well-factored modules will be easy to improve later. Your broad perspective on technology will give you ideas others might miss.

When the project changes, you’ll be an asset to your team rather than a liability.

Skillsets in the Real World

In geographical terms, narrow skillsets look like tall mountains, and broad skillsets are like plateaus. Using this analogy, typical skillsets are likely to feature a couple of mountains, a hill here and there, and a lot of plains.

Software 2

A random programmer might be great at SQL and Python, OK at web programming and algorithms, and really apprehensive about most other things, like core dumps, OAuth servers, or native apps. Such a programmer should continue to exploit their areas of expertise, while also finding and filling knowledge gaps.

This strategy is likely to serve them best over the years.

Why Programmers Need to Diversify Their Skillsets

Many projects require unrelated skills combined in unpredictable ways. While broadly skilled engineers could contribute usefully to most of them, an expert’s skill set will match few employers’ precise requirements. That’s not necessarily an issue in the short run, as you only need one job to pay the bills.


Overspecialization is risky. Putting your eggs in one basket might be fine if you can predict the future better than everyone else, but that ability is rare and unrelated to tech skills. Consider the demand for Windows programming skills in our millennium. Or ask yourself: could many of us have guessed the respective trajectories of Android, Flash, Nokia, or Blackberry a decade ago?

Lastly, top employers highly value diverse skills. Facebook doesn’t assign new hires to teams until six weeks after they start. Google encourages internal transfers and runs several rotational programs. Even if you enjoy freelancing, keeping your options open won’t hurt. If you’d ever considered working for those companies, you’ll have to be at least somewhat of a generalist.

Assuming that you’re convinced and want to diversify your skills, how would you do that?

How to Diversify and Improve Technical Skills

You could trade money for skills:

  • Accept a lower rate while transitioning to an unfamiliar field. If you’re 75% as productive as usual, a temporary pay cut of 25% is only fair. You’ll bump it back up soon enough.
  • Do unpaid demo work with the skills you want while applying for jobs that require them. If it turns out you’re not ready for the change, that’s still a useful lesson to have learned.

You could also trade time for skills:

  • Contribute to an open-source project. You’ll get advice and validation, give back to the community, and maybe get noticed by potential employers or coworkers.
  • Do a personal project for joy, inspiration, and a change from day-to-day work. For example, I cloned the pre-smartphone Snake game while learning React.

You have to look for learning opportunities, but you can’t do that constantly. For my Toptal interview project, I used Node.js and Backbone, neither of which I had much experience with. It was fun, but the required learning pace couldn’t be sustained for months.

Ideally, you’d alternate between long periods of stability (with a steady output and income) and brief intervals when you challenge yourself to learn something new. How often you do the latter depends on several factors, like your current skill set, market demand, and your personal goals.

Why Breadth Is Good for Employers

As far as employers are concerned, deep skills will always be required in some scenarios:

  • When there’s little trust or time commitment between employer and employee.
  • When catastrophic outcomes (like privacy or security incidents) are likely.
  • When esoteric skills are required.
  • When the deadlines are urgent and non-negotiable.

Still, many projects check none of those boxes and their hiring managers should consider well-rounded engineers. Many technical skills, such as testing and code documentation, and all soft skills (like communication) transfer. Resilience matters even when products don’t change completely; if the part you hired for stalls, a generalist can work on the next highest priority.

Software 3

Given the importance of broad skillsets, we should encourage developers to diversify, and we should communicate the importance of broad knowledge to employers who may be too focused on “years of experience” with various fields and skills.

The end goal is a track record of satisfied clients; in addition to hard and soft skills, that proves the engineer’s ability to transition to unfamiliar areas. It’s also a strong incentive for freelancers not to venture into new fields before they’re ready to do so.

Striking the Right Balance

When broad skills are undervalued, some good developers are idle and some good projects are understaffed or over budget. Demanding a perfect skillset match is like demanding on-site work, in that it makes it harder to match supply (qualified labour) with demand (rewarding work).

None of this is an argument against domain expertise; it will always matter and be handsomely rewarded. We should just keep in mind that broad skills also matter more than is apparent.

Feel free to share on social networks. Find the buttons below this post. This opinion article is for informational purposes only.

Remember, information/knowledge is never enough. Let us spread the word!

Follow my blog for more insightful articles:

LinkedIn connect: Temitope Adelekan

Twitter: @taymethorpenj




This is article is written by  Tiberius Florea

Brought to you by Toptal

Edited by Temitope Adelekan

How to Build Culture in Remote Teams

Culture is king in successful organizations. But executives who want to embrace the benefits of distributed teams—from higher productivity and happiness to lower stress and turnover in the workforce—often grapple with the following dilemma: isn’t it hard to nurture a healthy culture when your employees are far away?

In our view, the unique challenges of managing a distributed team can incentivize the creation of a stronger culture than those that operate face-to-face.

Our experience demonstrates that this is a misconception. Over the last five years, we’ve grown our core team to hundreds of people and hit a nine-figure annual revenue run rate—all in a 100% remote organization.

In our view, the unique challenges of managing a distributed team can incentivize the creation of a stronger culture than those that operate face-to-face. This may seem counter-intuitive, but while local teams tend to assume culture will take root organically, the stakes are higher for distributed organizations. This motivates successful remote executives to be intentional about building culture, ultimately resulting in stronger teams.

In this article, we’ll walk through our playbook for creating a successful remote culture, from defining assumptions and values to propagating and maintaining culture through best practices in hiring, communication, and management.


There are dozens of ways to define culture, but we base our definition on empirical research conducted by Edgar Schein, professor emeritus at the MIT Sloan School of Management. Schein defines culture as a pattern of basic assumptions and values, discovered or developed by a group, which are proven to lead to success.

Schein visualizes culture as a pyramid with three layers. The top slice consists of “artifacts and practices.” These are tangible things and behaviors you can see and observe within a team, like swag, stories, and the way people interact. In other words, artifacts and practices are what most people think of as culture. The reality is that these tangible elements derive from the middle and bottom layers of the culture pyramid: a team’s “values” and “underlying assumptions.” It is the combination of all three layers which constitutes culture.



Given the model above, it’s clear that the process of creating a healthy remote culture begins well before the team is formed. While Schein describes underlying assumptions as tacit or unspoken, we believe remote teams need to be deliberate and intentional in voicing them.

This is because an office environment can provide cues that speak to these assumptions on your behalf. For example, a suit and heels dress code might speak to an assumed level of professionalism. Similarly, an open floor plan might speak to an assumed level of transparency. With fewer cues to rely upon, especially during early days, remote teams should communicate these assumptions explicitly.

These assumptions typically include answers to questions of “Why do we exist?” and “How do we do what we do?” We find it is helpful to ask: “What is our true north?” In other words, what is the key principle that the team can use to calibrate their own decision-making, even if they are stranded on a desert island?

Your values in this context might consist of simple ideas like integrity or quality but they may also include specific principles such as “high standards for communication.” Your team’s purpose and mission are also included in this layer of your cultural pyramid. Keep in mind that there is no definitive list of values for remote teams. The goal, instead, is to put conscious thought toward the foundation of your team and its culture.


With assumptions and values in place, managers can start hiring with an eye for candidates who fit the framework of your culture. While many sources discuss the importance of evaluating culture during the hiring process, it is worth stressing that the cultural fit of remote team members requires particular attention. Managers should be confident that prospective hires embody your values upfront: new team members will not be in a face-to-face environment where they absorb and conform to team norms, and the signs of a bad fit may be harder to detect before damage has occurred.

The traits you look for will vary depending on role, team size and more—not to mention the unique underlying assumptions and values of your organization. With that said, we have found a pair of traits that are universal in successful remote teams: hire employees who are self-motivated and problem solvers.

With that said, we have found a pair of traits that are universal in successful remote teams: hire employees who are self-motivated and problem solvers.

The nature of remote work means that each hire will spend a greater portion of her time riddling through problems on her own. If you hire self-starters who thrive in unstructured environments, you can rest assured that their abilities, combined with the values and training you impart during onboarding, will result in decisions aligned with the team and company.


Most companies and teams understand the importance of properly training new members. But in traditional teams, cultural training is often left to chance. As we discussed above, this is because co-located organizations can rely on simple absorption of culture by new hires.

Remote teams do not have this luxury. Fortunately, face time is not required to onboard new employees into your culture, but managers should be deliberate in exposing new team members to the assumptions and values that form the basis for your artifacts and practices.

Our strategy is to emphasize our mission and values throughout training materials for new hires. We also record videos that show our executives discussing and engaging with our values. This approach scales well and provides a reference library for future use, while also feeling more personal, helping the viewer feel like they are an intimate part of the team and its mission.


Once you set values and ensure that team members understand them, it’s time to turn to the artifacts and practices that actualize culture on your team. As the main venue for remote teams to interact and collaborate, communication is the lifeblood of any remote team. Here are our best practices:


When it comes to team communication, adapting to a remote paradigm seems intuitive: team meetings are already planned and pre-scheduled, so all you need to do is move from the conference room to a virtual meeting room like Zoom, right?

There’s more to it than that: team meetings need to become part of the very fabric of the team. Meetings create a regular opportunity to inspire and lead, and managers should err on the side of involving all team members so that everyone feels like a critical piece of the whole. With less opportunity to catch your teammates and clarify miscommunications, participants should set an honest and comprehensive tone to ensure the whole team is on the same page. When remote meetings devolve into simple status updates, it’s a clear sign that managers need to dig deeper.


One-on-one communication is less intuitive in a remote context, and more prone to neglect. Remote teams don’t have the luxury of building rapport via chance interactions around the water cooler. Individual conversations between team members should be just as structured as team meetings, with a regular cadence and an agenda that extends beyond the professional. Regular one-on-ones between employees of all levels are a crucial venue to deepen relationships and provide opportunities for the team to express personal praise or concerns that they may not be able to discuss in a team setting.


When communicating on platforms like Slack, the existence of both formal and informal team chats helps to keep business communication free of off-topic banter, while allowing for side conversations that build trust and center around shared hobbies or interests.

Regardless of the medium, one rule to keep in mind is clarity of communication. Sarcasm, emojis, or vague remarks can easily be misinterpreted when they are not accompanied by the body language and facial cues that our brains rely on the person. Consider this example: Team Lead A posts an instruction into a chat that all members must complete. Person B responds with a “thumbs up” emoji.

What does that mean, exactly? Does it mean that person B approves of the instruction? Does it mean that Person B will do it? Does it mean they already have?

While we don’t encourage the use of emojis or gifs as primary forms of communication (giving instructions, describing problems, etc), we do encourage their use as an emotional form of communication (happiness, celebration, sadness, etc). Over time, an established team might develop custom emojis to express memes or shared inside jokes. These bond the team and grow into artifacts that make up your team culture.


Though inexperienced remote teams may believe they can make do with audio and chat alone, the benefits of video calls should not be discounted. Instead, video should be encouraged for both team meetings and one-on-one communication. Seeing the facial reactions of team members can add emphasis and emotion to conversations. It also helps ensure that members of a meeting are all focused, contributing, and active participants in the culture you have built.


Most remote teams don’t have an “Employee of the Month” parking spot to pass around, but you should make frequent use of a simple and effective incentive at your disposal: shout outs. Public recognition of a job well done is one of the most effective ways to motivate a remote team.

Voiced during a team meeting, shout outs are public displays that set an example and provide team members with a standard to strive for. When mentioned in a team chat, a shout out gives other team members the opportunity to post their congratulations in the form of replies or emojis. If company executives also happen to be in that chat, it is an even more powerful motivator, ensuring that credit is given where credit is due.


Digital collaboration is the bread and butter of remote teams, but are face-to-face meetings ever necessary? Our experience is that a remote team with a strong culture can operate in a fast-paced environment for extended periods of time, even years, without face-to-face interaction.

If you do find yourself considering a face-to-face team meeting or on-site, keep the “Rule of 10x” in mind. If you are planning to gather together for business purposes, you should aim to make that meeting 10x more productive than a typical remote meeting. Likewise, if you are getting together for fun, you should aim for 10x more bonding than a video or voice call.

What might this look like in practice? Getting together for a few days of intense, heads-down work to hammer out the details of a new initiative can pay dividends in reducing time to market, or renting a ski house in Colorado to have a blast while discussing a new public speaking initiative.

Nothing is more demoralizing than traveling for a meeting which accomplishes nothing more than what a video call would have handled. Or meeting long-time colleagues for the first time, only to find ourselves mired down in your respective day-to-day duties with no time for enjoyable activities.

When individuals or teams do end up meeting each other for the first time, the gathering is more like a meeting of old friends than a gathering of strangers. You will find that the answers of timing, location, and purpose will reveal themselves over time based on the culture and needs of your particular team. There’s no need to sweat the details up front.


A common fear of new remote managers is that employees will lack engagement, following the stereotype of remote workers who get distracted by errands, laundry, and life. The reality is the opposite. If you hire driven individuals and unite them behind a common goal and values, team members who work remotely often find themselves working more, either unable or unwilling to step away. This is a recipe for burnout.

It is incumbent on remote managers to encourage a balanced approach to work within their teams. We have built a “work hard, play hard” culture where team members encourage and inspire each other to take advantage of our geographic flexibility to travel or pursue fun side activities.

How does this look in practice? Some individuals choose to take “mini-vacations” or “working vacations” to get relaxation in small doses. Eventually, though, everyone needs a chance to step away for a real break. This is beneficial for the individuals, but it’s also a benefit for the team itself: The absence of a team member provides a stress-test to ensure that your team can remain operational if confronted with unplanned time off due to emergency or illness.

Within remote teams, burnout can be harder to detect than it might otherwise be in a face-to-face team. When you are working together in an office, you can see the effects of stress weighing on the health and well-being of your team. Likewise, you can easily spot unsustainable binges of work that keep people in the office for days on end. When working remotely, communication, one-on-one meetings, and KPIs become the indicators you rely upon.


Many companies have started to realize the efficiency gains delivered by remote teams. This trend, combined with the global rise of freelancers, means that working remotely will soon become a fixture of many organizations.

Our experience has shown that strong remote culture is possible, and it does not require exotic technology or organizational shake-ups. By adopting the best practices outlined above, remote teams are well positioned to address the unique challenges of building culture — whether their members are spread across town or across the globe.

Feel free to share on social networks. Find the buttons below this post. This opinion article is for informational purposes only.

Remember, information/knowledge is never enough. Let us spread the word!

Follow my blog for more insightful articles:

LinkedIn connect: Temitope Adelekan

Twitter: @taymethorpenj




This is article is written by  Mark Bosma

Brought to you by Toptal

Edited by Temitope Adelekan

Introduction to Objects and References in PHP Memory

I first drafted this article while studying for my PHP certification in an effort to better understand how PHP manages variables and objects in memory. After a lot of research, I realized that it was not easy to find answers to my questions, so once I had finished, I decided to document the information so that people can find it all in one place.

In this article, I will talk about how object and variable references are controlled in memory, since this is an issue that can generate discussion and differing opinions. One question to ponder is: “By default, are objects passed by reference or by copy in PHP?” I’m going to talk first about what references are not in PHP; secondly, I’ll discuss what they are, and finally, I will examine how the garbage collector works in PHP.

How does PHP create objects in memory when performing a statement like $a = new Foo();? Nowadays, memory is not as expensive and limited a resource as it was in the past. However, it is still important for good PHP developers to know and understand how variables and objects are managed internally during the execution of their application.


Objects and References in PHP

Many people say—in PHP books and online—that objects in PHP are passed by reference by default. Others say that objects in PHP are allocated by copy. To figure out which statement is correct, first, we have to analyze what is (and what is not) a reference in PHP.

What Aren’t References in PHP?

More important than knowing what references are in PHP is knowing what they are not. In PHP, references are not C-style pointers; you cannot do arithmetic operations with references as you can with C pointers. Why? Because, unlike in C, PHP references are not really memory addresses, since they are not numbers indicating a memory location. But then, what are references?

What Are References in PHP?

In PHP, references are “aliases” that allow two different variables to read and write a single value. Put another way, they are mechanisms that allow access to the same value from variables with different names so that they behave as if they are the same variable. Keep in mind that in PHP, variable names and the content of variables are two entirely different things, linked in what it is called the “symbols table.” So, when we create a reference, it simply adds an alias for that variable in the symbol table. Suppose we have the following code:

$a = new Foo();

When the above statement is executed, the variable $a is created in memory, an object of type Foo is created in memory, and an entry is added to the symbol table which indicates that the variable $a“references” (or is related to, or points to, or whatever you want to call it) the Foo object, but it is not a pointer to that object, per se. Conceptually, we have something like this illustration:


Pop quiz: What happens if we execute this?

$b = $a;

It is not that $b becomes a reference of $a; neither can we say that $b is a copy of $a. What really happened is that we have created a new variable $b in memory and then added a new entry in the symbols table indicating that the variable $b also references the same Foo object that $a does. So, visually, we have something similar to what it is shown in this illustration:


Now, if we execute:

$c = &$a;

We will have created a third variable $c in memory, but not a new entry in the symbols table for $c. Instead, in the symbols table, it is recorded that $c is an alias for $a, so it will behave identically but $c is not a pointer to $a—unlike in C, which creates something called pointers to pointers. To visualize, we have something similar to what it is shown in this illustration:


As soon as we want to modify the value of any of these three variables (i.e., write a new value), PHP will have to create a new z_val structure in memory to separate the content of the variable $b and the pair $a/$cso they can each be modified independently without affecting the other’s value. So, if we add the following line to the previous script:

$b = new Bar();

In memory, we will have a situation as represented in the following illustration:


Now, let’s consider a more complete example:


class myClass {
    public $var;
    function __construct() {
	$this->var = 1;

    function inc() { return ++$this->var; }

$a = new myClass(); // $a "references" a Foo object
$b = $a; //b also references the same Foo object as a
//($a) == ($b) == <id> of Foo object, but a and b are different entries in symbols table

echo "$a = ";var_dump($a);
echo "$b = ";var_dump($b);

$c = &$a; //$c is an alias of $a
//($a, $c) == <id> of Foo object, c is an alias of a in the symbols table
echo "$c = ";var_dump($c);

$a = NULL;
//The entry in the symbols table which links "$a" with Foo object is removed
//Since that entry was removed, $c is not related to Foo anymore
//Anyway, Foo still exists in memory and it is still linked by $b
echo "$a = ";var_dump($a);
echo "$b = ";var_dump($b);
echo "$c = ";var_dump($c);
echo "$b->var: ".$b->inc();
echo "$b->var: ".$b->inc();

$b = NULL;
//The entry in the symbols table which links "$b" with the Foo object is removed
//There are no more entries in the symbols table linked to Foo,
//So, Foo is not referenced anymore and can be deleted by the garbage collector

echo "$b = ";var_dump($b);

The output produced by the implementation of the script above is:

$a = object(myClass)#1 (1) { ["var"]=> int(1) } 
$b = object(myClass)#1 (1) { ["var"]=> int(1) } 

$c = object(myClass)#1 (1) { ["var"]=> int(1) } 
$a = NULL 
$b = object(myClass)#1 (1) { ["var"]=> int(1) } 
$c = NULL 
$b->var: 2
$b->var: 3

$b = NULL

PHP Garbage Collection

Finally, let’s see how PHP garbage collection works since it was introduced in version 5.3. An object or variable in PHP memory will be removed by the PHP garbage collector when there are no references to that object in the symbols table. That is, PHP maintains references counter of an object from the time it is created so that during the execution of the script PHP, the counter increments and decrements that reference counter based on the variables that are “pointing” to it. Once the reference count reaches 0 (i.e., nothing is referencing that object and, therefore, it is not being used), PHP marks that object as removable, so that in the next pass of the PHP garbage collector, it will be removed from memory, freeing that space for reuse. If you’d like more in-depth detail about how PHP garbage collection works, read this documentation.

Closing Thoughts

I hope I have clarified a little how PHP handles objects and variables in memory and how it “selects” the objects that should be removed by the PHP garbage collector.

Now that you understand how PHP manages variables and objects in memory internally, grab your laptop and start to experiment with some code to prove what you’ve learned. Try playing around with variables and references. Also, experiment with how changing the value of a variable could affect the value of another referencing it. Here’s a question for you: What will be the values of $a and $b after the code below is executed?

$a = '1';
$b = &$a;
$b = "2$b";

If you’re interested in reading more about PHP performance features, check out this post by fellow Toptaler Vilson Duka.

Feel free to share on social networks. Find the buttons below this post. This opinion article is for informational purposes only.

Remember, information/knowledge is never enough. Let us spread the word!

Follow my blog for more insightful articles:

LinkedIn connect: Temitope Adelekan

Twitter: @taymethorpenj




This is article is written by  Agustin Villalba

Brought to you by Toptal

Edited by Temitope Adelekan

Angular Change Detection and the OnPush Strategy


You have started using Angular for all of your favorite projects. You know what Angular has to offer, and how you can leverage it to build amazing web apps. But, there are certain things about Angular, and knowing they can make you better at using Angular for your projects.

Data flow being at the center of almost all things Angular, change detection is something worth knowing about, as it will help you trace bugs much more easily and give you an opportunity to further optimize your apps when working with a complex data set.


In this article, you will learn how Angular detects changes in its data structures and how you can make them immutable to make the most out of Angular’s change detection strategies.

Change Detection in Angular

When you change any of your models, Angular detects the changes and immediately updates the views. This is change detection in Angular. The purpose of this mechanism is to make sure the underlying views are always in sync with their corresponding models. This core feature of Angular is what makes the framework tick and is partly the reason why Angular is a neat choice for developing modern web apps.

A model in Angular can change as a result of any of the following scenarios:

  • DOM events (click, hover over, etc.)
  • AJAX requests
  • Timers (setTimer(), setInterval())

Change Detectors

All Angular apps are made up of a hierarchical tree of components. At runtime, Angular creates a separate change detector class for every component in the tree, which then eventually forms a hierarchy of change detectors similar to the hierarchy tree of components.

Whenever change detection is triggered, Angular walks down this tree of change detectors to determine if any of them have reported changes.

The change detection cycle is always performed once for every detected change and starts from the root change detector and goes all the way down in a sequential fashion. This sequential design choice is nice because it updates the model in a predictable way since we know component data can only come from its parent.


The change detectors provide a way to keep track of the component’s previous and current states as well as its structure in order to report changes to Angular.

If Angular gets the report from a change detector, it instructs the corresponding component to re-render and update the DOM accordingly.

Change Detection Strategies

Value vs. Reference Types

In order to understand what a change detection strategy is and why it works, we must first understand the difference between value types and reference types in JavaScript. If you are already familiar with how this works, you can skip this section.

To get started, let’s review value types and reference types and their classifications.

Value Types

  • Boolean
  • Null
  • Undefined
  • Number
  • String

For simplicity, one can imagine that these types simply store their value on the stack memory (which is technically not true but it’s sufficient for this article). See the stack memory and its values in the image below for example.


Reference Types

  • Arrays
  • Objects
  • Functions

These types are a bit more complicated as they store a reference on the stack memory, which points to their actual value on the heap memory. You can see how stack memory and heap memory work together in the example image below. We see the stack memory references the actual values of the reference type in the heap memory.


The important distinction to make between value types and reference types is that, in order to read the value of the value type, we just have to query the stack memory, but in order to read the value of a reference type, we need to first query the stack memory to get the reference and then secondly use that reference to query the heap memory to locate the value of the reference type.

Default Strategy

As we stated earlier, Angular monitors changes on the model in order to make sure it catches all of the changes. It will check for any differences between the previous state and current state of the overall application model.

The question that Angular asks in the default change detection strategy is: Has any value in the model changed? But for a reference type, we can implement strategies so that we can ask a better question. This is where OnPush change detection strategy comes in.

OnPush Strategy

The main idea behind the OnPush strategy manifests from the realization that if we treat reference types as immutable objects, we can detect if a value has changed much faster. When a reference type is immutable, this means every time it is updated, the reference on the stack memory will have to change. Now we can simply check: Has the reference (in the stack) of the reference type changed? If yes, only then check all the values (on the heap). Refer back to the previous stack heap diagrams if this is confusing.

The OnPush strategy basically asks two questions instead of one. Has the reference of the reference type changed? If yes, then have the values in heap memory changed?

For example, assume we have an immutable array with 30 elements and we want to know if there are any changes. We know that, in order for there to be any updates to the immutable array, the reference (on the stack) of it would have to have changed. This means we can initially check to see if the reference to the array is any different, which would potentially save us from doing 30 more checks (in the heap) to determine which element is different. This is called the OnPush strategy.

So, you might ask, what does it mean to treat reference types as immutable? It means we never set the property of a reference type, but instead reassign the value all together. See below:

Treating objects as mutable:

static mutable() {
  var before = {foo: "bar"};
  var current = before; = "hello";
  console.log(before === current);
  // => true

Treating objects as immutable:

static mutable() {
  var before = {foo: "bar"};
  var current = before;
  current = {foo "hello"};
  console.log(before === current);
  // => false

Note that, in the examples above, we are “treating” reference types as immutable by convention, so in the end we are still working with mutable objects, but just “pretending” they are immutable.

So how do you implement OnPush strategy for a component? All you need to do is add the changeDetectionparameter in their @Component annotation.

import {ChangeDetectionStrategy, Component} from '@angular/core';

  // ...
  changeDetection: ChangeDetectionStrategy.OnPush
export class OnPushComponent {
  // ...


It is a good idea to enforce immutability if one decides to use the OnPush strategy on an Angular component. That is where Immutable.js comes in.

Immutable.js is a library created by Facebook for immutability in JavaScript. They have many immutable data structures, like List, Map, and Stack. For the purposes of this article, List and Map will be illustrated. For more reference, please check out the official documentation here.

In order to add Immutable.js to your projects, please make sure to go into your terminal and run:

$ npm install immutable --save

Also make sure to import the data structures you are using from Immutable.js in the component where you are using it.

import {Map, List} from 'immutable';

This is how an Immutable.js Map can be used:

var foobar = {foo: "bar"};
var immutableFoobar = Map(foobar);

// => bar

And, an Array can be used:

var helloWorld = ["Hello", "World!"];
var immutableHelloWorld = List(helloWorld);
// => Hello
// => World!

helloWorld.push("Hello Mars!");
// => Hello Mars!

Drawbacks of Using Immutable.js

There are a couple main arguable drawbacks of using Immutable.js.

As you may have noticed, it’s a bit cumbersome to use its API, and a traditional JavaScript developer may not like this. A more serious problem has to do with not being able to implement interfaces for your data model since Immutable.js doesn’t support interfaces.

Wrap Up

You may be asking why the OnPush strategy is not the default strategy for Angular. I presume it is because Angular didn’t want to force JavaScript developers to work with immutable objects. But, that doesn’t mean you are forbidden from using it.

If that is something you want to leverage in your next web project, you now know how easy Angular makes it to switch to a different change detection strategy.

Feel free to share on social networks. Find the buttons below this post. This opinion article is for informational purposes only.

Remember, information/knowledge is never enough. Let us spread the word!

Follow my blog for more insightful articles:

LinkedIn connect: Temitope Adelekan

Twitter: @taymethorpenj




This is article is written by  Ahmet Shapiro-Erciyas

Brought to you by Toptal

Edited by Temitope Adelekan