Skip to main content

The team list

Building a team? We got you. Get the best tips and how-to´s weekly on your inbox.

The world has changed and we have evolved with it. Now that our team is working remotely...

The world has changed and we have evolved with it. Now that our team is working remotely, finding a way to successfully integrate your new hires into your team is our top priority. We strongly believe a thriving onboarding process is essential to guarantee high retention.

Our team makes sure you do not have to worry about culture/onboarding anymore. We take care of everything while you spend more time working on your project goals.

As you know, we went fully remote during these crucial times and we found a way to set our remote onboarding process up for success. Do you want to know our secret?

A collaborative process.

The days where HR was fully responsible for the onboarding are over. Now, we all are an essential part of it since social interaction has become key to facilitate the adaptation process of our new members. Our goal is to integrate your new members into their positions, remote team, and our warm and friendly culture as quickly as possible, making them feel at the office even though they are working from home.

Onboarding remote team members successfully 

The sooner new team members feel part of your project, the better their performance will be in it. Let’s take a look into this process:

Getting ready

It is important to start setting new team members before their first day. We understand that starting a remote position could be challenging and we want them to be already familiar with the team and processes, this will help them feel ready and relaxed on their first day. 

We start with a video call with the new hire and our management team, this way we can introduce ourselves and they will know exactly who to talk to. We make a summary of who we are, our mission and vision, culture, and perks, provide them with a company email, and arrange the delivery of a new desk, chair, computer, and a welcome package to their house. We also tell them about our weekly activities and events that will help them establish a relationship with their coworkers and feel welcomed.

The first day

The day we were waiting for is finally here! The most important thing is to integrate the new hire(s) into our team. Via Slack, the app we use for internal communication, we share a picture of them, their role, and a welcome message that all team members have access to.

Then, they are introduced to the members of your project via Zoom. During the call, everyone has their cameras on as seeing people’s faces builds a great social connection. Your team introduces themselves, talks about the project, and gives the new member a product roadmap and the information needed to start achieving outstanding goals.

2-weeks check-in

After giving the new hire time to get used to the role, our HR team schedules a meeting 2 weeks after the start date. During this follow-up, we want to make sure that they are doing ok, that they have all they need, how they are getting along with the team, and if they feel happy and comfortable. We want them to know we are here to support them to achieve their goals.

Culture as the main ingredient

The happiness and success of our team is also a top priority. During the last year, we have worked hard creating a remote culture that makes everyone feel welcomed and included. 

To make this happen we host weekly events such as Coffee Breaks, Homespaces, Town Halls, and team challenges; these events are the roadway to virtually connect with our team and create an environment where we all feel safe to share our ideas, knowledge, and just have fun. We understand the importance of having a good work/well-being balance, therefore, we use this time to disconnect, relax, have fun, and share a few laughs with our coworkers. It is healthy!

Virtually meeting your colleagues and getting to know their faces creates a feeling of friendship and closeness, which is incredibly important for the success of the onboarding process and your project.

Experiences of our newest team members

“My onboarding process was great, keeping in mind that it was remote because of the pandemic. I had the zoom calls needed to meet all the Ideaware’s management team and the team I was going to be part of; they were all very helpful in explaining to me their roles. Getting all the proper documents and forms signed online was something I particularly liked because I received a copy of the documents right away in my email. I found it very innovative. Ideaware also gave me a new computer to work with and they delivered it to my house. They were amazing with the communication and letting me know they were here for me in every step of the way.” – Silvana N.

“The onboarding process has been so good! From the beginning, Ideaware and my team were very clear with the tasks that I was going to develop. Also, I have felt very well received by the company. I feel that I have been given the proper treatment as a worker, which generates a sense of belonging to the company.” – Esteban E.

Collaborative onboarding has been the key to successfully integrate your new hires into our team. Even if they are 600 miles away in another city, we are all part of this process. The best part is that we take care of everything, so you have more time to spend working on achieving your goals.

Thank you for reading and do not forget to share and subscribe to our newsletter below. If you have any questions about our processes, we are here for you. Contact us!

 

What a year it’s been for everyone. Things were going smoothly until March and then everything changed...

What a year it’s been for everyone. Things were going smoothly until March and then everything changed. Covid-19 hit us and we were forced to change absolutely everything about how we live and work. We had to learn new ways to cope, stay safe, and take care of our mental health.

And yet, as the world came to a crawl, we started adapting, and as an industry, we found a new rhythm.

Our remote work timeline went from 2 years to 2 weeks

We had a vision, and a timeline to shift Ideaware to a 100% remote company by 2022. We had just started drafting plans when, well, you know what happened.

Sending everyone home to work, making sure they had everything they need to be productive, and coming up with processes was no easy task. For the first few weeks of our lockdown in Colombia, we were hard at work adapting.

We realized that our remote Fridays were a whole different ball game than remote work lockdown.

Eventually, we figured things out. And so did our customers.

I’m happy to say things are positively moving forward for our team and our customers, we’re now making plans to never require anyone to work at our HQ for 8 hours a day again.

Remote is here to stay for us. Most of our customers are not only also working remotely but many were already distributed before the pandemic, so this has made the transition easier for everyone.

With hard work, we’ve adapted

Most of us in the industry were already seeing remote as the future of work, but now that future is here. We’ve established new processes and new perks for the team to adjust to this new world.

We also now help every single team member (new or old) set up their home office. Ideaware provides desks, equipment, and subsidized internet for everyone.

Clients and team members

We are saddened by the global tragedy this year, we are also very grateful that 2020 has been a year of growth for us.

Since April, we’ve signed on 9 new clients whom we are currently building their software teams here in Colombia. We’re now hiring all over the country and this has made our expansion easier.

26 team members have joined us since April, and we’re very excited to have every one of you on board, keep rockin’.

Making our clients successful is our top priority, this year we’ve helped our customers make over USD 50M in revenue. That is huge for us, and for them.

Activities and team bonding

Along with our new processes and perks, we also had to move all of our learning and team bonding activities online. We’ve come up with:

Homespace

A place where anyone on the team can teach all of us anything they want (whether it’s industry-related or not).

Town halls

