Talent Land is the largest innovation and technology event in Mexico with the venue in Guadalajara, Jalisco, aimed at the whole family, especially students and professionals.
With 7 thematic stages called “Lands”, the main stage for master lectures, 8 specialized workshops, 800 speakers, and more than 1700 hours of content, Talent Land is an incredible 5-day event with activities 24 hours a day. More than a conference group, it is a creative community connecting from all over Mexico and even internationally.
With so much to see and do, it’s hard to cover everything that’s happening in Talent Land. Although the attendees, called “talents”, could organize the agendas according to their interests, sometimes the conferences of different lands had the same schedule. Out of the 7 Lands with conferences and workshops, I was mostly in Developer Land, Meta Land, and Health Land, which dealt with topics such as software development; virtual reality and video games; and health sciences. Also, for foreigners, there are exhibits from the city of Guadalajara and famous people from the event venue, such as the helmet of the famous pilot, Sergio “Checo” Pérez, and replicas of the train and electric buses.
Among the master lectures I attended, my favorite was without a doubt that of Beakman, the character played by Paul Zaloom, one of the science popularizers of my generation and a recurring speaker on Talent Land. Other interesting speakers on the main stage were Superholly, speaking about the importance of learning languages, Katya Echazarreta, an astronaut from Jalisco, and Julioprofe, a math teacher who became one of the most famous YouTubers in Latin America with his algebra and calculus courses with whom I had the privilege of taking a picture. Like Beakman, he is a recurring guest at the event.
In Talent Land, not everything is exclusively conferences and workshops. People can get organized to create their activities, especially after midnight. The activities that I most enjoyed doing outside of the workshops and talks were the Just Dance and Beat Saber tournaments, the human claw with VR, the video game trivia in which I won anime stickers, and the DJ war where the talents can dance along.
The most important thing, in my opinion, about Talent Land is the meeting of talents, the possibility of creating communities and networks that are related to my career interests, and sharing experiences and knowledge. Many companies and universities go to Talent Land to build these talent networks and I think that Inflection Point could go to the next edition either as a sponsor, or as a partner, or as speakers. Also, Inflection Point could attract potential employees with fresh, innovative ideas.
This event, without a doubt, helps in my professional career by bringing presentations from the newest in my area, meeting new people, and finding different points of view. I highly recommend that those who have the opportunity to attend, even if it is the digital editions, go ahead and do it. They will not regret it.
If this event caught your attention, good news! From October 5 to 7, 2022, Blockchain Land, a series of conferences focused on Blockchain, cryptocurrencies, and NFTs will be held in Nuevo León.
]]>“CEOs are hired for their intellect and business expertise – and fired for a lack of emotional intelligence.” – Goleman.
Emotional intelligence is the capacity that allows us to become aware of our emotions, understand the feelings of others, tolerate the pressures and frustrations we endure at work, increase our capacity for empathy and our social skills, and increase our possibilities for social development. We can define it as the set of skills that allow greater adaptability of the person in the face of changes.
Why is it important?
It has been seen that being smart will not bring you success in life. Possibly many of us know people who are very good academically but find it difficult to build and maintain good interpersonal relationships. Being intelligent does not mean that you will be successful, but rather that human beings must seek to develop other skills in order to achieve success. The intelligence quotient can help you assimilate and learn new things, however, the emotional quotient is the one that will help you conduct yourself in the best way to the different circumstances that are presented to you. By making the right combination of both intelligences, the person will be better able to face the challenges that life presents.
Emotional intelligence in the workplace
In the workplace, there is a continuous occurrence of moments of tension, stress, and hostility. Therefore, promoting emotional intelligence in companies is a good way to improve the environment for workers.
Daniel Goleman, also known as “the father of emotional intelligence” explains that, despite popular belief, intellectual intelligence (IQ) only accounts for 20% of a person’s success. The other 80% is given to emotional intelligence (EI). On the other hand, according to the Capgemini study, productivity can increase by up to 20% when team members use emotional intelligence correctly.
Emotional intelligence can be learned and developed.
How to develop emotional intelligence?
Communicate your thoughts, opinions, and needs in a direct way that is still respectful to others.
Being able to understand that in times of conflict the goal is the resolution of the problem by making a conscious decision that is aligned with that is a key aspect of a person with emotional intelligence.
Be conscious that in conversations listening for clarity is important for you to understand what is being said, and then you will be apt to respond. Another important tip is paying attention to the nonverbals details.
To motivate others with your attitude, you have to be self-motivated yourself. Set goals and be resilient when the challenges arrive.
Be conscious of the temper of others, and guard your attitude accordingly. Keep an optimistic outlook and be aware of the things that help you have a good day.
Knowing your emotions and how they can influence others around you can be very useful to enhance your communication skills.
Being able to take critique well rather than making it personal and getting defensive is important. Take a second to understand where the critique is coming from and analyze how it can be affecting others, or your performance, and think of a way to constructively resolve the issue.
Empathy can allow us to respect and understand people with different opinions and situations. It is key to relate to others on a basic human level. Being empathetic is emotional strength, not a weakness.
Having excellent leadership skills is essential. Setting yourself high standards can be an example for others to follow. Having initiative and great decision-making and problem-solving skills is the best compliment.
Have a smile and communicate a positive appearance. Understand how to make use of social skills based on your relationship with whomever you’re with.
References:
Microsoft had its .NET Conf event from November 9 to 11, 2021, announcing .NET 6 and C# 10. Within all the new features and tools added for this release, you can find that .NET is clearly aiming to facilitate the way we collaborate when coding or hosting the applications of our organization.
It seems that technology won’t stop adapting itself to be more compatible with our day-to-day lives. Since the development of the concept of the Internet of Things, we have learned that there will always be a way to improve our daily routine, our entertainment, and our work.
New generations can often find themselves related to this type of teamwork. Considering these post-pandemic times, I’m sure Microsoft will continue facilitating the introduction of this to newcomers.
That’s why new generations can use all these amazing features that .NET has. Nowadays, you can’t have your audience intrigued with static one-way-only content and expect them to become better developers on their own.
A truly fresh experience learning to code must involve all the popular formats available (courses, podcasts, YouTube videos, social media communities, etc.) to succeed. People want to be a part of something, especially now, and .NET can help with this. Whether working on a company with an Azure infrastructure and different platform developers or coding with community support, you can find many tools to sustain your experience. Here you have some .NET 6 highlights for newcomers that will help you:
Once again, .NET Conf fulfills the highly awaited updates the community was looking for. Improving performance, functionality, usability, and security with amazing features. I can’t imagine how the merge between manual coding, machine learning, and AI would work in the future, but I’m sure it will be an exciting journey for all those brave developers looking to reach and expand tech limits.
Resources
1,2,3,4 Lander, R. (2021, November 8). Announcing .NET 6 – the fastest .net yet – .net blog. Retrieved January 26, 2022, from https://devblogs.microsoft.com/dotnet/announcing-net-6/
]]>2021 just vanished, but we could not let go of the good times we had! Last year, at the end of November, we got together to attend the Annual Product BA Team Event – this is the third year in a row this event is celebrated, and not even Covid could stop it!
The event took place via zoom during the afternoon. Still, the surprises started earlier that day when we received some delicious muffins that we could enjoy during the meeting, accompanied by a good coffee, tea, juice, or any other beverage of our choice.
As we could see new faces around and since this social distance does not allow face-to-face meetings yet, we had fun playing the game Guess Who?; we joined the game in Kahoot! where we answered questions to guess the identity of a person and the questions were based mainly on fun facts; it was very entertaining, and I can say I learned a little bit more about my colleagues and I’m sure they learned one crazy thing about me as well!
After playing the game and enjoying the delightful muffins, we were informed about the 2021 Highlights of the Product BA Team led by Leonor Miranda, the Director of Product Management, and the 2022 Trends of the market towards three main categories: Power Skills, Tactical Skills, and Technical Skills. We could see that, despite the challenges faced during this pandemic, the Product BA team has had an excellent performance increasing its presence in the company with new client opportunities, representing interesting growth for last year, which has also helped aggrandize the percentage of BAs assignments during 2021.
Another important highlight is that the Product Management area keeps working hard to encourage an Agile culture within the company. The percentage of Professional Growth Objectives that the team has set related to these initiatives increased in 2021, getting nearly 25% of goals aligned to the Agile Transformation.
For 2022 more things are about to come: it is expected to expand the Product BA team to about 5 to 10 positions just at the beginning of the year. We are also developing new capabilities to be part of new business opportunities within Cybersecurity and Data Science.
Finally, after all the important updates and news, a special guest joined the meeting! Hugo Cardenas, with a very “unique Netflix way,” introduced us to the event’s grand finale: the MVPs 2021 Awards! That year the contest was divided into 5 categories: Problem Solver, Effective Communicator, Agile Superhero, Team Builder, and Valuable Contributor. The winners were recognized for adding value by achieving good results and providing constant contributions to the team in each of the 5 categories.
To finish the event, Ramiro Castillo, our CTO and VP of Engineering, as well as Leticia Barcenas, our QA Director, congratulated the entire team on a well-done job during the year and for all the efforts we had put into this successful and great time that turned out into tangible achievements for Inflection Point. I’m sure more challenges and accomplishments are about to come in 2022, and we’re ready for them!
I’m proud to be part of this team! and, as the quote used in the closure of the event reads: “The strength of a team is each member; the strength of each member is the team” – Phil Jackson
Two weeks ago, we hosted our QA We-Tech event where team members from Perficient Latin America shared great QA content. Our first session was led by three great speakers that shared their knowledge about exploratory testing, autonomous testing, and micro services-oriented component testing.
On day two, we covered topics such as skills for a QA role, testing for projects with AI, and test data configuration. On day three, we had our live coding session that was intended to go beyond theory and strive for a more hands-on scenario.
All the sessions were recorded and are now available on our YouTube channel here. The live code session is available on our Twitch TV channel.
In case you missed any of the sessions, here is a recap of the tools, books, tips, and suggestions that our QA team members shared during the QA We-Tech.
Marlon Aguilar, QA Manager talks about how we view exploratory testing at Perficient and how we have been evolving the role of a QA manual tester to a more exploratory role. He starts by defining what is testing and explaining how it has evolved over time. Before, testing was much more focused on checking, processing information, and monitoring known risks. But, what about the unknown? That is essentially what exploratory testing tackles. It is a process meant to discover unknown risks and detect potential issues. In this sense, Marlon highlights that testing is a result of adding up two skills: checking and exploring focused on risk and product risk mitigation.
Here are some books and key referents that Marlon suggests as great assets to dig deeper into the QA field and exploratory testing:
Automation is an accelerator: if your test cases mitigate product risks, automation magnifies and accelerates the process, if, on the contrary, you have test cases that do not mitigate real risks of your product, automation magnifies and accelerates waste, Marlon Aguilar.
If you want to read more about Exploratory Testing, here is a great blog.
Yesid Lopez is a Software Development Engineer in Test (SDET) and he begins his presentation by explaining the reason why we automate testing.
Automation testing is the cornerstone of the DevOps culture. It is a way to validate what is constantly being integrated into the source code. Additionally, Yesid mentions that automation is key because it accelerates feedback loops.
Thanks to automation, bugs can be identified faster and before they even get to production. This is very valuable as it directly impacts team efficiency.
Here are some sources that Yesid used to guide his presentation and that can help you explore more about autonomous testing:
During the session, Yesid shows a quick demo where he puts into practice several tools and shows their functionality. If you want to learn more about these tools, please visit our YouTube playlist here.
Sebastian Villegas is a Software Development Engineer in Test (SDET) and he starts by explaining what component tests are and he borrows the definition used by Toby Clemson on Martin Fowler’s website to explain this concept.
During Sebastian´s presentation, you can learn how to execute a component test in a very detailed process.
Alejandro Perdomo is a Software Development Engineer in Test (SDET), and his session focuses on the skills needed for a role in QA. He tackles all the key aspects that a person looking for a career in the field of QA should have in order to build high-quality products.
Alejandro talks about quality strategy, quality practices, and QA skills. One key topic he highlights is the concept of Quality Mindset. Here, he states that if you are planning to enter the QA world and want to build high-quality products, you might consider changing your mindset and adopt a more DevOps-oriented mindset.
According to the physicist and statistician William Eduards Deming, quality is an inherent attribute of the product from the beginning of its manufacture. This idea can be better understood in the following books:
These books can give you a more detailed understanding of what inspection and quality mean. Here, technical aspects will be described as well as the soft skills needed to achieve high quality within a project, a product, and a team.
Cesar Clavijo is a QA Engineer, and he begins by explaining the concept of artificial intelligence. For that, he uses a website called Quick,Draw! to show how AI works based on data. The website was built based on AI.
German Potes is a Software Development Engineer in Test (SDET), and in his presentation, he talks about data setup and tests that use data sources.
German explains some of the issues that can be encountered in the process such as how to add the data, how to replicate data, and how to clean the data.
Additionally, German shows an example model where he adds data and then shows how to relate it. To make data human-readable he suggests having a YAML file. The objective here is to not mix code and data.
You can access the code used by German during his session here.
Check the live coding session led by our QA Engineers, Paola Agudelo and Cristian Martinez, on our Twitch TV channel.
Nobody enjoys using broken software, especially customers who value a bug-free experience.
Quality assurance (QA) teams are the unspoken heroes behind these reliable solutions. Once the developers work their magic, QA maintains a standard of excellence that people expect from their applications.
At its core, QA is about preventing software from negatively affecting customers, so an expert QA team is essential for companies that wish to uphold their reputation and retain business.
As new developments in technology push the limits of testing automation, QA testers face a new challenge. They must now demonstrate their value and bring additional benefits to the organization.
With automation improving every day, the key to a long-term QA career is to broaden your skillset and learn new abilities. Here are some skills that will take your career in QA to the next level.
Trends like software complexity and tighter deadlines are speeding the adoption of DevOps and Agile, so QA professionals need to understand both if they’re to succeed in the job market.
DevOps combines cultural philosophies, practices, and tools while melding software development and IT operations. The approach aims to shorten the software development lifecycle while providing faster delivery and higher quality products.
In a DevOps model, the silos that traditionally separate operations and development teams disappear. QA can integrate into that process with a collaborative approach, ensuring quality throughout every level of the software development lifecycle.
Agile is a different approach to software development. The focus is on responding to change and focusing on people rather than the process-focus and linear development favored by more traditional software development methodologies like Waterfall.
With automation leading the evolution of software testing, QA professionals need to develop industry-specific expertise to stay ahead of the curve. This knowledge helps you proactively identify and resolve issues to boost the business’s bottom line in ways that technology cannot achieve. You can also demonstrate that you bring strategic insights to the table and don’t just perform the tasks expected of you.
You can take this to the next level by learning about the client’s business model and emulating real-time business situations during testing. The process of mapping out business cases enables you to visualize complex problems and behaviors and verify the impact of different real-world scenarios on the product’s quality. These insights are extremely valuable to organizations, so learn how to provide them and you’ll go far.
As a QA professional, you need to understand how people will use the products you help develop, as well as the impact that bugs and glitches will have on the customer.
With continuous delivery becoming more and more widespread, you can release a buggy product and fix it later. The critical skill that QA professionals need in this case is identifying whether an error is mission-critical or is fixable in a later release. To do this, you must know how to maintain a database of bugs, in addition to cultivating this user-centric mindset.
Many products are shipped with bugs because they’re not always critical to user acceptance. As a QA professional, you have the power to prevent that.
Though statistics and data have always played a role in quality assurance, analytics is becoming more and more central to this field.
QA can use data to understand users’ behavior patterns and make data-based decisions rather than educated guesses. Analytics helps you focus your efforts, highlight areas of risk, and prioritize bugs.
QA professionals who can understand and interpret this data have a clear advantage. If you’re able to take data and draw valuable insights from it to communicate with non-data-focused departments or individuals, you’ll progress quickly in your QA career.
Technology is evolving exponentially, and it can be pretty challenging to keep up with the latest developments. But to get ahead in your career, it’s crucial to keep informed about the latest technology trends, especially in the web and mobile domains. As technology evolves, you need to adapt quickly or risk dropping behind in the race.
As part of your professional development, regularly read industry journals and well-known online publications and follow industry leaders on social platforms. It would also be a good idea to join tech communities on Reddit and other platforms where people share relevant information and discuss ongoing developments.
Once you’re aware of the industry’s direction, you can choose what to learn more about to stay in step with the pace of new technologies. Participating in discussion forums can also help you build your brand and boost your career as you make your way up the ladder.
Check our open positions here #GrowWithUs
If you want to learn more about testing and tools that can help you advance in your career in the QA field, read this blog post.
Despite the downturn of global hiring markets this year, demand for software developers continues to rise, but that doesn’t mean they can afford to become complacent. Nor should they want to!
With its constant, high-speed evolution, the software development industry is more competitive than ever before, meaning that developers and technology professionals must have their finger on the pulse of current trends and be up-to-date with skills, without losing focus on their specialty or area of expertise.
Here are five pieces of advice to help developers retain their cutting edge and stay relevant in this competitive industry, no matter their location or company.
Within the software development community, there’s a commonly accepted rule of thumb that people should learn one new programming language per year. However, if developers want to get ahead they need to keep building on their entire skillset throughout their career, not just pick up a new language now and then.
The first step towards updating your skills is knowing which programming language is best suited to enhance your software development career. Start by researching the most commonly used programming languages in the area you want to work in, then dedicate yourself to mastering it.
According to IEEE’s annual list of top programming languages, Cobol made a big comeback in the software development zeitgeist this year due to the extra load on legacy U.S. government systems. Hired reported that engineers with experience in Go received an average of 9.2 interview requests from companies hiring on the platform, while IEEE’s list confirms that Python, Java, and Javascript remain hot favorites.
Remember that the programming languages you choose to learn should be relevant to the work you want to do. For instance, having an in-depth knowledge of C++ is great to build an understanding of programming in general, but C++ alone won’t get you very far in iOS app development. Also, don’t forget that the fundamentals are still essential, whatever you choose to study.
It’s also important to focus on developing interpersonal skills (often referred to as soft skills, which doesn’t do them justice); skills such as communication, leadership, growth mindset, emotional intelligence, and many more. Because, while it’s true that technical skills are important and necessary to do your job successfully, software is built by people and the skills needed to work with other people are sometimes more important than learning a new language.
In either case, be sure to find multiple sources of information or learning opportunities. For example, sign up for free online classes and take advantage of any training opportunities at your work, but also ask to shadow someone with the skill or skills you want to develop; or read lots of books and articles, but also give yourself the opportunity to practice what you learn by working on a pro-bono project.
More companies are starting to look for developers who possess a wide area of knowledge across multiple topics but can also specialize in a specific area.
For instance, a developer might have broad expertise in several commonly used programming languages, but by mastering one programming language or skill, while retaining their knowledge of other areas, they can stand out against their peers. This approach to skills development is sometimes called T-shaped expertise.
Shaping your knowledge in this way gives you more job options to choose from and signals to employers that you’re more than a one-trick pony. It allows you to build your skills in ways that companies would find valuable, and the solid, wide base of knowledge that you’ve developed helps you transition more smoothly to different areas, increasing your value again.
Whether you plan to become a technical specialist or go down the management path, you will always have to work closely with other human beings. Collaboration skills involve learning how to communicate well with others and learning how to work within different project management frameworks.
Employers are increasingly looking for the elusive “fit” when recruiting. They’re not only looking at candidates’ skills, they’re also evaluating whether the team would want to spend 40 hours a week with that person. Possessing good collaboration skills will definitely help you in this regard.
Companies are adopting newer, more iterative ways of working as they seek to better engage with users and build products that better suit their needs. All of these modern approaches to software development require significant collaboration and communication skills.
On top of that, remote work is on the rise, especially for developers, so familiarity with virtual collaboration is also a big plus.
[Relevant Reading! How to Resolve Conflicts in Remote Software Development Teams]
It’s no longer necessary to have two degrees, a full team, and a big budget to build something good. Find a problem that makes you think or something you’ve been yearning to solve at the local level, and make a side-project out of it. It doesn’t have to be big, it can be as small as a simple command-line interface to help you pick what to have for lunch, or a random name generator based on your favorite show.
You can also try your hand at coding challenges like Advent of Code or Kaggle’s Titanic Challenge, or participate in hackathons. Not only will you learn a lot from these events, but you’ll also have an interesting practical accomplishment to mention on your CV. It will also show prospective employers that you’re capable of thinking through problems and formulating solutions.
And who knows? If you pursue it even further, it might turn out to be more than just a fun side-project.
Although in-person networking isn’t really a good option in 2020, there are now a lot of opportunities to participate in online events and connect with people you admire in your field.
Connecting with your peers will help you understand the direction the industry is moving in, and what you need to learn next to keep abreast of new developments.
Finding a good mentor will also help you grow immensely as a professional, so don’t hesitate to reach out to people you admire and ask for feedback on whatever you’re working on. Remember, social media platforms like LinkedIn and online portfolios also matter, so maintain a good online presence and update your profile pages regularly to make a better impression.
Growing in your profession can take many different forms, but most importantly, it should be something you never stop doing.
—-
Looking for more opportunities to grow in your career? We’ve got new challenges and lots of opportunities for growth! Apply today.
A little bit of healthy conflict is never a bad thing in software development.
Team members with different points of view often bring valuable new ideas to the table, which both encourages innovation and helps to improve products.
The keyword here is “healthy” because some types of unhealthy conflict are extremely damaging to team morale and productivity, especially among remote software development teams. Lindred Greer, Professor of Organizational Behavior at Stanford’s Graduate School of Business, says that “Conflict in virtual teams is more likely to be negative for performance and is more likely to escalate.”
While remote work itself doesn’t lead to conflict, poor management of remote teams can lead to miscommunication, insecurity, and confusion, creating plenty of opportunities for negative interactions. In order to successfully avoid this, development teams need to embrace a proactive approach to communication and learn valuable conflict resolution skills.
Here are a few techniques for resolving conflicts constructively and, in the long term, reducing new points of conflict within the team.
Ask your teams to work together to draft a teamwork agreement that answers questions like “What’s an acceptable response time for an email?” or “How can I check on a team member’s progress on something?” This helps remote team members set expectations and reduce the number of unknown variables when working together.
When team members have already come to a consensus on how they want to work together, there is less chance of miscommunication and conflict.
It’s critical to listen to all parties involved in a conflict and let them tell their story. This will bring clarity to the situation, revealing underlying issues and possible solutions. It also makes the involved team members feel heard and validated, giving them confidence that
There’s more chance for miscommunication in remote teams, especially in the case of software developers. For example, quick emails, short messages, and curt answers can sometimes cause misunderstandings without being properly addressed one-to-one. Remote team members also have an increased likelihood of experiencing the “online disinhibition effect”, a phenomenon where people say and do things online that they wouldn’t do in person.
To solve these challenges, analyze the way your team communicates and identify specific areas where it might be failing or causing friction. This method helps to identify patterns and common sources of conflict in your remote team.
It’s important to have a “tie-breaker” or a neutral third party who audits all the communications between remote team members in a conflict.
This person, either a manager or another team member, should also act as a facilitator, arranging the discussion and trying to resolve the issue. The facilitator must be completely neutral and not prone to taking sides.
For remote teams, a video call is the best way to have this discussion. It will allow for more nuanced, immediate communication, and help with achieving a productive resolution.
Facilitators should ideally confirm what all parties are saying by asking questions to confirm their own understanding, and even arrange further discussions to clarify details if necessary.
Once everyone reaches an acceptable compromise, the facilitator should send meeting notes and the terms of compromise in writing to everyone involved. This ensures that everyone has access to the same information, understands what has occurred, and agrees on how to move forward.
[Ready for the next challenge? We’re hiring! Check out our open positions]
If you have a clear process to handle conflict, you and your team will have the confidence to handle it amicably.
Work with your team to draw up clear guidelines for resolving conflicts, and make sure the written guidelines are placed in an easily accessible, highly visible place like your team wiki.
Your process could look something like this:
Ask your team to work together to write up unique guidelines that suit their preferred methods of conflict resolution—this collaborative effort might even help to solve a few conflicts on its own!
Every remote software development team has its own unique set of challenges and conflicts. Some conflicts can be because of personal incompatibility between developers, others might be because of differences in how team members think certain things should be done. In any case, conflicts usually don’t happen in a vacuum, so once you understand the source of conflicts, you can act to resolve them more easily and work on preventing similar conflicts in the future.
If you want to learn more about how to work with us or resolving conflicts in remote teams, get in touch!
Infrastructure as Code (IaC) is one of the most common terms we hear alongside every DevOps tool or concept. But what is it and how can we benefit from it? Let’s try to understand what IaC is all about. But first, let’s see a formal definition.
“Infrastructure as Code (IaC) is the management of infrastructure (networks, virtual machines, load balancers, and connection topology) in a descriptive model, using the same versioning the DevOps team uses for source code.” Source: Microsoft, What is Infrastructure as Code?
IaC tries to solve most of the problems with the traditional way to manage our infrastructure. This is achieved by converting every manual configuration into a human-readable code. That is, our servers, firewall setup, even our users and SSH keys can be codified in a structured manner to give us a complete definition of our infrastructure. This allows us to create environments in a safe and repeatable way.
Many tools give us this functionality but for now, let’s dive into the principal concepts that IaC enables us.
All this sounds cool, but why do I need it? Well, let’s start with the traditional way to manage infrastructure. Imagine that we are part of a small company and we run a very simple application.
Figure 1. Simple web app diagram
Apart from the code defining our application, this infrastructure requires more configuration regarding access controls, security management, scripts required to manage the services running our application, and every networking task related to our web server. Doing all the previous management by hand looks simple, but the problem is that for this configuration we would need at least two environments, which are our stage and production environment.
Now imagine that our company is moving faster and we need more space to develop the application, so another two environments are required. Tom, the guy in charge of setting up the last environment is now in another team and he doesn’t remember the details for setting up the infrastructure. Now you have to guess every part of the environment that allows your application to run. After some time doing your best, the environments are ready to go and the team starts their work.
Two weeks later, you push your application to the production environment and everything falls apart. Now you know that there was a hidden script in the production and stage environments in charge of starting some requirements for your application. You develop the app in an environment without those scripts and that causes the deployment to fail. It would have been very useful to have your infrastructure defined into code so you just take the repository, pull the trigger, and voila, your environments are ready, wouldn’t it? Just like you do it with your application every time you need it.
This is just a very simple example of what IaC can do for you. When our architecture evolves into more complex and distributed systems, introducing new changes in every environment it can be burdensome. Even the task of maintaining your documentation updated gets a lot more difficult.
Now it’s easy to see the benefits of IaC. Do you think this can be useful? Have you been in a situation similar to the previous example? The next step is to choose a tool and become familiar with it, then analyze the best way to translate all the infrastructure and manual configuration you already have in place into code. This is not an easy task and needs to be performed carefully.
We’ll dive into more of that in another blog post. We’ll keep you posted!
]]>Big Data is one of the most valuable commodities in business today, but only if organizations have the power to analyze it and make it work for them.
The term “Big Data” represents a massive amount of structured and unstructured data from several different sources. As more and more companies find themselves in possession of Big Data, there’s a greater need for tools that can extract useful insights from their monstrous reservoirs of information.
Data query engines are one of the most valuable tools in this category. In a nutshell, query engines allow companies to connect data from any source, any technology, or in any format and then query it with simple SQL commands.
In this high-level overview, we’ll take a look at the power of data query engines, as well as provide a few tips for implementing them.
To make use of their Big Data, organizations need a way to query, merge, and join data seamlessly, but the challenge is the sheer amount of different data sources and formats.
Data is found in relational databases, CSV files, XML spreadsheets, text files, non-SQL databases, and several other sources, each of which has a completely different format and structures, making it extremely difficult to analyze.
The old classic solution is to upload all of this unstructured data to a single relational database, but this requires a lot of scripts and ETL (extract, transform, and load) programs to deal with the many different formats. Relational databases are also quite slow when it comes to processing data as they don’t usually have the computing power to deal with many sources.
In order to extract any meaningful information from these data sources, companies need them to fall under a single common format, which is where data query engines come in. Query engines allow companies to connect data from different sources in different formats and different technologies and then query that data in the same way.
All query engines work with SQL, a data query language that is well-known and easy to learn. As a widely used and accessible query language, SQL is the defacto standard for commanding a system on how to display data. Query engines offer the standard SQL interface while hiding the complexity of the data storage configuration, making them extremely valuable and easy to use.
Data query engines are distributed in a way that allows organizations to process Big Data extremely quickly.
Relational databases are usually configured to one node, host, or server. Their performance is determined by how much memory or processing power they have access to. Increasing computational power to improve the performance of a relational database is known as vertical scalability, which is an expensive process.
In Big Data, there is a more powerful approach known as distributed computing, which involves implementing a cluster of computers or servers that work together to solve a problem. All data query engines are distributed based on this approach, mostly with a driver node in command of the computing power, a resource manager for administering work between nodes, and a group of worker nodes that perform the computations.
With this architecture, companies can get much better response times for queries than are possible with a simple relational database.
[Drive. Perseverance. Innovation. | Got what it takes to excel on a global scale? Join our team!]
As we’ve seen from the architecture examples above, installing a query engine can be challenging for some companies and the learning curve is slightly steeper than with relational query engines.
The configuration of clusters, driver nodes, and resource managers requires the specific technical expertise of data engineers. However, with a team of data experts handling the infrastructure and deployment in the back end, companies can focus on perfecting their SQL knowledge, performing the queries, and gathering insights from their data.
While SQL is a widely used query language, it requires a fair amount of training and experience to use most effectively. Most people can learn the basics of SQL in a few weeks but when looking for deeper insights and more accurate reporting, or trying to understand how to debug queries when they fail, it can take a few months to master.
Notebooks are a great tool for improving SQL queries because they allow people to auto-complete queries, add colors to syntax, enable live syntax validation and highlight error lines, making SQL even easier to learn. Notebooks also offer simple visualizations, and the ability to export results.
Any organization that owns a large amount of data will quickly see the advantages of using query engines.
They allow businesses to quickly and easily search their entire pool of data for insights without the need for advanced technical knowledge. With the right data experts covering the deployment and installation process, along with some basic knowledge of SQL, companies can begin analyzing and reporting on their structured and unstructured data within a relatively short amount of time.
—-
Contact us today to learn how we can help your organization implement query engines and tap into the real value of your Big Data.
Applications cannot succeed in today’s world without high levels of security built into them, so training software developers to build robust, secure products is essential.
Security can be a complicated topic. Many developers would rather learn a new coding language than focus on security practices, so companies must find ways to motivate them and create a culture of security within the team. It’s even more essential when you are working with a nearshore software development partner. It will be vital to your product to invest time ensuring your partner is developing a culture of security awareness.
All tech teams share one commonality: nobody wants to build an application without hitting the minimum quality requirements, so, with that in mind, here are some methods for avoiding that risk by developing a successful culture of security.
For many security professionals it can be much easier and faster to fix the problem themselves or try and explain things as they experienced them. In order to breakdown silos and create interest in security, those working in security need to remember they are coaching others and will have to act and speak accordingly. When attempting to address security issues with developers, the security team should approach them without too much technicality, explaining things in a common, simple language that everybody will understand to prevent confusion.
For instance, saying something complicated like, “you have an SQL injection and you’re not validating the right variables,” might throw off some people, so instead say something like, “your database is exposed because you haven’t implemented the right security functions.” This example shows how to communicate the risks to the whole team in a language they understand, and without seeming condescending or superior.
Another good tip is to be sure to teach security in an engaging way. People learn far less about a topic when forced to sit in a room for hours just listening to a teacher, so explore new methods that increase knowledge more effectively. For example, trainers or teachers could create games, quizzes, and team-based challenges to create an environment of healthy competition. If you need more direction, check out this article which addresses the difference between teaching and coaching, and may provide some helpful insights.
Remember that silence also speaks volumes, so be on the lookout for people who don’t engage during the training process as they may be struggling to grasp the concepts. It may be worth it to reach out to them before they express frustration or confusion. Let them know you are all in this together and mistakes are opportunities to improve.
A successful culture of security relies on consistent effort from everyone in the company but often stems from the security team’s ability to guide developers in the right direction. As such, your security team will need to be ready to take on the responsibility of helping development teams get up to speed and engaged in security.
The internal security team should provide documentation and support, pointing developers to well-known organizations or resources that may provide the advice or information they need. By encouraging and helping them to research things in their own ways, rather than giving them all the answers or presenting strict guidelines, they will become more motivated to focus on security during the development process and may even bring new ideas or concepts to the table.
Implementing a metrics platform for the entire team is another key approach for improving motivation, as everybody can see what is being tested, what new discoveries have been made, and how they are directly impacting the project, giving people a strong feeling that they are contributing on a higher level. This can be made in a variety of ways, but be sure to choose a method that has worked well for your team in the past.
[We’re Hiring! Interested in Security? How about DevOps? Want to start working with international clients? | Apply Now]
Recognition increases motivation and makes people feel great about their work, so never hesitate to put people on a pedestal when they make improvements to security practices. Far too often, we tend to focus on the problems and the times we’ve missed security vulnerabilities, and while that is vital to admitting mistakes and improving, morale is going to dip and the perceived level of difficulty will be off-putting for some.
For instance, somebody might execute a test and notice some unusual behavior in the application. When that behavior turns out to be a vulnerability, make sure that everyone knows which individual found it and give them huge amounts of kudos, because they may have just saved your application.
It’s important to bring the whole team into this process, so ensure there are communication channels available where everybody can congratulate people when they do something special. These channels are also essential for enabling front end, back end, and project management teams to share knowledge and information about the product’s security. Ideally, you have well-established channels for company-wide communication, enabling extensive collaboration.
As DevOps has proven, without the ability to interact as a team, there’s a danger of creating an isolated environment that hinders the development of a collaborative culture.
[RELEVANT READING | Password Management and Social Intelligence in the Era of Mr. Robot]
A strong culture of security requires the strategic use of certain automation tools, aligning the security culture with DevOps techniques, and creating a stronger security-awareness culture.
If security tests aren’t automated during the entire software development lifecycle, developers have to find and fix vulnerabilities in the late stages of development, which is much more difficult and expensive. The first approach to automated security testing should be source code analysis. Just be aware that some tools generate a lot of false positives in this stage, which can cause panic within the team, so it’s important to work with them to interpret the results correctly.
It also helps to use more than one tool for the same automation task, mixing the outputs to see if the same vulnerabilities crop up in both tests. Dependency management software can help maintain and monitor the functions being used, which is necessary to find public exploits and fix them as fast as possible.
Automation will positively impact the time and effort required to solve a vulnerability, resulting in cost savings and higher protection against future security issues. By combining automation with engaging training sessions, strong methods of collaboration, and a common security language, companies can quickly instill a security culture that permeates the whole software development lifecycle, ultimately extending benefits to the entire organization.
—-
Strong security awareness is crucial to a nearshore software development team’s success. Want to learn more? Get in touch today!
In many workplace environments, especially in the software development outsourcing industry, the concepts of teaching and coaching are often used interchangeably, despite being independent, unique approaches to employee development.
Without a clear understanding of each practice, and the impacts they have on the recipients of those practices, it’s easy to get confused about which avenue to take, which could limit people’s personal growth and success.
Here’s a look at how Perficient Latin America defines coaching and teaching, along with some advice on ensuring these similar approaches are beneficial for your teams.
Teaching (or training) is generally a one-directional practice that works best when students have limited knowledge of a specific topic, as it helps them acquire new information quickly and learn new skills.
We’ve all been in this situation: A teacher or trainer stands in front of a class and provides information, perhaps giving advice on how to solve a problem or providing an introduction to a new software development methodology. Communication is generally one-way, from teacher to student, or from a trainer to a trainee, besides maybe a few opportunities to ask questions.
The teaching process is heavily centered on the teacher, as that person is sharing knowledge and delivering the message that students need to hear. It’s best suited to large groups as a means to disperse new information, allowing many people to learn quickly and simultaneously.
Once a teaching or training session is complete, the teacher is no longer responsible for the student’s ability to apply their new knowledge and build on it. Unfortunately, in this scenario, it’s incredibly difficult for students to retain the majority of the information that they are taught during these scenarios. For teaching to be more successful, students need to be actively participating and using the information learned, this can include activities, exercises, or Q&A sessions.
In the case of teaching, it then falls on the student to take their knowledge to the next level, which is often why coaching is such a valuable next step.
[RELEVANT READING | 4 Tips for Working with Virtual Agile Development Teams]
While teaching is heavily dependent on the teacher’s knowledge, experience, and ability to share information with large groups, coaching is more focused on the individual and how they move towards personal improvement.
One-on-one coaching is the ideal practice for providing real-time feedback. Coaches can observe what coachees are doing in the moment and are able to maintain a broader understanding of their environment and constraints, giving them an opportunity to offer advice that will immediately improve the person’s performance.
Coaching makes sense for employees that already have some knowledge, allowing the coach to leverage that knowledge to help them achieve better results. Coaches should still provide advice and knowledge, but it’s always aimed at building on an individual’s existing knowledge while ensuring they achieve their goals. It’s important to note that we never stop learning in our careers and it’s vital for coaches to also become coachees, always learning and expanding their coaching skills.
Unlike teachers, coaches are responsible for ensuring other people’s development and need to make sure those people actually learn and grow. Think of it this way: if teachers are like fitness class instructors, then coaches are personal trainers—always pushing and motivating people to reach their goals.
In his best-selling book, Coaching for Performance, John Whitmore introduced the GROW principle, which stands for goal, reality, options, and will. The model works on the concept that people already know what they need to know, they only need someone to guide them towards the right answers.
The first step Whitmore suggests is to set goals. Coaches should help people set short-term and long-term goals over months and years. This goal-oriented approach to coaching enables people to overcome challenges and enjoy short-terms wins that also represent progress towards their long-term goal.
Reality is all about understanding a coachee’s current situation. Aspects like personal life, health, work style, and personality type all play a part in a person’s development, so it’s important to take these—and many other—variables into account as they will often have a huge impact on the person’s ability to meet their goals.
When you understand a person’s goals and their reality, you can shortlist the potential options for coaching. Choose one option and go with it. Define what each coaching session will look like, what time and place it will happen, and the topics it will include.
From there, the next question is, “What will you do to help a person commit to their own actions and meet their objectives?” By stating an intention to succeed, people become compelled to follow through on those intentions, resulting in better results down the line.
[Trending in Agile Ceremonies | Engaging Retrospectives for Constant Team Improvement]
At Perficient Latin America, we use these coaching practices to develop engineers who are more knowledgeable, more invested in their work, and motivated to solve problems without direction.
—-
Coaching vs. Teaching isn’t always straightforward. To learn more about coaching and training in software development, contact us and we’ll happily share our knowledge.