Exercises for work

The average of a working day is 8 hours, in some cases is a little bit more, we spend most of our day working. A considerable percentage of the population works sitting in front of a computer, which brings great benefits in the workplace, but it is not so in the field of health. People who are seated most of the time develop a series of conditions, especially those who are affected by sedentary lifestyle, vision problems and posture. There are other associated problems such as carpal tunnel, low back pain or even spinal disc. That is why in this blog I’m going to share some of the most common conditions that people who work sitting most of the time probably have, as well as some easy exercises they can do to avoid these discomforts.


• Column and cervical: When we are in the chair of our work we tend to adopt a hunched posture which can exaggerate the natural arch of our spine, in addition to the creation of this hump, the disks of the vertebrae are worn, which are shock absorbers and allow you to release the weight when standing, when these discs are compressed they wear out.

  • When staring at screens, we tend to blink less. If we reduce the flickering, the eye gets a bad lubrication. This means that if we spend many hours in front of a screen, we could suffer from dry eyes. This symptomatology occurs in young patients, since their work activities tend to be linked to the use of computers and cell phones. In this case it is advisable to take small breaks during working hours, there are also drops to refresh the vision.
  • Another part of our body that are most affected are the hands, the bad position of our wrist can cause damage to our carpal tunnel, which causes excessive pressure on the median nerve. This is the nerve of the wrist that allows us to have sensitivity and movement on some parts of the hand. Carpal tunnel syndrome can cause numbness, tingling, weakness, or muscle damage to the hand and fingers.
  • Another of the most common problems is work anxiety, the fact that certain things do not work out well in our work causes us great stress levels which can trigger anxiety, so I’m going to leave here some steps that can help us calm down a bit our anxiety
  1. Breathe, just like when we feel nervous, breathing when we have anxiety at work is one of the simplest and most effective methods to calm down
  2. move
  3. Talk to someone
  4. Listen to music
  5. Do not rush
  6. Ask for help
  7. Don’t block yourself
  8. And don’t forget to smile
  • More studies are needed on the discomforts that are caused by sitting and not having physical activity, and how this affects our health. However, it seems clear that sitting less and moving more generally contribute to better health. You can start simply by standing instead of sitting when you have the opportunity or looking for ways to walk while you work.

How to Manage High Perfomance Virtual Teams

virtual or remote team (a small number of people with complementary skills, who are committed to a common purpose and performance goals) is comprised of team members who share responsibility for achieving defined objectives and who perform from a flexible mix of stationary, mobile and/or remote work environments.What is the difference between manage on site developers or virtual employees worlwide, today the re is not a real difference and companies are improving new ways top manage virtual teams.

Virtual teams versus traditional teams

There are several important differences between traditional teams and virtual or remote ones:

  • Meetings are not always face to face
  • Workplaces of team members may be in different locations and time zones
  • Culture – team members’ cultures can be vastly different
  • Relationships tend to be more difficult to build as team members have different styles and behaviours and there is little or no time for personal interaction
  • Communication may be hampered because it is not always possible to see body language, facial expressions or gestures and non-verbal cues.

Today with emerging technologies is usually companies have to adapt to new challenges and lifestyles, now people prefer stay at home and share with family, not waste time not is a life rule, with new technologies and new commercial trends.

What is the difference between Remote vs Virtual Teams?

A remote team works directly for their manager to deliver defined work, but members are not geographically co located. This means that time zone is similar and guarateed a live comunication and interaction between employees and managers. Remote team member usually have specific funtional role and experience, software development, designers and data science are part of remote teams worldwide. Companies are open to contract remote position because is difficult get experienced talent.

Virtual Teams are brought together to perform specific tasks or resolve specific issues, virtual employees usually work inside the organization but have option of Work- from- home or inclusive freelance or part time jobs, but this can of position are the support team in specific tasks. Virtual Assitance, Call centers or Support Engineer are example of virtual teams and activities that they do.

A real advantage of virtual and remote teams is management in time and workflow that traditional employees not have, define KPis is key tool to measure performance of this teams. Not means that can have control all the time, but can guaranteed analytical data about workflow and deadline.