We get the entire team on a call and share company news, policies, and exchange a laugh or two.
We’ve also got together for some fun bonding activities:

Mario Kart Tournament

Friendship Day: Homemade Bread and Coffee

Halloween Cocktail Party

Santa’s Baking Workshop

2020 – a year of learning, change, and growth

Change is inevitable and this year takes the prize. We are grateful for all the opportunities that we’ve had this year, and especially very, very grateful to our old, current, and new clients (who we really consider partners) for trusting us. We trust you too and here’s to many years of partnership.

To our team – thank you. Thank you, and thank you again. This year has not been easy on you or your families. But we’ve stayed together, we’ve learned and now we’ve grown together.

“When we least expect it, life sets us a challenge to test our courage and willingness to change; at such a moment, there is no point in pretending that nothing has happened or in saying that we are not yet ready. The challenge will not wait. Life does not look back. A week is more than enough time for us to decide whether or not to accept our destiny.”

Paulo Coelho

Thanks for reading, hope you liked this post. Please feel free to share and don’t forget to subscribe to our newsletter below!

Recruiting software development talent is a particularly challenging art, but done in the right way, it becomes very...

Recruiting software development talent is a particularly challenging art, but done in the right way, it becomes very rewarding.

We understand that finding the right talent for your project is time-consuming and demanding. At Ideaware we make sure you don’t have to worry about that. Hiring an outsource/nearshore software team is meant to be easy and headache-free.


“In technology, it’s about the people. Getting the best people, retaining them, nurturing a creative environment, and helping to find a way to innovate.”  -Marissa Mayer

From profiling to hiring

We want to make your vision a reality. To make this happen, we’ve crafted a repeatable process, with an extraordinary technical team to find the talent to meet your needs for “skill and scale.”

Stage 1: Preparation

Let’s get started!

Whether you are scaling your team or hiring a dedicated team, the first step is to identify the requirements of the position you need for your project. After the vacancy request is made, our Human Resources team will begin to work its magic. 

We use a collaborative recruiting method, which means that with our tech leads, we create the right job profile of required competencies and skills based on your needs. From this moment, we use our recruitment techniques to spread the message and the head-hunting starts.

Stage 2: Prescreening

This phase consists of selecting, organizing, and identifying cream-of-the-crop candidates by reviewing the applications. When we have selected the profiles that meet the requirements, the screening process starts with a call to each applicant. 

Here comes the fun….

Stage 3: Technical Interview

After the screening process is done, our HR team and tech leads schedule an interview with the very best candidates. We conduct a series of questions, challenges and evaluate their creativity, ability to problem solve, and culture compatibility. In the end, our tech leads give us the evaluation form with a score and feedback.

Stage 4: Job simulation exercises and final interview

Here is when you come to the mix! We share with you between 2-4 top-talent candidates with their job profiles and technical results. You review and select the ones you believe are the best fit for your project, and we will schedule your interview with them.

During this final interview, we conduct a work simulation challenge. This will help us to check the candidate’s expertise, qualifications, and understand how they will react in a future work situation. 

Stage 5: Offer and hiring

After you select your A+ candidate and give us the green light, we make an offer and our HR department starts with the hiring process. We take care of the rest.

You are all set!

Nothing but benefits…

These are just a few reasons why you should hand-off this process to us:

  • You don’t have to worry about contracts anymore.
  • You will have more time to focus on your project while we focus on finding the right talent.
  • Our experts will put together a team that goes with the personality of your project, culture, and fit your expectations.
  • The days when you had to spend endless hours screening candidates are over. Now you can spend this worry-free time centering your attention on your goals.
  • You will just interview and screen candidates that are already aligned with your requirements.

“Hiring talent is a multi-faceted skill that lies at the crossroads of social networking, technical acumen, process management, and intuition.”  -Hyam Singer

Remember that hiring is a journey and we are here to help you along the way to build the right dedicated or extended development team exactly to your needs.

Thanks for reading, hope you liked this post. Please feel free to share and don’t forget to subscribe to our newsletter below!

We invest a lot of time at our jobs. Now that we’ve shifted to working from home, we must interact more with our...

Who wouldn’t want to work in a place where they feel happy, safe, and valued?

We invest a lot of time at our jobs. Now that we’ve shifted to working from home, we must interact more with our coworkers to keep things moving and our minds sane. Being happy and having a healthy work environment is vital not only for our mental health but also for our productivity. Unlike what most people might think, creating a good work environment is not only the sole responsibility of supervisors and/or senior management teams. It is the responsibility of everyone involved in an organization. 

But how can we contribute to having a happy and healthy work environment in such hectic times, when we have deadlines to meet, goals to be achieved, and still, balance all of that with our personal lives and responsibilities? Well, you might be surprised, because it’s not as hard as you might think, and it depends a lot on ourselves as well. 

These 7 tips are fundamental  to create an environment that will, for sure, make you want to wake up every day to go to work:

  1. Respect everyone: Treat others as you would like to be treated. We have heard these words so many times before; but are we living up to them? Having due regard for other people’s rights, feelings or wishes is the root of peace.
  2. Effective communication: Have you ever stopped to think about how many misunderstandings and problems could have been avoided in life if you had communicated properly? The same thing happens at work. Communication is much more than just transmitting information from one person to another. It needs to be accurate, effective, and clear. Effective communication will build trust, will provide clarity and direction, and most important of all, will create better relationships between coworkers and supervisors.
  3. Take breaks during your workday: Long hours in front of the computer is anything but healthy and does not translate into productivity or faster achievement of goals. Try to make a pause to stretch your body and muscles at least twice a day for ten minutes each. You will soon start to feel the benefits this brings, not just to your body, but also, to your ability to concentrate at work.
  4. Avoid gossip: Avoid negative conversations, gossip, and unhappy people. Live your own experience, and if you find yourself in a difficult situation, use the appropriate channels of communication established to try to come to a solution. Remember that communication is key to a happy and healthy work environment.
  5. Be kind: Kind is the new cool. We don’t always know what people who work with us are going through. Take your time to get to know them. Try to make at least one person smile at work every day. You will see how this simple act will change not only the other person’s day but your day as well. Good acts cost nothing and make a huge difference.
  6. Help each other out: Be that person you would like to have by your side when you’re in trouble. Organizations are all about teamwork and building experiences together. Your coworker’s failure will never be your success or the success of the company. One for all, all for one.
  7. Love what you do: Last but not least, you need to love what you do. Waking up every day to do something that you’re passionate about will keep you motivated and happy. Your levels of performance will be much higher and your creativity will start to flow. Sooner rather than later, you will realize that goals are much easier to achieve once you have the drive to reach them.

