María Cortázar Ortigoza is a dedicated leader on Perficient’s Corporate Marketing team, focused on promoting continuous growth for herself and her colleagues. Based in Cali, Colombia, María manages sales initiatives, creates marketing campaigns, and contributes to recruitment strategies.
A self-motivated learner, María stays updated on marketing trends through social media research, informative YouTube videos, and Udemy courses. Over her four years at Perficient, she has embraced new responsibilities as opportunities for development. Continue reading to learn more about María’s career path, her collaborative growth, and her passion for dance.
As a Senior Marketing Coordinator, María excels at engaging diverse audiences and building connections. She enjoys collaborating with general managers in Latin America, sales teams, technical experts, and global colleagues.
“The people I work with are one of the reasons I wake up excited about my job every day. They are the most amazing people. Over the past four years at Perficient, I have made so many friends, not only from my city and country, but from different countries as well.”
READ MORE: Fostering Meaningful Connections in a Global Workplace
Although María’s marketing career began just four years ago, her commitment to excellence has fueled her rapid growth. She holds a bachelor’s degree in international affairs and political science, which provided a strong foundation for pursuing a career in global communications.
In 2021, she joined Perficient as a Marketing Specialist, focusing on rebranding initiatives and managing Perficient’s Latin America social media channels on LinkedIn and Instagram. Initially nervous, María soon recognized her potential within Perficient’s supportive culture.
“I saw the opportunities that Perficient leadership gives us to grow. They provide all the tools we need to keep developing. The leaders I’ve had here at Perficient are awesome and some of the best people. I really value when others want to share their knowledge, and those are the kind of leaders I have.”
From the start, María felt empowered by her manager, Juliana Rua Burgos, who provided essential resources to enhance her marketing skills and encouraged collaboration by actively listening to her ideas. As she advanced in her role, María developed internal communications and organized events, all while benefiting from the expanding marketing team.
“At the very beginning, it was really hard for me to work in a team. I used to work alone, so that’s one skill that I’ve been improving since working here. I’ve found that teamwork is one of the more valuable skills that I have.”
By embracing collaboration, María has built meaningful connections through recruitment marketing. She led initiatives to strengthen Perficient’s relationships with IT communities in Latin America, including visiting universities across Colombia to engage engineering students about internship opportunities.
“I saw how we changed lives by sharing Perficient’s internship opportunities. I’ve seen people who started working here on the first day of their internships, and they’ve stayed at Perficient for the last three or four years. They’ve built a career here at Perficient just like I have. I’ve heard them say that they are really grateful that I went to their city, told them about Perficient, and gave them the opportunity to come here. It is amazing.”
Since the internship program, María has actively participated in various stages of the recruitment plan, making a significant impact. In 2022, she was promoted to Associate Marketing Coordinator and quickly advanced to Marketing Coordinator the following year, supporting Perficient’s sales initiatives and organizing speakers for forums showcasing our technical expertise.
By 2024, María became a Senior Marketing Coordinator. In this role, she embodies Perficient’s values every day through campaigns and projects that align with our vision, mission, culture, and community initiatives. Her commitment to continuous learning and collaboration empowers her to consistently exceed expectations.
“I make a difference by giving my best every day and challenging myself to be a better person and a better professional. I always try to learn new things, apply this knowledge to the work that I do, and work collaboratively in a team. I always listen to our clients’ needs and use my knowledge to provide solutions.”
READ MORE: Explore María’s Recent Perficient Blogs
Throughout her career, Perficient has supported María in achieving her professional and personal goals. A significant milestone for her has been achieving a healthy work-life balance, which allows her to advance in her career while enjoying quality time with loved ones and pursuing her passion for dance. “I work in a company that gives me everything I need to have a good life,” said María.
With Perficient’s work-life balance, María has also thrived as a professional dancer. For the past 15 years, she has specialized in traditional Colombian dance styles, including salsa and folklore. Two years ago, she seized an exciting opportunity to embark on a month-long international dance tour, fulfilling a lifelong dream. When María shared her aspirations with Perficient, she received overwhelming support to pursue her passion, traveling to countries like Bulgaria and North Macedonia to showcase Colombia’s vibrant dance heritage. “I really appreciate that Perficient has always given me the opportunity to do something that I really love, which is dancing,” said María.
READ MORE: How to Prioritize and Maintain Work-Life Balance
María shared her top three pieces of career advice.
From creating impactful marketing campaigns to dancing 12 hours a week, María is a shining example of the discipline and dedication needed to shatter boundaries and make a difference.
“Working at a company where we do so many great things and where I feel like my work is valuable is what motivates me every single day.”
Her commitment to excellence, combined with a growth mindset and passion for learning, has helped her forge meaningful connections across Perficient, driving her success.
“I think that, as human beings, we always have to do things in community and cannot do things alone. Without my teammates and the people that work here, I wouldn’t be able to grow. I wouldn’t notice things that I’m missing or have people to teach me what I don’t know. The collaboration that I’ve seen with my colleagues every single day is what helps me grow not only as a professional, but also as a person. They are always there, teaching me and giving me feedback to continuously improve.”
Perficient continually looks for ways to champion and challenge our workforce, encourage personal and professional growth, and celebrate the unique culture created by the ambitious, brilliant, people-oriented team we have cultivated. These are their stories.
Learn more about what it’s like to work at Perficient on our Careers page. Connect with us on LinkedIn here.
]]>In today’s world, TypeScript has become the go to choice for building robust but at the same time scalable applications. By combining various approaches for static type with dynamic capabilities of React, our hero enhances and improves productivity and responsibility. At the same time reduces the runtime errors.
But to use TypeScript efficiently, we need to dive deeply into types, inference, compatibility and more. This helps in writing the clean and reliable code.
Why Types Matter: Documentation + Error Prevention
Types in TypeScript serve two core purposes:
Let’s dive into the foundational building blocks of TypeScript’s type system.
Core Types in TypeScript
These are the primitive types you’ll use often:
function greet(name: string): void { console.log(`Hello, ${name}`); }
Special Types: any, unknown, and never
These are more advanced and often misunderstood, but they serve critical roles:
any: Turn Off Type Safety
let data: any = 42; data = "now it's a string"; // No error
Use with caution — too much any defeats the purpose of TypeScript.
unknown: Safer Alternative to any
let input: unknown = "user input"; if (typeof input === "string") { console.log(input.toUpperCase()); }
We can use unknown when we have to handle any uncertain types. They could be API responses, user inputs, etc.
never: The Type That Shouldn’t Exist
function throwError(message: string): never { throw new Error(message); }
Great for exhaustive switch cases or asserting unreachable code.
Arrays and Tuples
Arrays
let fruits: string[] = ["apple", "banana"]; You can also use generics: let scores: Array<number> = [90, 85, 88];
Tuples: Fixed-Length Arrays
Used when the position and type of each element is known.
let user: [string, number] = ["Alice", 30];
Enums: Friendly Named Constants
enum Direction { Up, Down, Left, Right, } let move: Direction = Direction.Left;
Enums help make code readable and consistent when working with related constants.
Type Inference
TypeScript is smart! It can often infer types without explicit annotations:
let greet = "Good night"; // inferred as string
But be cautious: sometimes explicit typing adds clarity, especially for complex structures.
Type Assertions
You can tell TypeScript what type a value should be (also known as type casting):
let someValue: unknown = "I’m a string"; let strLength: number = (someValue as string).length;
Use assertions when you know more than the compiler, but make sure you’re right!
Type Compatibility
TypeScript follows structural typing, meaning it checks type compatibility based on structure — not on name or declared type.
interface Person { name: string; } let user = { name: "Doe", age: 50 }; let p: Person = user; // Works because structure matches
Variable Declaration: let, const, var
const pi = 3.14; let score = 100;
Final Tips
Conclusion
TypeScript is a way to write a scalable and maintainable codes. By understanding and implementing these concepts, we can make our projects robust but at the same time easy to understand.
Happy Learning!
Perficient embraces a culture of continuous learning by providing opportunities for our colleagues to enhance their skillset and drive exponential growth for our partners, clients, and global teams. We bring a commitment to excellence that resonates with every project. Our skilled Quality Assurance (QA) strategists employ a holistic approach—covering the full spectrum of strategy, testing, automation, toolsets, and additional support systems — ensuring that all products and applications exceed expectations.
Ritesh Sachdeo, a senior technical architect based out of Perficient’s Nagpur office, recently shared more about his experience supporting Perficient’s QA practice and how he has grown his career at Perficient. Continue reading to learn more about his daily responsibilities, what factors enabled his growth, and his love for exploring new dishes and cuisines.
I have been with Perficient for more than 14 years, and I serve as the Senior Technical Architect within the QA team. I also represent the India QA team on our global QA leadership group. My day typically begins with checking emails, collaborating with colleagues, staying updated on account progress, supervising and supporting my team members, and contributing to QA pre-sales activities. I make sure that the software and applications people use, like websites or mobile apps, work perfectly before they are launched. I also lead a team that checks for any issues or bugs, and we solve them to ensure everything runs smoothly for users.
I’ve had the opportunity to lead large, complex projects and mentor junior colleagues, which helped me refine my problem-solving and strategic thinking abilities. Perficient’s emphasis on continuous learning and exposure to diverse projects is a key factor in my growth. Additionally, contributing to initiatives like both the Accessibility and Automation Centers of Excellence (CoE) and being trusted with major accounts has further honed my skills and strengthened my confidence in delivering impactful results.
Read More: Explore the Latest Developments in Quality Assurance
One of my proudest achievements at Perficient is my journey from a Flex Developer to a Senior Technical Architect in QA. This transition required me to embrace new technologies, commit to continuous learning, and step outside my comfort zone. Successfully balancing this professional growth with personal responsibilities has been a meaningful milestone in my life. It has been immensely rewarding to lead teams, mentor colleagues, and play a key role in driving impactful QA initiatives. One of the highlights of my journey has been forming and nurturing both the Accessibility and Automation CoE, where I contributed to their growth by enabling teams to efficiently deliver higher-quality solutions.
Another standout moment was successfully overseeing a complex project under tight deadlines. Through my work, we delivered exceptional results without any escalations and received client recognition for quality work. Additionally, gaining the trust to oversee major accounts and contribute to QA pre-sales efforts has been a significant accomplishment in my career.
Read More: Learn About How Colleagues Are Advancing Their Careers at Perficient
I shatter boundaries by continuously challenging myself to grow and adapt to new opportunities. Embracing new technologies is at the core of my approach, and I actively seek out tools and methodologies to enhance efficiency and improve outcomes for both my team and our clients. I believe in stepping out of my comfort zone, whether it’s taking on leadership roles, tackling complex projects, or learning skills outside my expertise to address challenges effectively.
I’m making a difference by ensuring our clients receive reliable, high-quality solutions tailored to their needs. I support my team by mentoring and guiding them, fostering a culture of collaboration and continuous improvement. For the broader QA community, I actively introduce tools and share best practices to streamline processes. Every effort I make is aimed at creating value for everyone I work with, whether clients, colleagues, or Perficient.
Additionally, I focus on fostering collaboration and knowledge sharing within my team, enabling us to think beyond conventional solutions. By promoting a culture of innovation and adaptability, we are always prepared to overcome obstacles and deliver exceptional results. My goal is to push boundaries not just in technical solutions but also in how we approach teamwork, client relationships, and continuous improvement.
Stay curious and keep learning as the tech industry evolves quickly. Take on challenges, seek out new experiences, and don’t be afraid to ask for help. Build meaningful connections with your teammates and clients while focusing on delivering results. Most importantly, be patient and consistent as growth takes time, but it pays off.
I have grown my career at Perficient by continuously taking on new challenges and seeking opportunities to expand my skill set. I started my journey with the company in a technical role. Over time, I transitioned into leadership positions. Perficient has provided me with the resources and support to enhance my technical expertise and develop important leadership and team management skills.
Read More: Perficient’s Award-Winning Growth for Everyone System of Leadership Development Programs
Working with my team has been an incredibly rewarding experience. We have a highly collaborative and supportive environment where everyone is encouraged to share ideas and contribute to problem solving. The culture is inclusive, team-oriented, and there’s a strong bond across our business unit with colleagues always willing to lend a hand or provide guidance when needed.
The last office outing I attended was a team-building event where we participated in fun activities and bonding exercises. It was a great opportunity to connect with colleagues outside of the usual work setting while strengthening our relationships and team morale.
I am #ProudlyPerficient because Perficient fosters an environment where innovation, collaboration, and continuous growth are encouraged. The company has provided me with opportunities to lead impactful projects, work with talented individuals, and grow both personally and professionally. I take pride in being part of an organization that values excellence, client satisfaction, and employee development. The chance to contribute to meaningful projects, mentor colleagues, and drive improvements within my team gives me immense pride in what we accomplish together.
The people I work with, including my colleagues, senior leaders, and managers, truly motivate me. The opportunity to collaborate with such talented and supportive individuals keeps me engaged in my daily work. Their guidance, encouragement, and trust in my abilities inspire me to grow and push beyond my limits. Working in a team where ideas are valued and contributions are recognized drives me to consistently deliver high-quality results.
Read More: Learn How Perficient’s Culture is Empowering Others to Make a Difference
Outside of work, I am passionate about spending quality time with my family. We go on outings, enjoy good food, and meet new people. These activities help me unwind and recharge while also providing opportunities for personal growth. Trying different cuisines allows me to explore creativity and appreciate diverse cultures, while connecting with people enhances my communication and interpersonal skills.
One surprising thing people might not know about me is that I’m a big foodie. I’m always excited to try new dishes and explore different cuisines. Traveling is another passion of mine, as it allows me to immerse myself in various cultures and enjoy unique experiences. I also have a deep appreciation for fine perfumes, as I believe scents can trigger strong emotions and memories. These interests show my love for exploration and my attention to the little things that make life special.
It’s no secret our success is because of our people. No matter the technology or time zone, our colleagues are committed to delivering innovative, end-to-end digital solutions for the world’s biggest brands, and we bring a collaborative spirit to every interaction. We’re always seeking the best and brightest to work with us. Join our team and experience a culture that challenges, champions, and celebrates our people.
Learn more about what it’s like to work at Perficient at our Careers page. See open jobs or join our talent community for career tips, job openings, company updates, and more!
Go inside Life at Perficient and connect with us on LinkedIn, YouTube, Twitter, Facebook, and Instagram.
]]>TypeScript offers powerful type manipulation capabilities that allow developers to create more flexible and maintainable code. Three key features that enable this are keyof, typeof, and Mapped Types. Let’s explore each of them with examples.
keyof: The keyof operator takes an object type and produces a string or numeric literal union of its keys.
Example:
This is useful for creating dynamic and type-safe property accessors:
Here, TypeScript ensures that key must be a valid property of User.
typeof: Inferring Types from Values
The typeof operator allows us to extract the type of a variable or property.
Example:
Now, UserType will have the same structure as user, which is useful when working with dynamically created objects.
Another use case is inferring function return types:
Mapped Types: Transforming Types Dynamically
Mapped Types allow you to create new types based on existing ones by iterating over keys.
Example: Making Properties Optional
Now, PartialUser has all properties of User, but they are optional.
Example: Making Properties Readonly
Now, ReadonlyUser prevents any modification to its properties.
Example: Creating a Record Type
Here, UserPermissions will be an object with keys from UserRoles and boolean values:
Conclusion
By leveraging keyof, typeof, and Mapped Types, TypeScript allows developers to write more flexible and type-safe code. These advanced features help in dynamically generating types, ensuring correctness, and reducing redundancy in type definitions.
]]>Hello Trailblazers!
Salesforce Reports are a cornerstone of effective data-driven decision-making. They allow you to analyze and visualize business data efficiently. Salesforce offers a subscription feature for reports to ensure you or your team stay updated on important metrics without manually checking them. Subscribing ensures that you receive reports regularly in your email inbox, making it easy to monitor performance and trends.
In this blog, we’ll learn a step-by-step guide to subscribing to Salesforce Reports.
So stay tuned!
In the earlier sections of this Salesforce Reports series, we explored What Salesforce Reports are and the various types of Salesforce Reports. I highly recommend revisiting those sections to gain a deeper understanding and maximize your knowledge.
Subscribing to Salesforce Reports provides numerous benefits, including:
Before subscribing to reports in Salesforce, ensure the following:
By the end of this blog, I will have shared some images and demonstrated how you can receive automated email updates for Salesforce Reports by subscribing to them. So keep reading for all the details!
1. Set Frequency: Choose how often you want to receive the report. So options include:
2. Select Time: Here, specify when the report email should be sent.
3. Add Conditions (Optional):
Note: If you would like to learn more about how to give access of the reports to the users, then please follow the provided link.
Your subscription will be visible in the “Subscribed” column, as shown below.
So, you can subscribe to Salesforce Reports.
Note: To learn how to subscribe to Salesforce Dashboards, please explore the detailed blog post by clicking on the provided link.
So here, I demonstrate the outcome of receiving Salesforce Dashboard updates via email after subscribing to them.
Click to view slideshow.
Subscribing to Salesforce Reports is an efficient way to stay informed about your business’s performance metrics. So, by automating the delivery of reports, you save time and ensure timely decision-making. So follow the steps in this guide to set up report subscriptions and optimize your reporting workflow.
Happy Reading!
“Positivity is not about ignoring challenges; it’s about facing them with hope, resilience, and the belief that every setback is a step toward something better.”
]]>
Hello Trailblazers!
Salesforce Dashboards are powerful tools that allow users to visualize and analyze data at a glance. To stay updated on key metrics without manually checking dashboards, Salesforce provides a subscription feature. Subscribing to dashboards ensures that you and your team receive timely updates via email, helping you stay informed and make data-driven decisions.
In this blog, we’ll learn how to subscribe to Salesforce Dashboards.
In the earlier sections of this Salesforce Dashboards series, we explored what Salesforce Dashboards are, the step-by-step process to create them, and an in-depth look at Dynamic Dashboards in Salesforce. So to ensure a thorough understanding and gain the maximum benefit from this series, I highly recommend reviewing those parts before moving forward.
At the end of this blog, I have demonstrated how you can receive automated email updates for Salesforce Dashboards by subscribing to them. So stay tuned for all the details!
Note: Only users with access to the dashboard can be added as recipients.
So you can see your subscription in the Subscribed column as shown below.
So in this way, you can subscribe to the Salesforce Dashboards.
Note: If you’re interested in learning “how to subscribe to Salesforce Reports”, please explore the detailed blog by clicking on the provided link.
Here, I’m showing the result of receiving the Salesforce Dashboard after subscribing to it.
Click to view slideshow.
Subscribing to Salesforce Dashboards is a simple yet effective way to stay informed about your business metrics. So by following the steps outlined in this guide, you can automate dashboard updates, share insights with your team, and make timely decisions.
Happy Reading!
“Self-learning is the art of unlocking your potential, where curiosity becomes your guide and perseverance your greatest teacher.”
1. Introduction to the Salesforce Queues – Part 1
2. Mastering Salesforce Queues: A Step-by-Step Guide – Part 2
3. How to Assign Records to Salesforce Queue: A Complete Guide
4. An Introduction to Salesforce CPQ
5. Revolutionizing Customer Engagement: The Salesforce Einstein Chatbot
]]>
JavaScript is a loosely typed language which is very dynamic in nature. It has been very popular for its strong web development for decades. Indeed, it is a powerful tool, but it can sometimes lead to huge codebase and runtime errors, mainly in heavy applications. Now, speak about TypeScript, a superset of JavaScript, overcoming its technical challenges. Let’s know why the TypeScript is gaining the popularity and attention among high end developers.
What is TypeScript?
TypeScript, the hero programming language, is developed and maintained by Microsoft. It is built on top of JavaScript by adding various features such as interfaces, error detection capabilities, static typing. It helps developers to write the cleaner, neater and more flexible code. Since the TypeScript compiles to JavaScript, it goes very well in terms of compatibility with JavaScript libraries and frameworks
Key Advantages of TypeScript
Think about your last debugging session: Have you ever spent time tracking down a bug caused by a type mismatch? Let’s see how TypeScript solves this with static typing.
JavaScript Example:
What do you think happens when we use TypeScript?
TypeScript Example:
Static typing ensures that type mismatches are caught during the development phase, reducing bugs in production.
TypeScript’s compile-time checks prevent common errors such as typos or incorrect property access.
JavaScript Example:
TypeScript Example:
Imagine working on a large project with multiple team members. How would you ensure everyone follows a consistent data structure? TypeScript helps with constructs like enums and interfaces.
Example:
Using enums and interfaces, developers can clearly define and enforce constraints within the codebase.
TypeScript compiles to plain JavaScript, meaning you can gradually adopt TypeScript in existing projects without rewriting everything. This makes it an ideal choice for teams transitioning from JavaScript.
Common Misconceptions About TypeScript
“TypeScript is Too Verbose”
It might seem so at first glance, but have you considered how much time it saves during debugging? For example:
“It Slows Down Development”
The time spent defining types is often outweighed by the time saved debugging and refactoring.
When to Use TypeScript?
TypeScript is particularly beneficial for:
Conclusion
While JavaScript comes as a handy and excellent language for many projects, TypeScript addresses its flaws by introducing static typing, improved tooling and better readability and maintainability. For developers looking to build a high scale application with error-resistant code, TypeScript would be a great choice.
]]>In the realm of web development, SCSS and JavaScript often serve as two fundamental pillars, each responsible for distinct roles – styling and functionality respectively. However, the integration of SCSS with JavaScript offers a powerful approach to creating dynamic, responsive, and interactive web experiences. In this advanced guide, we’ll dive into techniques and best practices for this integration.
Introduction to SCSS:
A preprocessor that adds powerful features like variables, nesting, and mixins to CSS. It allows developers to write more organized and maintainable stylesheets.
Why Integrate SCSS with JavaScript?
By linking SCSS and JavaScript, developers can leverage dynamic styling capabilities based on user actions, data changes, or other interactions. This extends beyond simple class toggles to involve dynamically altering styles.
Setting up the Environment:
Before integrating, you need to set up your project to compile SCSS into CSS:
Dynamic SCSS Variables using JavaScript:
Here’s where the magic happens. By using CSS custom properties (often called CSS variables), we can bridge the SCSS and JavaScript worlds:
This changes the primary color from blue to red, affecting any element styled with –primary-color variable.
Using JavaScript to Manage SCSS Mixins:
While direct integration isn’t possible, you can simulate behavior by creating various classes corresponding to mixins and then toggling them with JS:
SCSS Maps and JavaScript:
Maps can store theme configurations, breakpoints, or any other set of values. While you can’t access them directly in JS, you can output them as CSS custom properties:
Event-driven Styling:
By adding event listeners in JS, you can alter styles based on user interactions:
Conclusion:
Integrating Syntactically Awesome Style Sheets with JavaScript broadens the horizons for web developers, enabling styles to be as dynamic and data driven as the content they represent. While there are inherent boundaries between styling and scripting, the techniques outlined above blur these lines, offering unparalleled control over the user interface and experience.
]]>It’s truly an exciting and proud moment for our QA India Practice, as we have achieved an incredible milestone: a 50/50 gender ratio by the end of 2024. While we continue to stand out with many QA achievements, we mark gender parity as our long-term goal. This progress in gender ratio sets a benchmark for the entire workforce by integrating committed, talented women into all areas, from entry-level to leadership roles.
As we reflect on 2024 journey, two things are true:
We identify one secret to building this great culture: rooting for each other. Getting a seat at the table is not enough, so we identify potential women leaders early and welcome them into the core Leadership team. This has not only contributed to this overall result but also led to our core QA India Leadership comprising 50% women colleagues, which we expect to grow to 60% by Q1 2025.
Our heavy focus on DEI (Diversity, Equity, Inclusion) mindset has resulted in a low attrition rate of 6.5% in 2024 at our QA India Practice. Historically, even during even during greater resignation period (2021 to 2023), we maintained single-digit attrition, positively affecting our business unit bottom line.
To combat career impediments, we extend support for maternity leave accompanied by sabbaticals, helping retain great talent and enabling them to achieve their career aspirations. QA India Practice taps into a broader talent pool by predominantly hiring women Automation Engineers with strong software engineering backgrounds. This vitally helps in terms of technological advancements and closing the digital skills gap in the QA workforce.
We consistently observe that projects led by women exhibit high delivery quality, commitment, customer and team retention, organizational dedication, and effective mentoring. This proud moment gives us more momentum to work on this endless journey and structure our QA Growth Triangle with empowered women leaders.
]]>