Remote vs Onsite Software Developer

The increased acceptance of remote versus co-located teams and the availability of effective tools that enable it are among the most significant trends affecting technology industry employment today. Companies are adapting to new changes a freelance and outsourcing companies are providing talent solutions worldwide.

As with most things in business, productivity and cost are the dominant factors when choosing between remote and co-located workplaces. But there’s no one answer—what works for some firms doesn’t work for others. 

Big problem is communication and management between companies, but now technology tools allow a easy online communication, not matter the country that provide the outsourcing services.

Remote work is still an emerging field of study, and data on the effectiveness of distributed teams is largely anecdotal. But there’s a substantial amount of research on open offices and spaces, which is the usual alternative to working remotely. Studies on open offices have ranged from the health and productivity impact of noise, to how noise may impair arithmetic ability, to basic employee satisfaction.

On site development have advantage or disadvantages depending the companies stage, usually when companies are growing are trying to reduce operative cost that can difficult scalability issues specially startups or mid-size companies. Software Development on site can increase payroll and taxes 55% more than outsourcing this services to other regions as Latin America, Asia, Europe. However the highest rates and quality is the principal inconvenience to contract external services.

An advantage to software development in house depends about regions and cultural in each country, however language or culture can affect interaction between clients and providers as:

  • No language/cultural boundaries. It is a team of the professionals probably from the same country/city as you are, with the same cultural and language background working within the same organization. What advantages does hiring in-house team give to you? Fewer boundaries and limitations, face-to-face communications and, as a result, a better understanding of what should be done.
  • Deep involvement. It allows you to maximize the customization of in-house engineering process for every minor tech need of your company. You can make appropriate changes in the development process easily to adjust the project to your business.
  • In-project expertise. Internal specialists master their skills in building the project you started and soon become narrowly focused professionals of the highest level. This reduces bugs and, in addition, it means that the support will be straightforward and efficient, and your company has enough skills to maintain the product independently.

Who Need a Staffing Firm?

Have you ever wondered why people use staffing firms to find work? Maybe people do not have idea how they work —or have a little bit idea- What are benefits staffing companies? Take note, here are some signs you’re an ideal candidate or work with a staffing firm or your organization need outsourcing services.

For Companies

Quality candidates use staffing agencies

Quality candidates use staffing agencies. People with over three experience year tend to look for top staffing agencies to find job openings. This makes logical sense if you consider the reality of many job positions today. These listings are mostly for entry-level positions and offer of talent and freelance are increasing, so staffing agencies are more likely to be aware of the higher-level positions.

Staffing Agencies have Ready Resources

Staffing agencies usually have resources ready to work, HR demand today allow a competition between companies to get the best talent, bigger companies are interested in quality talent. Anyone who has ever taken a hands-on role in the hiring process knows how much time and energy it takes. There’s a lot of back-and-forth between the applicant and the recruiting, and this can take away from other valuable company activities.

Staffing companies understand your need

Companies always are busy looking for new business model or scale their business, for this reason staffing companies can help to solve this pain. Recruiting process is a real problem, but staffing agencies get talent is more easy and fast.

For Candidates

Open Jobs Positions

Staffing agencies always offer a great job offer for candidates and opportunities to grow up with emerging industries or companies, startups and mid-size companies are trusting in staffing agencies to hire qualified talent. Since staffing agencies and recruiters evaluate your business in depth, they can find the perfect candidate for niche positions.

Growth Opportunities

Staffing companies can offer a culture fit and growth opportunities for companies, if the clients increase jobs positions are open and possibilities to get talent is easier just with a good employer branding and reputation.

Skills Development

When candidates start to work in a traditional company usually have a trial period to adapt to new environment, staffing companies offer training and develop of new skills to fit with this new job position, this a important factor to take or work remotely or partial time, including possibility to travel with a remote job position.

Introducing 4Geeks Teams