At Ideaware, having fun is one of our corporate values. We are all about balancing responsibility and well-being. We understand that keeping a happy and healthy work environment is everyone’s job, and we work hard to make that one of our goals every single day. It brings great benefits for both employees and organizations, and a lot depends on you. Think happy, be happy. 

‘What you think you become’ -Buddha.

Thanks for reading, hope you liked this article. Please feel free to share and don’t forget to subscribe to our newsletter below!

We’ve all been there. Talking to a friend when suddenly you get that “Aha!” moment of a brand new idea for ...

We’ve all been there. Talking to a friend when suddenly you get that “Aha!” moment of a brand new idea for the next big mobile app. The current state of technology allows many people to dream big and start building software to solve a problem they’ve experienced or seen first hand.

However, this is no easy feat and if you want to jump on the boat of creating a web product, you’d better prepare yourself with some readings that will open your mind to a new world of opportunities.

Keep on reading to find out which books you should be buying next.

A Good Comparison First

A good analogy for building software is building a house. You plan, assign a budget, get advised, hire ideal people, and off you go.

On the other hand, building software is more flexible than a house.

Once you have the foundations and walls of your new house, changing the base structure will be very expensive and time-consuming.

Software is more malleable.

You won’t be able to modify base structure every time but there are techniques to handle the constant evolution that software projects face.

The most important thing about software being malleable is that you have to embrace projects with a very different mindset where constant change is a must and nothing is ever taken for granted.

You also have to consider a new way to handle things. To consider software as a new universe where things happen differently.

The following books are all about this mindset.

Sprint: How to Solve Big Problems and Test New Ideas in Just Five Days

Website

What I found best about this book is the approach it proposes. Sprint was written by Google Ventures members. The authors are people that have the money and power to hire people, pay for services, but that’s not the approach they want you to take.

Spending money is expensive, so Sprint wants you to do something better: validate your idea as many times and as fast as you can.

The book wants you to experiment.

Your awesome idea is awesome but you’ll face harsh reality once you take it to people to dissect it and give you down to earth feedback. First, validate your idea in a small experiment with the target group, collect feedback, iterate. By following this path your road to success will have a rock-solid foundation without guessing what your customers really need or want.

The words you want to learn and practice a lot are: experiment, prototype, validate, feedback loop, iteration.

In the end, you want to build a software product or service and, trust us, we’ve been doing it a handful of years, it’s not an easy two months thing.

Of course, you can throw everything away, do what you believe is best and create that incredible software without help from outsiders but as soon as you get it to the real world, you’ll see everything you missed and will probably find yourself thinking “if only I had asked…”

Getting Real: The smarter, faster, easier way to build a successful web application

Read online

This book is kind of a “bible” to me whenever I start a pet project.

Sadly, I read it for the first time too late after building failed projects at the personal level and company level.

This was the year the Lean methodology was booming and I got the chance to participate in a country-wide effort to get more people to build software. In this government initiative, several workshops were available to participants. In one of those workshops, here in Barranquilla, I learned about the MVP: Minimum Viable Product.

The instructor explained the MVP is the smallest version of your application that fulfills the customer needs. It was a mind-opening moment for me because I knew why I had failed before when doing my own software projects.

I tried to get those ideas to my boss at that time but with no help. The guy was stubborn and unfortunately, money was spent and lost. Project closed.

I can’t really recall how I found the book but reading it was such a good experience. It mentioned everything that went awry in that project, how we could’ve put it back on track, how to handle third party requests.

Third-party requests can kill a project.

We were working on a Learning Management System project for schools. Every time we leave a school after a meeting with the manager, a pile of requests would accumulate in our infinite backlog.

Several shortcuts and spaghetti code was written to handle so many specifics between schools. When we realized we couldn’t give everything to everyone, it was too late.

Getting Real is a book that will give actionable advice on how to avoid and not to fall into those traps.

When you’re starting your web software, you don’t need to wait a whole year to try it. You can plan small iterations and start testing with your friends, family, pals, people on the streets. Don’t fall into the trap of waiting for it to be “ready”with everything because it’ll be too late. Besides, in six months, you’ll have new ideas and the deadline will be moved or mismanaged because there’s a lot more to do.

Don’t do that. Go with the small iterations approach. Remember, Google Ventures employees advise it.

Also, a very good advice from Getting Real is “Less Mass”. Don’t get attached to “a hundred features”. That’s a sure way to fail.

Did Google start with Gmail, Hangouts, Drive, Cloud, Docs, Keep, Calendar, etc, etc? No, they didn’t. Google started as a search engine and grew from that.

Yeah, it’s nice to have a million features but it’s not worth it when you’re just starting. You’ll be losing a lot of time and money chasing the perfect app instead of delivering (and even better, charging users) early and often.

Shape Up: Stop Running in Circles and Ship Work that Matters

Read online

This is an awesome book. It explains how Basecamp (writers of previous and this book) work and the way they organize work to be done in a given period.

If you want to take advantage of the lessons in Shape Up, you need to prepare your mindset. If you’re new to software projects, it can play in your favor as you’re not so biased with other project styles such as scrum, kanban, waterfall, etc.

In summary, Shape Up wants you to do a great job defining what’s going to be done in the next six weeks. Leave all uncertainty behind, so that developers can go for it with less amount of doubts or unclear requirements.

By defining an overarching goal, you’ll let developers and designers figure how to reach it by themselves. No need to create story cards, tasks, subtasks. Just one goal. Let devs create their own tasks if they feel they need them or whatever methodology suits them best.

Normally, in a software project, there’s always something great that will pop up in the middle of an iteration. This is usually a “great” idea by someone in charge and all of a sudden they give it top priority because without it the product “would be useless”. That’s complete BS.

It’s not bad to have ideas. What is bad is to let them slip through your process. Shape Up (and also Getting Real) tells you to say “no” to that idea, at first. Reject the idea until several people or users are affected by the lack of it or even better, they suggest it.

Shape Up proposes a six weeks cycle because it’s a good amount of time to deliver something meaningful. Of course, this is not set in stone and you can test and find the best cycle for your team. What’s important is giving proper time to do serious research, validations, small iterations, and being able to deliver great and important work.

It’s not going to be six weeks doing “small things”. By no means, those six weeks will be spent doing the important work, delivering value to users. This usually means big tasks. Big releases.

Building software is an exciting journey. There are exciting, complicated problems to be solved, and a new way to help companies or people with their daily lives or routines. Software is very important in our daily lives and this is why building software requires better processes, better mindsets, and better ways to create them.

When building great software, the path and the destination must be great as well. Fortunately, there are awesome books to learn from experts and set yourself up for success.

Thanks for reading, hope you liked this article. Please feel free to share and don’t forget to subscribe to our newsletter below!

Suggested by our brains as we interact with the environment, and perfected by evolution, intuition on a daily basis is...

Suggested by our brains as we interact with the environment, and perfected by evolution, intuition on a daily basis is one of our best allies, giving us cues of how things should work without previous knowledge. 

Before diving deep, let’s start with the basics. 

Affordances 101

UX designers left the chat…

An affordance is a single attribute of an object, which invites the user to carry out an action.

A quick way to understand affordances is by thinking of all the potential uses we might find for an object. So basically, affordances are all around us. The reason why we grab (hot) coffee mugs from the handle and not from the cup, push and pull doors, and why we know how to roll but not kick a bowling ball is the effect of how our brain delivers us cues (affordances) to accurately assume how things should work.

How do we know we can do all of this? Because of their physical properties.

Physical properties play a key role to help us understand what are the affordances these objects have. Size, material, and shape for example will let us know if you can grab and throw the ball, or instead, roll it through the floor. These physical properties can help us understand what objects can do.

Affordance and luxury cars

In 2015, a button design may have cost the American brand Lincoln some bucks in their revenue after recalling from the market 13,574 cars because the engine start/stop button had to be moved. Why? -you may ask yourself- Well, it seemed like the drivers accidentally pushed the stop button while driving at full speed and I think everyone knows it’s not safe to turn off your vehicle while driving.

Affordances in the physical world are evident, their physical attributes provide hints of what you can do with them. In most cases, objects have a perceptible affordance, as their characteristics imply a specific action. That feeling we get when we look at a switch, a knob, or a red button.

A red button affords to be pushed, due to its shape, its color, and a pre-existing convention in human culture of pushing it when you are told not to. 

Designing affordances with the user experience in mind

In a digital environment, objects don’t directly influence human perception due to the lack of a 3-dimensional space in which we can interact with it easily. The job of a designer is to use visual cues to create objects/elements that produce an almost natural response by the user.

In 1988, Don Norman took the lead in implementing affordances in the context of human-computer interaction. Norman emphasized the need for explicit visual cues demonstrating the user what can they do with a certain device or widget within an interface. 

  • Interactive Elements
  • Scrollbars
  • Command Buttons
  • Links
  • Icons

The previous are basic examples of elements that can be designed to help give the user sufficient suggestions of how they can interact with a digital interface.

What types of digital affordances can we find?

In a physical state, it is pretty straightforward to identify obvious affordances around your surroundings. The digital playground is a whole different experience, cues for the user to use the digital space intuitively are harder to provide on behalf of the designer as contrary to the real world.

  1. Explicit affordances:  provide tangible cues with pretty straightforward actions for the user to notice. Labels are one example as they can indicate the functionality of a specific element.
  2. Metaphorical: Sometimes thinking about real-life references can be a great idea if you are not sure how to carry out a certain functionality. They make clever use of skeuomorphism design to convey the functionality of digital objects making a relationship with a similar real-life object. For example, a floppy disk icon will tell users that it’s a save button.
  3. Patterns: created mostly by users who frequently interact around the web establishing conventions. These affordances are fueled up by the user’s preferences. For example, clicking on a company’s website logo is an effective way of returning to the website’s home page. There is no logical reason behind this, taking into account the company’s logo doesn’t give any specific hint of this action, but still has been established as a convention across the internet. Using common patterns will help you meet users’ expectations.
  4. Implicit/Hidden: these affordances are not that obvious for the human eye. These usually remain hidden until the user makes a certain action. One example is usually a drop-down menu that appears while hovering or clicking.
  5. False: they suggest the user performs a particular action that will lead to a specific outcome, but, upon completing the action, either nothing or something unexpected happens. For example, an underlined text that isn’t a link.
  6. Negative: this type of affordance indicates when you don’t have an affordance. An example of this is when you want to indicate that you can’t do an action, perhaps having a disabled button that doesn’t let you continue until you fill out all your form.

How can affordances impact radically on your user experience?

The role of UX in the digital transformation journey is to design expertly crafted and intuitive human-computer experiences that both engage and delight end-users. Through the knowledge and implementation of affordances, the user experience can be refreshing and intuitive or a messy and confusing nightmare, and because of this, it may be a tricky task. Users cannot carry desired actions if the objects do not afford them to. So we insist that UX designers MUST build web and mobile interfaces where users shouldn’t think twice about what they are doing. 

“When affordances are taken advantage of, the user knows what to do just by looking: no picture, label, or instruction needed.”
— Don Norman, Grand Old Man of User Experience

By understanding how users think, designers may implement the correct elements to produce the desired outcome on behalf of the user.

*Mark Zuckerberg strongly approves*

How can affordances add value to your business?

Now more than ever, the digital era is upon us with great pressure on business owners to adapt to the increasing demand for digital solutions that make people’s life easier every day. Companies must invest in modern and efficient solutions to adapt their business operations to the market trend.

A key element of the success of these investments is how well are received these new tools by the consumer. The level of satisfaction that is perceived by a consumer when using a digital service may refer directly to the user experience. Digital solutions must not focus only on delivering a good cost/benefit product to their consumers but also on making them easy and intuitive to use. After all, what good is having the latest and greatest technology if no one understands how to use it?