You know we are obsessed to help global companies to find their potential, build better products and improve their ROI. Today we are happy to introduce you 4Geeks Teams, a new effort to insert the most possible value on modern companies hungry to get succeed in the information era.

Similar to other products in our portfolio, 4Geeks Teams is built with 100% love, honesty and a rude business mindset.

4Geeks Teams is a powerful product to help principally US-based small and mid-size companies to start their own extended technical team in Latin America, on-demand. All-inclusive rate. You can expect up to 55% cost operation saving on your company starting first month.

We know about all the problems currently US companies is facing related to high operations cost because of government taxes, payroll, office, etc.

Historically some companies were putting their eyes on India to outsource some technical work like web and mobile development, and QA/testing. But this brings with hundreds of new unstoppable problems like team collaborations, timezone, etc.

With us, your engineering or consultants team could be located in any of our delivery centers in Costa Rica or any trusted partner in Latin America. By default your team is fluent in English.

You can hire software developers experts in PythonGoJavaRuby on RailsMicrosoft .NETAngular,PHPNodeJSReact  React Native Flutter (Android, iOS) or Data Analytics.

Payment and contract terms are going to be simple: You will receive only one monthly invoice that includes everything (office, workstation, computer with webcam, etc ). You don’t need to take care about any extra thing, process or legal documentation. Once you apply the 7-days trial period you will receive a complete business audit. After that, if you agree, the contract extends to 6 months. There is no a minimum team members to hire, so you can start with 1, 2 or 3 guys…. or even a 9-people team.

If you run a tech startup, digital agency or software company, maybe 4Geeks Teams is for you.

So, now all your business problems comes to be fixed thanks to 4Geeks Teams.

Introducing #GeekCapsule videos series

You have been a star follower for months (or years), and you already know the genuine passion we put on doing every single thing; every single project, every single product. We never will stop to do that.

Couple months ago we started a podcast; all you invited to listening.

I’m pretty happy because a couple days we published the first #GeekCapsule video (introduction). So, what the hell is #GeekCapsule? Simple: it’s videos series, interactive, about business, product design, product development and product marketing.

The plan is create and share with all you our experience and knowledge in fields that we are experts.

So, feel free to subscribe our YouTube channel in order to get notifications when a new topic is up, and share with your community and business network on Facebook, Twitter and LinkedIn.

I would like to use this opportunity to ask you: What’s topics is more critical for your business at this moment? What business problems are you facing? Please share with me your comments below.

Best.

Why 4Geeks is Different to Other IT Firms? Here is 3 Key Points To Understand It

Hi there! In a varied market is important to identify the actors (the real ones). I started this article to show the differences between 4Geeks and other software companies or agencies.

As I said before: “we hate to compare talent, but many people get confused, and they believe that pricing is an advantage”.

Sergio and I founded 4Geeks because bad experiences with other software companies, related in most cases with a misinterpretation of the market. We firmly believe in personal relationships as the engine of a healthy company, both for customers and employees.

Please let me explain you, in 4 key points why 4Geeks is not like a regular software company:

Key #1: Family first

If you come to the office, you can see all team members are a truth family. I’m not kidding. In a family they take care of each other, in all aspects; and that is exactly what happens in 4Geeks.

What would you be able to do for your own family? Everything you can. We too.

The following video is a slide of a weekend team at the beach apartment singing She Will Be Loved by Maroon 5. We are not responsible for possible issues on your ears. Then if you plan to sleep tonight like a baby with no nightmares here is the original song. 🙂

 

Key #2: Continuos learning habits

In 4Geeks it’s forbidden to do nothing for yourself, that is why we encourage each team member to improve their skills, both personal and technical, in order to become the people they want to become.

My partner Sergio is in charge of culture here in 4Geeks, and he implements a Career Path. It’s a plan to measure and to empower the team, one-to-one.

Ivan and Diego in meeting with Sergio

Technical skills are important, but personal development is in the mainstream.

Byron, Allan and Diego practicing boxing.

 

Key #3: Driven by passion. 10X mindset.

We are not simple coders, designers or consultants. We have an entrepreneurial mindset. Family and passion are two of our best team features, and we have some methods to recognize a “driven by passion” people.