So… Why do we push red buttons?

Affordances are everywhere. As we shop, browse, interact, play, and learn, in other words, they shape how we see our world. Designers across all industries, from experts to first-timers, must have affordances in mind to create self-explanatory objects. Acknowledging affordances by following established conventions when designing digital interfaces, will speak directly to a user and help build a memorable and lasting experience. 

This is essential in the emerging digital era, because it provides guidelines to users, for them to easily adapt to technological change. A strategy that includes user-led design will ensure your designs, communicate the affordances that best meet your end user’s needs, and will most likely ensure the intent of the application is perceived and actionable for all users. 

The reason why we push red buttons is the same as why millionaires buy expensive and luxurious goods because they can afford it.

Thanks for reading, hope you liked this post. Please feel free to share and don’t forget to subscribe to our newsletter below!

Remote work hasn’t been an impediment to celebrating our favorite holidays with the team. This time we had the...

Remote work hasn’t been an impediment to celebrating our favorite holidays with the team. This time we had the opportunity to celebrate Friendship Day by learning how to make homemade coffee and bread through Zoom. 

We knew we wanted to do something special for the team and with the help of a local bakery called Pan y Café, we sent them a package full of goodies which included the ingredients, a mug, and a freshly baked banana and chocolate bread.

From the moment they received the package, everyone started to share pictures of it on Slack and social media. At that point, we had the feeling the event was going to be a success. We were right!

On the day of the event, we started the Zoom meeting with music while we waited for everyone to join. The baker of Pan y Café started explaining to us why each ingredient was important and the role they had in the recipe, and then (our favorite part) he started to teach us how to make delicious bread.

While we were waiting for the dough to rise, we learned how to make Tinto (strong Colombian coffee) using a cloth filter. If you haven’t tried our coffee, we highly recommend you order some right now. Colombia is known for its delicious and tasty coffee.

These were the results of the experience; freshly baked bread, and a happy team! Activities like this are what help us build a stronger relationship, and keep us happy during these difficult times.

We are extremely thankful for everyone who made this possible, and we hope we can keep celebrating moments like this together, even if they have to be via zoom for now.

A message for the team

We are blessed to have such an amazing and talented team. This year has been a challenge for everyone but you are rocking it and we are very proud. Thank you for always being there for us. Happy Friendship Day!

Thanks for reading, hope you liked this post. Please feel free to share and don’t forget to subscribe to our newsletter below!

 

One lesser discussed benefit of hiring nearshore developers and designers is that you get more bang for your buck...

One lesser discussed benefit of hiring nearshore developers and designers is that you get more bang for your buck. Hiring the right nearshore software team will help you to minimize the spend and maximize the output leaving you with more budget to allocate elsewhere.

Keep in mind cost-benefit does not mean less output or quality of work, just make sure you have the right team in place with the right culture.

Here are some of the benefits many of our customers see when working with their nearshore teams:

Nearshore teams provide up to 50% cost-benefit

Compared to salaries in major US cities, you can hire a nearshore engineer for up to 50% of the cost if you hire locally.

Minimize spend while maximizing output

Having the right partner to help you screen and recruit the right people will help you create the right team of experts to maximize output while keeping within or under budget.

Quality is not compromised

Optimizing your spending does not mean that you need to compromise on quality. A dedicated team with the right partner to help you manage will ensure you have an A+ team of experts.

Hire a small team instead of a single person

By allocating your budget towards a team instead of a single person, you can specialize your team into key areas that will help you produce the best output. For example, instead of hiring one local engineer, you can hire two plus a quality assurance expert. Specializing the team into key areas means you have the right people for the job.

Having a group also means you reduce risk by distributing knowledge. This way there is no single point of failure and your team can keep moving forward even if someone is not available.

Access to more talent, right expertise

Thinking globally and going nearshore means you widen your access to the right experts. Having the right partner to screen and bring you that talent is key.

Re-allocate budget in places where you need it

Perhaps you could use a bit more budget for marketing, sales, or another key area of your business. The cash you free up by hiring nearshore will help you re-allocate.

Find the right partner, never compromise on quality. You can build the right team exactly to your needs.

Thanks for reading, hope you liked this post. Please feel free to share and don’t forget to subscribe to our newsletter below!

I believe 2020 will always be remembered as the year COVID-19 forced companies to change their corporate culture....

I believe 2020 will always be remembered as the year COVID-19 forced companies to change their corporate culture. The pandemic negatively impacted everyone’s lives but it also brought innovation and positive effects into our routines and work life. 

At Ideaware we like to see this challenge as an opportunity to transform, grow, and make positive changes in our office culture, which it’s now called: work-from-home culture. We decided to make the best of it and a positive mind has been our biggest ally to help us stay focused, productive and happy.

Remote work is not something new for us, even before the quarantine our nearshore/outsourced development teams used to work remotely at least once a week as a perk, but since the pandemic started, our team has fully transitioned to this work model. We have also adopted other important changes that have made this transition easier, keeping our team cheerful, healthy and safe.

Work-from-home updates

During the last months, our family life has merged with our work life. Now we can enjoy all the benefits of working from home with our families close by. In light of this shift, here’s how we’ve kept our team culture and remained connected:

  • Virtual Learning Activities: We host a weekly event called Homespace where any team member can talk and teach about any subject they want. We love to learn and keep ourselves updated!
  • Town Halls: A time to chat, share news/updates and have a drink with the team. Cheers!
  • Coffee Breaks: Every Tuesday we meet with the team to catch up, introduce our pets, talk about our favorite books/movies or share our favorite restaurants & food recipes. Conversations are a great way to foster team building.
  • Weekly Challenges: Our team loves to compete for prizes (who doesn’t?). We organize a weekly contest with activities that allow the whole team to participate, such as: Where is Waldo?, recreate a childhood photo, most creative video and scavengers hunts, to name a few. It is fun and cheers everyone up!
  • Game Tournaments: Last month we hosted our first Mario Kart tournament! Our team would meet at zoom to watch the competitors while they were playing in the mobile app version. It was a great experience and the team loved it!
  • Welcome to the Team Meetings: to introduce new team members, we organize a zoom meeting where we all say hi and talk about who we are and our hobbies. It’s a great way to meet the team & makes the onboarding process easier!
  • Birthday Celebrations: We used to celebrate birthdays with the whole team at the office but now that we are working remotely we send a yummy cake to the birthday boy/girl and wish them a happy birthday first thing in the morning.

Aside from having perks, we also make sure everyone in the team has everything they need to get their best work done from home:

  • Internet Bonus: the dynamic of working remotely revolves around video conferences, emails, slack conversations, sending and receiving large files, among others. To be able to keep up with the flow and provide a fast response to our clients, which is one of our top priorities, our team must have an excellent internet connection. This is why every month we give them an extra bonus to ensure the quality of their service.
  • Office Supplies: some of us were not prepared to move our office space to our homes. Having an appropriate work environment is important to feel productive and focused. For this reason we provided our team with chairs, desks and extra monitors to help them feel as comfortable as possible while working from home.
  • Healthcare Benefits: The well-being of our team is important to us, and with that in mind we have expanded our health benefits. During this time of crisis it is more important than ever to have access to great healthcare.

“It goes way further than just having the right tools in place, it is about creating culture and a feeling of belonging.” Andres Max, CEO at Ideaware.

Messages from the team

Rebeca, Talent Acquisition Manager:
“Being home, 100% of the time, has been a significant change for all of us, but keeping us safe means that we care about our close ones and the community. In this new normality, we have stayed very united as a group; the key has been having fun activities, coffee breaks, and getting the opportunity to know each other in a more personal way by introducing our children, pets, and family. We are delighted to continue welcoming new members to Ideaware, and it has been gratifying to know that even at a distance, they have felt an essential part of the team.”

Andres Max, CEO:
“One moment we were working together at the office, the next we were forced to stay at home and take care of our families and community. Aside from how we do business development, our biggest shift has been how to keep our team culture, remain close and most importantly: take care of our mental health. We have changed many of our policies and perks to our new reality. We now enjoy online get togethers, fun contests, group learning and sharing activities. We aim to keep finding new ways not only to get our best work done but also to stay focused on what matters and happy.”

Gabriella, UX/UI Designer:
“We’re all living through challenging times. Our routines have shifted dramatically in just six months while we stay safe at home. Shout out to our office that has really helped us by giving us all the necessary support and tools in order to feel comfortable working from home. Personally, it has given me the flexibility to spend quality time with my family, while my productivity and work-life balance has improved. A definite win for me has been diminishing eating takeout food and improving my cooking skills. On top of this, I have created a daily workout routine that helps me start each day with great energy. – So there’s that – We need to embrace changes and learn how to adapt by staying positive and most importantly staying safe.”

Filiberto, Backend Developer:
We are living a worldwide phenomenon never before seen in our lifetimes during the 21st century. We must all agree that it has not been an easy task for anybody to adapt to our new lifestyle. Sadly a lot of people lost their jobs as a consequence of the low income in multiple economic sectors. However there were companies that were able to adapt to this crisis and I feel lucky to be a part of one of them. I feel very fortunate to be able to continue doing my job-related tasks from home, knowing that Ideaware has provided me with everything I need to keep my work up to date for my clients. Not only have we been able to keep our projects ongoing but have also come closer to our teammates and the company has done a great job by keeping us in constant communication with fun at-home activities. During these past 6 months I had to adapt to a new set of activities and challenges in order to improve as a person. Even though I have been staying inside of my house I haven’t stopped making progress and the idea of pursuing my goals has pushed me to embrace our situation and make the best of it.”

Thanks for reading, hope you liked this post. Please feel free to share and don’t forget to subscribe to our newsletter below!

 

I was introduced to software development during a coding Bootcamp in 2018......

I was introduced to software development during a coding Bootcamp in 2018. Over there, I was amazed by the simplicity of the Ruby on Rails framework, especially the MVC pattern. It was very simple: the model was in charge of communicating with the database and retrieving all the necessary data. The controller was responsible for responding to user actions, asking the model for the data the user was requesting, and sending it to the view, which was responsible for rendering what the user would see in the browser simple and plain HTML.

Suddenly how the web worked made more sense to me. After a couple of projects, I started to want more interactivity in my websites (after all, I was a user of other products, and the bar for quality was high). That was how I met JavaScript and AJAX. I was fortunate enough to learn JS in the ES6 era, so I was able to achieve most of the things I wanted with sprinkles of vanilla JavaScript. With time, it started to get messier. I learned about REST APIs and Single Page Applications frameworks, but I always felt that it was dirtier than the initial Ruby on Rails simplicity I was introduced to.

I never really dove into the SPA wave; I learned the basics, but for my entrepreneurial venture, Rails was more than enough. Nonetheless, after most of my startups failed, I had the opportunity to work with very talented people who knew the SPA business very deeply. I went through the migration from a Rails monolith to a decoupled Frontend and Backend architecture with them. I would love to say the migration went flawlessly, but I saw how the complexities of the new architecture affected everything from the product itself to the development and engineering process in a small team like ours.

I experienced firsthand the problems with cache when a new release was out and the user did not refresh the page: the slow performance of the first print due to the need to load a big chunk of JavaScript on the first request, the complexities of managing state, the increased difficulty of debugging issues between two codebases and the decrease in deployment speed. At the same time, frontend engineers waited for the backend engineers to perform a change. It was messy.

On the other hand, I was closely following Rails development. I saw how Rails stayed on the sidelines when frameworks like React and Vue started to emerge. Instead, they launched Turbolinks, but that did not go as well as expected. Lots of Jquery code broke. They kept working on it and improving it, and after that, they launched Stimulus JS, a great minimalistic framework that paired beautifully with Turbolinks (I adopted it very early on). But still, if you wanted a very interactive interface, you ended up writing way too much custom JavaScript. But at the end of 2020, things changed. With the release of Hotwire, the puzzle was completed. The best of the Rails framework without sacrificing any interactivity on your apps and all of this with 80% less Javascript writing than usual. Mind-blowing!

So how did they achieve such a fantastic result? The reality is that, as with any great innovation, the process was very iterative. All previous attempts of avoiding Javascript complexity finally paid off. To understand this, let’s try to explain the foundations of the most basic concepts of Hotwire:

 