Byron practicing swimming

“Shoot for the moon. Even if you miss it you will land among the stars.” —Les Brown.

The last month we did a workshop about dreams, and how to materialize it by visualization. It’s a ver huge gun! In the following video you can see some team members explaining their “dream paths”. Feel free to replicate it in your company.

 

A couple weeks ago we published a business article that puts 4Geeks and Indian (and other) companies face to face. I really love all of them, but I hope this can help you understand better the main benefits of working with 4Geeks vs other agencies and companies around the globe.

Have questions or want to come to visit us? You already knows what to do.

Until next. Bye!

Nearshoring to boost your business

Day by day we enjoy to bring value to our clients projects, who are, almost in 90%, located in our development offices abroad. (Costa Rica and Mexico). But, at the first time we talk to our clients they are hesitating if a nearshore company is the solution for their problems and needs or not, is it better to do offshore ? why not having my own IT department ? how can I trust you ?. Those are some examples of questions We answer to our clients and leads in a daily basis.

Starting from the basics I will like to make a difference between Nearshore and Offshore.

Offshore

It’s to development products but generally overseas, with mostly languages barriers and not compatible time zones. I can think on different countries mostly in Europe and Asia, countries like India, Pakistan, Ukraine and Rusia.

Offshore can represent a considerable reduce on your operational costs, also, considering different tools to find freelance developers in those countries will save you some money. However, there is a gap in time zone, which goes from 6 hrs to 9 hrs difference.

Communication has a key rol on project success, having that time difference can impact badly for your project, by waiting valuable time to get response on some specs, also, you may need to do extra effort creating documentation and adapting Agile methodologies.

Nearshore

You will have your team within a short time zone different (1-2 hrs as much). With that been said, you can start aproaching agile practices, meetings and avoid miscommunications.

You can visit your team really easily, accesible flights and short period of time in an airplane. For example, a flight to India can take 15 hours and it can cost $800 but flying to Costa Rica can take from New York at least 4 hours and it can cost $250.

There’s can be a reduce on cultural and language impact, being at the same continent there are similitudes in cultural aspects, but also, in most of the American continents English has an important roll on education, we can make sure that language won’t be a problem.

We are Nearshore !

Knowing the differences we can see that nearshore teams can be more expensive than having offshore, but you will get more ROI because you will have more control on your team, there is no lacking of hours, waiting emails, responses, the communication becomes agile and understandable.

In 4Geeks we provide different nearshore offices located in Costa Rica and Mexico, providing to our clients competitive pricing and the opportunity to meet our offices and enjoy these countries.

Take a look at this video of Costa Rica. Enjoy !

Starting and changing mindset with Elixir

Created in 2012, Elixir is functional and dynamic language, which make a real option if we want to create a web application. Since, Elixir runs under Erlang virtual machine (BEAM), which make it really stable and mature.
Created by José Valim, who is a Ruby on Rails enthusiastic and had helped the community a lot. So, he took the the best of Rails and merge it with the efficiency of Elixir + Erlang.

Elixir is special for high availability systems .

Functional

The first two meanings we have to forget are objects and classes. It’s all about functions that operate and transform data, pure functions. But, We can not rely on Elixir being a pure functional language.

Dynamic

Elixir variables don’t need to be declared as an specifics data type, It checks at runtime.

Inmutable

Data structure won’t change. For example:

# Uses the match operator to give a true on function
name = “Han Solo”

# It creates a total new value for the new variable
name = “Luke Skywalker”

Concurrency

This is something that Elixir can sell without any help, It’s a big feature here. Since, Elixir runs under BEAM, concurrency is much easier. Code running simultaneously, Thanks Erlang !

Reliability

Elixir is a young language, but It runs on Erlang VM, which is pretty old and a reliable system, one of he most around the globe.

Easy to read and write

By taking some Ruby stuff, Elixir decided to go with the syntax, which is good for us. The code is easy to read and o write.

Modules or classes ?