Turbo: Turbolinks on Steroids

It is the heart of Hotwire; most of the magic is here. Turbo provides four complementary techniques that help you speed up page changes and form submissions without writing any custom JS, divide complex pages into components, and stream partial page updates over WebSockets.

Everything starts with Turbo Drive (AKA Turbolinks), which is an interceptor for all link clicks and form submissions, that instead of reloading the page, performs requests in the background and then replaces the body (and merges the head) of the document with the returning HTML from the server. This single approach increases the page-level navigation speed a lot because you do not have to reload all the assets, and the speed at which a browser can process HTML is very similar to the speed at which it can process JSON.

For the pages that you do not want to reload completely, you now have Turbo Frames. They work similar to Turbo Drive, but instead of replacing the complete body, you have the ability to encapsulate small parts of the document that can perform individual requests to the server and replace only the content of the matching frame. For example, you can replace an edit button with the form for editing, using the same template for the edit form as if you were visiting the editing page instead. An approach that works great with HTTP/2 and caching.

Turbo Frames are great when we work with direct interactions within a single frame, but what about when we need to update other parts of the pages outside of the Frames? Well, then we can use Turbo Streams. This technique allows us to stream HTML changes to any part of the page in response to updates sent over a WebSocket connection.

These three concepts can take you far, but sooner or later, you will need some customization, and that is what Stimulus JS is for.

 

Stimulus: A JS framework for the HTML you already have.

Stimulus allows you to connect JavaScript objects to elements on the page using simple annotations. You know that moment when you add a CSS class and the element magically changes position, shape, or color. For me, Stimulus is the same concept but with Javascript instead of CSS. You just need to link your existing HTML with it, and then the magic happens, no query selectors and no need to generate the whole DOM dynamically from Javascript itself. 

The most exciting part of all is that it monitors the DOM for changes. For example, if a Turbo Stream was sent or the content of a Turbo Frame changes, the newly added HTML will connect with its corresponding Stimulus controllers and add the needed functionality immediately. No page reload is needed, and no need to listen for fancy Turbolinks load events.

 

Conclusion

The development of Hotwire and the enhancements coming to the Ruby on Rails framework are both exciting and refreshing. In a way, it feels like the first time I was introduced to the MVC pattern, a very simple yet powerful approach for building web (and now even mobile) applications without the well-known complexity of building a compelling SPA. 

I encourage anyone reading this, to try these new technologies and rethink the need for complex front-end frameworks. Finally, another path can take us to the same level of interactivity with a fraction of the complexity. It is on us to keep fighting for a world with better frameworks and techniques.

I recommend this approach to you, especially if you have a small development team or you are an indie hacker building stuff on your own. I guarantee you can go 10x faster this way, and you will end up with much better user experiences because of this.

What do you think? Is the web going to be built with more or less JavaScript in the future?

Thanks for reading. Please feel free to share and don’t forget to subscribe to our newsletter below!

As Graphic Designers, we are often the first bridge between a project’s concepts and its earliest visual assets...

As Graphic Designers, we are often the first bridge between a project’s concepts and its earliest visual assets, and because of this, we must be completely mindful of our client’s goals. The easily overlooked second point is that understanding the capabilities of our own team — and how this translates into time, effort, and resources — is just as essential.

Of course, getting used to this only comes through time and experience itself, but there is one key skill we can cultivate to ensure we’re all on the same page: Active Listening helps us understand what others are thinking, not as words forming sentences, but as concepts building ideas. We can then translate these for everyone involved in the process; the white space you just described to your client is best understood by your team’s Frontend Developer as a 250px padding on top of a new section and as a consistent breathing space for QA to keep an eye on every new page of the App.

That’s where Contextual Translating comes in. Translation entails not only knowing multiple languages but also understanding multiple contexts. This is why learning a thing or two about HTML, CSS, and other coding languages is always a bonus for designers: experience in various environments is key to fully understanding the meaning of what’s being said and implementing the correct translation.

It may appear simple as all you have to do is learn and listen. In practice, it gets tough because you might have to deal with multiple translations at once, and you can end up thinking of solutions midway through instead of actually paying attention to what is being said — but don’t fret! That’s part of learning. Knowing when you’re slipping is one of the steps towards improving your Active Listening skill, too.

Here are a few more tips to get there:

Get a coffee with a friend — then actually listen to them while drinking it.

Talk about any topic with your friend, then make a brief explanation of what they just said using your own words, trying to match their ideas. It doesn’t matter whether you have it right or wrong; what’s important is that you practice listening and rewording, which you’re going to be doing a lot in this scenario.

Talk design to people who don’t do design.

Find ways to describe common design concepts without using niche-based words, such as typography, image ratio, or even pixels. Your average client may not be aware of what these words mean, so you must describe them in a way that they can understand — that, without misleading them. A common example happens when discussing the “size” of an image: you may be referring to its dimensions (height and width), but the receiver could be thinking about the amount of data it takes up on a hard drive (kilobytes, megabytes). In the end, they are both “sizes,” so which one are you referring to? This same idea leads to a third point…

Don’t give ambiguity a chance.

Paraphrasing is not a bad practice. In fact, it is often encouraged in many contexts to welcome expansive writing in order to explain the information being conveyed more thoroughly. (See what I did there?). Talking with clients and teammates is not one of such contexts, though, and relying on terms that are far too open to multiple interpretations can and WILL lead to inexactness, which is the first step down the dooming “redesign tunnel.” Try rehearsing what you’re going to say while paying attention to the words you’re using: is this the right way to describe what you’re trying to explain? Use Google to find meanings and synonyms, and most importantly, don’t place the entire weight of a sentence on a single term; make sure to spend some time describing and contextualizing keywords so that when you use them, there are already many hints of what these words mean, leading to an easier understanding.

Even though correct communication is a crucial component of efficient design, you’d be surprised at how often we struggle to consciously incorporate these fundamentals into our work. These tips act as small shortcuts we can easily keep in mind to ensure we convey the correct message, but there are numerous books out there that explain these and many more concepts in greater detail. There’s no reason not to learn about communication; it’s one of those all-around, super-effective skills that everyone should hone, regardless of their occupation.