As I mentioned before classes are not considered in Elixir, every function is stored and handled in a modules, as their namespace.
defmodule HelloModule do def say_hi do IO.puts "Hello World !" end end

Structs

This is a map where we set up a set of keys and their default values. It’s defined in the module.
 
defmodule User do
  defstruct name: "John", roles: []
end
 
iex> %User{name: "Han", roles: [:pilot, :shooter]}
User{name: "Steve", roles: [:pilot, :shooter]}

Strings

A string a basically a sequence of bytes, UTF-8 encoded binary. Elixir provides to us a set of functions to interact with our strings.

Lenght.

length/1
It returns the number of bytes in our string.
iex> String.length "Walter White"
12

Replace

replace/3
It returns a new string, It receives three parameters, the string to be changed, the pattern to be replaced and the replacement string.
iex> String.replace("Seed","e","i")"Siid"

Duplicate

duplicate/2
It returns a specific string duplicated the number of times seted
iex> String.duplicat("Hello",3)"Hello Hello Hello "

Split

split/2
Ir returns a list based on the patter of split.
iex> String.split("Hello, I'm Bond, James Bond", ",")["Hello", " I'm Bond", " James Bond"]

Collections

List

A simple collection of values, where there can be any type of data.
 
iex> ["String", 12.3 , :atom]["String", 12.3, :atom]

List Concatenation

++/2
 
iex> ["Luke", "Leia"] ++ ["Han"]
["Luke", "Leia", "Han"]

List Subtraction

–/2
 
iex> ["String", 12.3 , :atom] -- [:atom]
["String", 12.3]

Head / Tail

Heads is the first element of our list and the tail is te remaining elements on the list.
 
iex> hd ["Head", 222, :tail]
"Head"
 
iex> tl ["Head", 222, :tail]
[222, :tail]

Keyword Lists

It’s an associative list composed by two tuples, where the key have to be an atom data type, they are ordered and keys can be given more than once.
 
iex> [foo: "bar", hello: "world"]
[foo: "bar", hello: "world"]
 
iex> list = [{:a, 1}, {:b, 2}]
[a: 1, b: 2]
 
iex> list ++ [{:c, 3}]
[a: 1, b: 2, c: 3]

Maps

Maps are more flexible compare to keyword lists, keys can be any value, included variables and maps keys doesn’t follow any kind of ordering.
 
iex> key = :one

iex> list = %{key => 1, :two => 2, "three" => 3, 4 => 4}
%{:one => 1, :two => 2, "three" => 3, 4 => 4}

# Get an specific value from a given key.
iex> Map.get(list, key)
1

# Add a tuple to the current list.
iex> Map.put(list, :five, 5)
%{:one => 1, :two => 2, "three" => 3, 4 => 4, :five => 5}

# Return the map on list format. 
iex> Map.to_list(list)
[{4, 4}, {:atom, 1}, {:five, 5}, {:two, 2}, {"three", 3}]

Enum

It is a set of algorithms to be used over collections. In this section we will just show some of them. You can check all of them over here.

All

all?/2
We supply a fn(x) where will be run for all items on our collection. Will return true if all invocations returns true, with just one that returns false the entire method will return false.
 
iex> Enum.all?([1,2,3], fn(number) -> number < 5 end )
true
 
iex> Enum.all?([1,2,3], fn(number) -> number < 2 end )
false

Any

any?/2
We supply a fn(x) where will be run for all items on our collection. Will return true if at list one invocation returns true, otherwise will return false.
 
iex> Enum.any?([1,2,3], fn(number) -> number < 2 end )
true
 
iex> Enum.any?([1,2,3], fn(number) -> number == 5 end )
false

Chunk By

chunk_by/2
Specially if we need to group our collections based in a given function.
 
iex> Enum.chunk_by(["one", "two", "three", "four", "five"], fn(x) -> String.length(x) end)
[["one", "two"], ["three"], ["four", "five"]]

Each

each/2
Invokes the given function for each item on the collection. It returns an atom :ok
 
iex> Enum.each(["one", "two", "three"], fn(x) -> IO.puts(x) end)
one
two
three
:ok