Thanks for reading. Please feel free to share and don’t forget to subscribe to our newsletter below!

In this blog post, we will look at how to solve a simple problem with a Python program, and then we will try to speed...

In this blog post, we will look at how to solve a simple problem with a Python program, and then we will try to speed it up by using Python’s multiprocessing module.

The main goal of this post is to illustrate how a program can be made much faster by parallelizing work through multiple processes, as opposed to running the whole workload through a single process.

Problem introduction – TCP port scanning

The problem we will be trying to solve is known as TCP port scanning. The problem consists of finding open TCP ports in a given IP address. Such a process could be used by network administrators to identify potential risks in their networks and by attackers to attempt to gain control over exposed systems.

TCP ports are represented in 16 bits, so we have a maximum of 65535 ports per IP address. Port 0 is reserved and cannot be used, so we will focus on the range 1 to 65535.

Given a hostname such as www.google.com, a start-port, and an end-port our program will have to find the IP address of the given hostname and then print all open TCP ports in the given range. 

In order to do this, we will have to make our program iterate through all ports from start-port to end-port and on each step attempt to establish a connection through the current port. If the connection can be successfully established we know the port is open, then we will print a message to let the user know.

A simple single-process solution

Let’s try to create a simple Python function using the socket module. This function takes an IP address and port number as inputs. It returns True if the port is open, and False otherwise.

The function is very simple. First, it wraps its calls inside a try/except block. It then tries to create a connection to the specified address and port. If this connection is successful it will immediately close it and return True, letting us know the port is open. If any problem occurs and the connection cannot be established it will return False, letting us know the port is closed.

The value of timeout=1 is needed to allow our program some time (1 second in this case) to establish the connection. If after 1 second our program can’t establish a connection we will assume the port is closed.

Now let’s wrap our function inside a complete program by reading some command-line arguments and printing appropriate messages. We will use argparse for argument parsing and time to measure execution time.

This is how our program works. When executed it reads the –hostname, –start-port and –end-port arguments. If a port range is not specified it will default to all ports, 1 to 65535. It then creates a variable called start_time to store the current timestamp in seconds, executes the scan_host function, and finally prints the elapsed time in seconds.

The scan_host function first translates the given hostname to an IP address, then iterates through all ports in the specified range and calls our initial is_port_open function for each port. If it finds an open port then it prints a message.

Let’s name our program port_scanner.py and save it.

Scanning 500 ports

Time to do some tests! Let’s see how long it takes to scan through 500 ports.

So our program works just fine and we were able to find two open ports. However, scanning 500 ports took 500 seconds. This is something we could have predicted given our 1-second timeout per connection attempt.

Given this, if we wanted to scan through all 65535 available ports, our program could take 65535 seconds to complete, or a little over 18 hours.

If we don’t have all day to portscan a single host, one thing is clear: our program must run faster.

One thing which comes to mind would be lowering our timeout value, but this could compromise accuracy. TCP connections need some time to establish, and not giving our program enough time could result in wrongly assuming some ports are closed when in reality could simply take some more time to accept a connection.

A better approach to speed up our program would be to try and connect to multiple ports at once, instead of trying a single port at a time. Fortunately, we can achieve this by parallelizing our workload across multiple processes. This is when multiprocessing comes to the rescue.

Speeding things up with Python’s multiprocessing

Python’s multiprocessing module provides a set of classes that allow to spawn subprocesses from a program’s main process. We will look at how we can use the Process class to speed up our port scanning program.

First, let’s modify our scan_host function to take a new workers argument and spawn a set of processes to divide the workload.

Let’s look at the different parts of our new function.

The new argument workers indicate how many subprocesses we want to launch. So given start_port and end_port we can calculate the total number of ports to scan and then divide this number by the amount of workers we will be launching:

At this point, we can iterate through our port range and compute the start_port and end_port of each one of our workers.

So to illustrate this with an example, if we give our program the following inputs:


Then the workers would be set up with the following arguments:

Now in each iteration, we can create a new instance of the Process class to spawn a new subprocess with the given arguments. We will then start the process and store it in our processes list.

When our workers launch they will call the function provided as the target argument of the Process constructor. In this case the function is scan_address. We will look at this function later.

Finally, we will call Process.join on each process to wait until they all finish.

Now, let’s put all pieces together into a new program.

Let’s name our new program port_scanner_parallel.py and save it.

Scanning 500 ports again

Now that we have what should be a much faster port scanner, let’s try scanning 500 ports again. This time we will launch 10 parallel workers.

As we can see, with 10 parallel workers we just gained a 10x improvement in execution time!

Last time, with a single process, it took 500 seconds to scan through 500 ports. Now with 10 parallel subprocesses, it takes only 50 seconds.

Scanning all ports of a host

Now that we have such a fast port scanner we can push things to the limit. Let’s try scanning all 65535 ports of a host with 100 parallel workers.

We were able to scan all ports of this host in just 131 seconds and have found four open ports.

Conclusion

We have looked at how to solve the TCP port scanning problem in Python. We initially looked at a simple single-process solution and then learned how to speed it up by using Python’s multiprocessing module.

We have learned how dividing the workload between a set of parallel workers can offer massive improvements in execution time.

Many computing problems can be parallelized like this, and now that you know how to use multiprocessing you have added a valuable tool to your toolbox. It is now up to you to apply it wisely.

Happy coding!

Thanks for reading. Please feel free to share and don’t forget to subscribe to our newsletter below!

Let’s chat, we’re user friendly!

Thinking about starting a team? Need to augment your existing team?
We’re here to help. We work with US based companies to help them grow!

You’ll be talking with
Max, our CEO.

The team list

Building a team? We got you. Get the best tips and how-to´s weekly on your inbox.

Contact
Contact

© 2023 Ideaware Co. With ❤️ from Barranquilla, Colombia.

krnl
BTroblox
PGsharp download apk
Arceus X official
Hydrogen executor apk
JJSPloit
Hdo Box
Revanced app
belenaetcher
gacha art
filmplus
iptv smarters
live nettv
kiddions mod
happy chick
openiv
krnl
cinema hd
beetv
ostora tv
xmanager
gringo xp
autoclicker.exe
inat tv