Map

map/2
Invokes the given function for each item on the collection. It returns a new collection with new values.
 
iex> Enum.map(["one", "two"], fn(x) -> String.upcase(x) end)
["ONE", "TWO"]

Member

member?/2
Checks if an item exists in a collection.
 
iex>  Enum.member?(["one", "two", "three"], "three")
true

Reject

reject/2
Return a new collection of items that returns false from the given fn(x).
 
iex> Enum.reject([1,2,3,4,5,6], fn(x) -> Integer.is_even(x) end)
[1, 3, 5]

Sort

sort/2
It sorts the collection by the given fn(x).
 
iex> Enum.sort([%{:val => 2}, %{:val => 3}, %{:val => 1}], fn(x, y) -> x[:val] > y[:val] end)
[%{val: 3}, %{val: 2}, %{val: 1}]

Unique By

unique_by/2
Remove all duplicated into our collection
 
iex> Enum.uniq([1, 2, 3, 2, 1]) 
[1, 2, 3]

Pipe Operator

The pipe operator |> passes the result of an expression as the first parameter of another expression.

When I was using elixir by the first time this operator called my attention immediately. Since functional programming is about sending data and transforming it thought functions it can get really messy, but the pipe operator is something to help us on that job.

Our problem:

# Return the final value of a product
formated_price(taxes(commision(product_value(), 0.01), 0.13))

Some OO solution:
prod_val = product_value()
prod_commision = commision(prod_val, 0.01)
prod_taxes = taxes(prod_commision, 0.13)
prod_final_value = formated_price(prod_taxes)
prod_final_value

Our Elixir Solution:

product_value()
|> commision(0.01)
|> taxes(0.13)
|> formated_price()
As you can see every return value of a function is passed as the first parameter of the following function. It makes our code really easy to read.

Pattern Matching. Isn’t it just assignment?

This is a deep functionality in Elixir. To understand this a little bit more I have to say that = operator doesn’t necessarily means “assign something to a variable”, instead it really means “match the left hand side to the right hand side”. It turns the whole expression into a equation.
 
iex> x = 1
1
 
iex> 1 = x
1
 
iex>  2 = x
** (MatchError) no match of right hand side value: 1

Useful approaches

Pattern matching becomes really useful when we use it with tuples, functions or recursion.

# We want to assign to match value with te number 2
iex> {:ok, value} = {:ok, 2}
{:ok, 2}
 
iex> value
2
# If the atom value :ok doesn't match It will return a fail

iex> {:ok, value} = {:none, 2}
** (MatchError) no match of right hand side value: {:none, 2}
It seems really cool, but check this, something more functional

defmodule Greet do
  def say_hi(tuple) do
    case tuple do
      {:morning, name} ->
        "Morning #{name} !"
      {:evening, name} ->
        "Good evening #{name} !"
      _ ->
        "Default Hi !!"
    end
  end
end
 
iex> Greet.say_hi({:morning, "Luke"})
"Morning Luke !"
 
iex> Greet.say_hi({:morning, "Han"})
"Morning Han !"
 
iex> Greet.say_hi({:defaut, "Nobody"})
"Default Hi !!"
Finally, the more useful approach to me is by using Pattern Matching on functions definitions:

defmodule Greet do
  def say_hi(:morning, name) do
    "Morning #{name} !"
  end
  def say_hi(:evening, name) do
    "Good Evening #{name} !"
  end
  def say_hi(name) do
    "Default Hi #{name} !"
  end
end

iex> Greet.say_hi(:morning, "Luke")
"Morning Luke !"
 
iex> Greet.say_hi(:morning, "Han")
"Morning Han !"
 
iex> Greet.say_hi("Leila")
"Default Hi Leila !"

Conclusion

To me, having a Ruby on Rails background, Elixir seems pretty nice and I’m looking forward go deeper and deeper into this language. This entrance is part of an introduction We did in 4geeks, you can check the full video:

[30% off] Detect missed growth opportunities for your businessClaim an Audit
+