Categories
General

Building Inclusive Tech: Why Designing Digital Tools for Underserved Communities is Important

Photo from Unsplash

Some decades ago, you needed different box-shaped bulky devices to listen to the news, listen to music, see a film, or even tell the weather. Today, with your handheld mobile phone and the Internet, you can reach billions of people and web pages while instantly networking with thousands.

In 2024, approximately 4.8 billion people, or 60.42% of the world’s population, will be smartphone users. This shows that the human race has undergone tremendous growth and change with the advancement of new digital tools and technologies. 

Despite these strides, regions without access to digital tools or limited traditional services and infrastructures are still disadvantaged.

The solution? 

This article contains that and more, including an explanation of underserved/marginalized communities and how to provide equitable access to the tech and digital tools they require.

Let’s go!

What are Undeserved or Marginalized Communities?

The concept of marginalization stems from a familiar word: margin.

Think of a sheet of a notebook. The margins are usually the extreme sides of the paper where you get to write numbers. 

The margins of the paper are very small and restricted away from the middle compared to the rest of the paper. With this in mind, we can deduce that marginalized communities are isolated, disempowered, or treated as insignificant relative to the rest. 

These underserved communities are victims of power and economic imbalances, making them susceptible to discrimination and neglect. In the modern society, access to digital tools are either restricted or nearly impossible for such communities. For instance, in India, 650 million people are without internet connection, making it the largest populace of individuals lacking internet connection in 2024.

Photo from Unsplash

In Africa, 87.4% of Burundi’s teeming population lives without internet access. The story isn’t much different in Nigeria. Despite recent positive internet penetration trends, 120 million Nigerians have zero access to mobile internet.

Citing just internet penetration, we can paint a picture of how millions of people from underserved communities will never benefit from certain technological improvements or digital tools like smartphones, the internet, fintech, and digital medical care. 

Marginalized and underserved societies are common in developing nations where millions live below the poverty line. These societies face several barriers and disadvantages, including:

  • Very limited financial infrastructure
  • Poor and slow infrastructural development
  • Poor educational resource
  • Geographical isolation

These factors have possibly accounted for growth stagnation or poor access to innovative digital solutions that could change lives. The global digital economy itself has few restrictions on entry. 

A teenager in the USA could sit in their room hunched over their laptop writing codes for companies or running cyber security services remotely. In an hour’s work, such a privileged teen can earn the yearly earnings of another teenager’s family of five from a disadvantaged community.

The difference?

Access to tech and digital tools at an early age.

But if traditional services and infrastructure have been historically non-existent, what then? 

Inclusive Digital Tools: Definition and Key Characteristics

Photo from Unsplash

Inclusive technology is any digital tool built to offer users equal access to key services and essential infrastructures despite their background or standing in the digital economy.

Without adequate infrastructure that stagnates underserved communities, individuals and well-meaning tech NGOs can bridge this digital divide gap. One of the foremost ways to do so is by providing transformative but inclusive digital tools and promoting digital inclusion campaigns.

These tech or tools foster digital inclusion ,which is simply the unrestricted use of Information and Communication Technology (ICT) by a populace irrespective of:

  • Age 
  • Ethnicity or race
  • Gender 
  • Cognitive ability
  • Socio-economic background 
  • Mobility 
  • Nationality 

Characteristics of Inclusive Digital Tools

Digital inclusion campaigns typically offer digital literacy training, access to the internet, online infrastructures, inclusive technology software, and hardware. For a tool to be considered inclusive, it should meet these criteria:

  • Affordable: Inclusive digital tools must be priced so that low-income or financially disadvantaged users can afford them. Subsidies or differently priced models should be available if possible.
  • Accessible: In addition to being affordable, inclusive digital tools should be easy to use, regardless of the user’s disability or level of education or literacy.
  • Versatility and Interoperability: The ability to function with different platforms and systems while offering variety marks a inclusive digital tool.
  • User-focused: An inclusive digital tool must be designed with user-centricity in mind. From design to manufacture to installation and use, these tools must meet the target user’s needs.
  • Wide Reach: Another mark of digital inclusive tech is its ability to reach large numbers of people with ease and precision while maintaining efficient scalability. 
  • Technical Support: Whether it’s multilingual options or the chance to speak to a skilled professional about existing issues, inclusive tools must have sound technical support so users can successfully and confidently utilize them. 

How Techrity is Bridging the Digital Divide

Techrity is one of Africa’s budding digital inclusion champions, serving underserved communities. When asked why we aspire to a digitally inclusive continent, we say, “Why not?”

Our society has many economic, political, and historical barriers. Nonetheless, through our mentorship programs and Tech For Good initiative, we foster fairness and equity while tearing down structural barriers. 

Techrity

One of the long term missions of Techrity is to onboard disadvantaged newbies in the tech scene with as little confusion and stress as possible. We do this through our effective Kickstart Program:

  • Data Support
  • Laptop Support
  • Mentorship

With this three-fold assistance towards the fight against digital inequity, we are ensuring that thousands of individuals gain needed IT skills, allowing underserved communities actively participate in the digital economy, and boost financial independence and employability!

You can be a part of this unique quest for change by donating here in a few easy steps or by joining our community.

Categories
Best practices General Tech

Staying Ahead Of Cyberattacks

Cyberattacks are becoming more sophisticated with the rise of the digital age, leading to more targeted and frequent breaches. From individuals to large organizations, everyone is a potential target – no one is safe. Staying ahead of cyberattacks requires not only understanding about existing cyber threats but also implementing effective measures to protect and secure important data and information from intruders. This article will simplify what cyberattack means to you, help you explore the types and sources of cyberattacks, highlight measures for staying safe, and discuss growing challenges and trends in cybersecurity.

What is a Cyberattack?

In its basic definition, a cyberattack is generally an attempt by malicious individuals or groups to gain unauthorized access to computers, networks, or data. These kinds of attacks often aim at stealing, disrupting, or destroying information or leveraging it for financial or political gain.

Types of Cyberattacks

Cyberattacks come in many flavors and faces, with different methods and intentions. Here are the common types:

Phising

Photo from Pixabay

This attack is one of the common cyberattacks in which phishing attacks, attackers impersonate any credible entity through emails, messages, or websites and influence people to reveal sensitive passwords or credit card details, etc. Usually, these attacks involve psychological means, social engineering, whereby conditions for urgency or fear are attached to prompt victims into precipitating actions such as clicking malicious links or downloading harmful attachments.

Common Types of Phishing Attacks

  1. Email Phishing: The most common method in which an attacker sends thousands of emails that are originally from seemingly legitimate sources, containing links to fake web pages designed to capture user credentials.
  2. Spear Phishing: A targeted attack at specific individuals or organizations utilizing personalized information to gain credibility. This method poses a great danger since it is addressed to high-level executives.
  3. Whaling: A form of spear phishing targeted at high-profile targets, such as the CEO or CFO, by using their authority to gain access to sensitive information from employees.
  4. Smishing and Vishing: These are phishing methods via SMS (smishing) or voice calls (vishing), in which the attackers deceive victims into revealing personal information either over the phone or via text messages.
  5. Clone Phishing: Entails the almost exact reproduction of an already sent legitimate email from a trusted organization but this time with malicious links.

Instances of some phishing attacks

  1. The Google and Facebook Phishing Attack 

A Lithuanian scammer defrauded Google and Facebook of $100 million between 2013 and 2015 by sending fake invoices that appeared to be legitimate requests from a Taiwanese supplier, Quanta. The fraud was discovered, arrests were made, but only $49.7 million was recovered.

2. Elara Caring Incident

In 2020, healthcare provider Elara Caring became the target of a phishing attack where the personal data of over 100,000 patients was compromised. The attackers accessed employee email accounts through phishing tactics targeting two employees.

3. Levitas Capital Whaling Attack

This was a whaling attack in 2020 which involved the co-founder of Levitas Capital through a fraudulent zoom link. The incident turned into malware deployment on the corporate network and the appearance of fraudulent invoices for approximately $8.7m.

Malware

Photo from Pixabay

Malware refers to a wide range of malignant software programs that are written to infect and destroy systems. The common types are:

  1. Viruses: Malicious code attached to clean files that spread to a computer system.
  2. Ransomware: A kind of malware that encrypts the files on the victim’s device and demands payment for the decryption keys.
  3. Spyware: Software used to secretly observe user activity and gather personal information without consent.

Phishing attacks are often the initial vector for malware distribution, with many ransomware incidents starting from phishing emails. 

An instance of this kind of attack is the ransomware attack against the Colonial Pipeline in May 2021 which disrupted fuel supply across the U.S. East Coast for nearly a week. The attack vector had been linked to phishing emails that gave the DarkSide gang an entrance into the company’s systems, which eventually made the company pay a ransom of $4.4 million1.

Denial of Service (DoS) and Distributed Denial of Service (DDoS)

The intent of Denial of Service attacks is to make the network or server unavailable for the authorized users by overwhelming it with traffic. This is augmented in DDoS to involve hundreds of compromised systems or ‘botnets’ to literally flood the target with requests, with which the defenses may hardly cope. A notable DDoS attack occurred in October 2016 against Dyn, a major DNS provider, which disrupted services for many high-profile websites like Twitter and Netflix for several hours.

Man-in-the-Middle and Insider Attacks

In Man-in-the-Middle (MitM) attacks, cyber criminals intercept communications between two parties to steal data or inject malicious content. Insider attack: When employees or contractors misuse their access rights to harm the organization or steal sensitive information. An example is the ransomware attack the City of Atlanta suffered in March 2018 initiated through spear phishing emails sent from compromised accounts of trusted contacts within the city government.

Social Engineering and Credential Stuffing

Social engineering is a method of tricking people into revealing confidential information by gaining their confidence. Credential stuffing refers to when an attacker uses stolen credentials from one breach to access accounts on other platforms where users have reused passwords. This technique leverages the common user behavior of password reuse, thus simplifying the process for the attacker to gain unauthorized access. In 2016, attackers exploited stolen credentials from previous breaches to access accounts at various online services, leading to widespread unauthorized access incidents across multiple platforms.

 Zero-Day Exploits

Zero-day exploits involve those vulnerabilities in software that the developers are unaware of at the time the attack occurs. These exploits tend to be exceptionally effective because they can be utilized at a time before patches become available, which leaves the systems vulnerable until they get updated. The 2017 Equifax data breach was partly attributed to an unpatched vulnerability in Apache Struts software, which attackers exploited before Equifax could deploy a fix.

Advanced Persistent Threats (APTs)

APTs are long-term targeted attacks where hackers infiltrate networks and remain undetected for extended periods. Their goal is usually data theft or surveillance of operations over time, making them particularly dangerous for organizations that handle sensitive information. The infamous APT group APT28 (Fancy Bear) has been linked to numerous high-profile cyber espionage campaigns targeting government entities and organizations around the world, including the Democratic National Committee during the 2016 U.S. presidential election.

What Motivates Cyberattacks?

Motivations behind cyberattacks vary and may include one or many of the following:

  1. Financial Benefits:  Most the attackers seek ransom through ransomware, phishing, or even selling stolen data on the dark web.  
  2. Revenge/Personal Vendetta: Disgruntled employees, ex-partners, or competitors target organizations or people.
  3. Hacktivism: Attacks for political, social, or ideological motives to bring attention to a cause or disrupt an adversary. 
  4. Terrorism: Cyberterrorists disrupt critical infrastructure-such as energy grids, transportation systems, or healthcare services-to instill fear in a population. 
  5. Thrill-Seeking or Fame: Some attackers seek the challenge or notoriety associated with a successful breach of a high-profile system.  
  6. Market Manipulation: Businesses or markets are targeted by hackers to manipulate stock prices, cryptocurrencies, or commodities for financial gain.  
  7. Corporate Sabotage: Competitors may wish to attack any given rival business for the purpose of damaging its reputation, disrupting operations, or attracting some of its clients.  
  8. Political Influence: These are usually employed to influence the outcome of an election, manipulate public opinion, or bring instability to governments. 

How to Stay Ahead of Cyber-attacks

The nature of the threat means that the best way to protect oneself or one’s organization against it is through proactive measures. Some such key measures include:

  1. Be security conscious: Use strong passwords by creating unique, complex passwords and change regularly.  Also add another layer of security to your accounts by enabling Two-Factor Authentication (2FA), Encrypt data so that only authorized parties can read it. From email encryption, encryption of data in transit, or encryption of data at rest, it ensures that even if attackers intercept your data, they can’t understand or misuse the data without the encryption keys.
  2. Put early warning systems in place: Put in place mechanisms that can monitor for potential threats in real time and send an alert. 
  3. Back-up data and update software regularly: Perform regular backups that will let you recover your information in case of an attack. Install updates and patches that will close vulnerabilities in your systems. Ensure that any new software and systems are thoroughly tested in isolated environments to avoid vulnerabilities before going live (this is called Cleanroom testing).
  4. Train and educate: Educate yourself and your team regularly about state-of-the-art threats and security best practices. Provide training and awareness on being very cautious before trying to click on suspicious links or attachments that come from unknown sources.  
  5. Continuous Vulnerability Assessments: Regularly scan and identify weaknesses in your infrastructure to address them promptly. Simulate cyberattacks to evaluate the effectiveness of your defenses and uncover potential vulnerabilities.
  6. Security conferences and newsletters: Participate in security webinars, conferences to gain an invaluable opportunity to learn from experts and peers about emerging threats, trends, and best practices. Common security newsletters are also good sources of information to help you stay informed about current and future threats.
  7. Lead with intelligence and creativity: Utilize advanced analytics along with innovative methods to identify and neutralize emerging malicious activities. Embrace a security model wherein no one is trusted by default, and everybody’s request to access should be authenticated.  
  8. Be prepared to defend your fort: Incident response plans should be kept maintained and your team prepared to take immediate action upon threat detection.  
  9. “Shine your eye”: This is a security slang from Nigeria, that talks about knowing what to do to avoid danger, this can be applied to cyberattacks too, as one can ensure that there is knowledge of the current tools and ways attackers use to steal data and infiltrate systems.
  10. Context-aware security: Context-aware security adjusts its level of protection according to the situational or environmental context where access is being requested. If a user logs in from an unrecognized location or device, for instance, the system may prompt further verification or block the access. This ensures that only authorized users interface with sensitive systems, further reducing breach chances. 
  11. Behavioral analytics tools: These solutions monitor and analyze user behavior to identify unusual activities that could signal a security threat. For instance, if an employee suddenly starts to download unusually large volumes of sensitive data or accesses systems that they do not normally use, then the tool can flag this behavior for investigation. Behavioral analytics are a critical layer of defense against insider threats and advanced persistent attacks.

Challenges and Trends To Keep Tabs On

Technology, and its development, means the continuously changing landscape of cybersecurity attacks also. To counter the probable risks, every organization needs to be on their toes and gain as much information as possible on upcoming challenges and trends that influence cybersecurity. The following areas present important concerns driving the direction in the field of cybersecurity today.

  1. A.I Driven Attacks: AI is being weaponized increasingly by cybercriminals to make their attacks more sophisticated and effective. Hackers utilize deepfake technology to create fake but realistic audio and video contents, which, in turn, mislead their targets into revealing sensitive information or executing unauthorized transactions. One instance of the CEO scam happened when the attacker was mimicking a CEO’s voice asking employees for wire transfers. With AI tools generating highly personalized phishing emails resembling human communications in both style and content, they become a lot more plausible, often replete with riveting storytelling and urgent requests for action-compelling events that might easily persuade the gullible beyond ordinary phishing. AI-powered malware can change its behavior to avoid detection by traditional security measures. The ability of malware to adapt to new situations makes it difficult for organizations to detect and neutralize threats effectively.
  2. IoT and Smart Device Vulnerabilities: The increasing use of Internet of Things (IoT) devices and modern connected-vehicle technology makes more vehicles smarter, but it opens greater avenues for security exploitations and cyber-attacks. Most IoT devices are designed with either very poor default passwords or no regular software updates, thus being highly vulnerable for any kind of exploitation. Attackers compromise such devices to create botnets for launching DDoS attacks or to steal sensitive data. Cyber criminals might use vulnerability in vehicle software to take control over the vehicles unauthorized. Connected vehicles may be tracking several information sets which can become a victim of theft and misuse.
  3. Cyber-Physical System Attacks: Cyber-physical systems, incorporating physical processes with networked computing, are increasingly targeted by cybercriminals. Examples include everything from critical infrastructure like power grids, transportation systems, and autonomous vehicles.
  4. Human Error and Third-Party Risks: Poor training and awareness result in employees sometimes doing silly things, like clicking on a phishing link or mishandling information. The Solar Winds breach is an example of attackers breaching a trusted third-party vendor to gain entry into several organizations at the same time.
  5. Scarcity of Qualified Professionals in Cybersecurity: The increasing demand for cybersecurity has developed a serious gap in skilled professionals within the industry. Organizations struggle to find qualified personnel who can defend against these increasingly sophisticated attacks.

Cybersecurity is an ever-evolving field-one that requires watching out, preparing for, and adapting to constantly changing elements. By understanding cyberattacks, staying up-to-date on the latest trends, and putting in place some tough security, you can make yourself and your organization resilient in the face of potential compromise. Remember, the best defense is a proactive one-stay sharp, stay informed, and stay secure.

Categories
Best practices

Clean Code Principles

Clean code is any code that is easy to read, understand, and modify. It is written to be easily understood by developers, including the future version of the original author. A clean code is like a well-written essay: it has a clear structure, uses meaningful names, and follows consistent formatting. It is devoid of unnecessary complexity and is designed to be as simple as possible while still achieving its objectives.

Features Of A Clean Code

  1. Readability: Clean code is easy to read and comprehend. When other developers (or even you, at a later time) look at your code, they should be able to understand its purpose and functionality quickly. This involves using clear and descriptive names for variables, functions, and classes, and logically organizing the code.
  2. Maintainability: A clean code is easier to maintain and extend. This means that when you need to add new features or fix bugs, you can do so with confidence, knowing that your changes will not dis-organize or slow down an existing functionality.
  3. Testability: A clean code is typically easier to test. A well-structured and modular code lends itself to easier unit testing and integration testing, which are essential for ensuring the reliability of the software.
  4. Scalability: A clean code can handle growth more gracefully. As your project evolves and scales, well-written code can adapt to new requirements and changes without becoming unmanageable.
  5. Collaboration: In team settings, a clean code facilitates better collaboration. When code is easy to read and understand, team members can more easily contribute, review, and enhance each other’s work.

Principles of A Clean Code

1. Meaningful Names: Names are fundamental elements of code, and their clarity can significantly impact code readability. They are used for variables, functions, classes, and modules. Good naming can significantly improve code readability. Here are some guidelines for naming:

  • Be Descriptive: Use names that describe the purpose of the variable or function. For example, ‘calculateMonthlyInterest’ is more descriptive than ‘calcInt’. Descriptive names help developers understand the code’s functionality without needing to decipher abbreviations or cryptic names.
  • Avoid Abbreviations: Abbreviations can be ambiguous and hard to understand. Instead of ‘num’, use ‘number’. This makes the code more readable and reduces confusion.
  • Use Pronounceable Names: If a name is hard to pronounce, it will be hard to remember. Choose names that are easy to pronounce and remember. For example, ‘createTimestamp’ is easier to pronounce than ‘crtTmstmp’.
  • Consistent Naming Conventions: Stick to a consistent naming convention throughout your codebase, such as camelCase for variables and functions and PascalCase for classes.

2. Single Responsibility Principle (SRP): The Single Responsibility Principle states that a class or function should have only one reason to change. What this means is that each class or function should have only one responsibility or job. Adhering to SRP makes your code more modular and easier to maintain. For example, a function that handles user authentication and data fetching should be split into two separate tasks.

3. Keep It Simple, Stupid (KISS): The KISS principle emphasises simplicity in design. Avoid overcomplicating your code with unnecessary complexity. Simple code is easier to read, understand, and maintain. Strive for the simplest solution that works.

4. Don’t Repeat Yourself (DRY): The DRY principle states that you should avoid duplicating code. Duplicate code can lead to inconsistencies and make maintenance more difficult. If you find yourself copying and pasting code, consider restructuring it into a reusable function or module.

5. Write Small Functions: Small functions are easier to read, understand, and test. Ideally, a function should do one thing and do it well. If a function grows too large or tries to handle multiple responsibilities, consider breaking it down into smaller functions.

6. Use Comments Wisely: Comments should complement clean code, not replace it. Comments can be helpful, but they should be used sparingly. Use comments to explain the “why” behind your code, not the “what.” For example, explaining why a particular algorithm was chosen or why a specific workaround is used can be helpful.

7. Consistent Formatting: Consistent formatting improves readability and helps maintain a uniform style throughout the codebase. Use a consistent style for indentation and spacing. Many development environments offer tools or plugins to enforce consistent formatting. Adopting such tools can help maintain uniformity across the codebase.

8. Avoid Magic Numbers: Magic numbers are hard-coded values that appear without explanation. They can make code difficult to understand and maintain. Instead of using magic numbers, define constants with meaningful names. For example, use ‘MAX_USERS = 100’ instead of ‘100’.

9. Error Handling: Proper error handling is important for writing robust code. Instead of relying on error codes, use exceptions to manage errors effectively. Exceptions can convey more context about the error and allow for cleaner error handling. Ensure that your code can gracefully handle unexpected situations without crashing.

10. Testing: Writing tests for your code ensures that it works as expected and makes it easier to restructure and extend. Aim for high test coverage and write tests that cover different edge cases. Use unit tests for individual functions and integration tests for larger components.

11. Refactoring: Regularly refactor your code to improve its structure and readability. Refactoring involves making small changes to the code without changing its external behaviour. This helps keep the codebase clean and maintainable.

12. Use Version Control: Utilise version control systems like Git to track changes, collaborate with others, and manage different versions of your codebase effectively.

Write clear and descriptive commit messages to document the purpose of changes and make it easier for others (or yourself) to understand the history of the codebase.

13. Documentation: Provide adequate documentation for complex code, APIs, and public interfaces to assist other developers in understanding and using your code effectively. Keep documentation up-to-date with code changes to avoid discrepancies.

Importance Of Clean Code

A clean code is important for several reasons, all of which contribute to the overall quality and efficiency of software development.

  1. Improved Communication: A clean code acts as a form of communication among developers. It conveys the developer’s intent and logic through its structure and naming conventions, reducing the need for extensive explanations or documentation.
  2. Enhanced Debugging: Debugging is significantly easier with clean code. When code is well-organised and logical, identifying the source of bugs and issues becomes more straightforward. This can reduce the time and effort required to fix problems.
  3. Facilitates Refactoring: As requirements change, code often needs to be refactored. Clean code is easier to refactor because its structure and design adhere to principles that support modification without introducing new issues.
  4. Better Performance: While a clean code doesn’t guarantee performance improvements, well-written code often avoids performance pitfalls like unnecessary computations or inefficient algorithms. Performance enhancements can be more effectively applied to clean code.
  5. Long-Term Maintenance: Software maintenance is a critical aspect of development. Clean code reduces the risk of introducing bugs during maintenance and makes it easier to understand the impact of changes.

By following the principles outlined in this article, you can produce code that is not only functional but also easy to read, maintain, and extend.

Categories
Career advice

How To Negotiate For A Better Salary

Negotiating a salary can be daunting, especially for tech professionals. However, it’s a crucial skill that can significantly impact your career and financial well-being. This guide provides tips and strategies to help you navigate the process confidently and effectively.

1. Know Your Worth

Do your homework. Check out websites like Glassdoor, Jobberman, and LinkedIn Salary Insights to see what people with similar roles and experience are making. Remember, your tech skills are valuable, so don’t be afraid to leverage them.

2. Focus On Total Compensation

Other than how much your monthly paycheck is, considering the total compensation like bonuses, retirement contributions, health benefits, and more should not be overlooked. And don’t forget about those non-monetary perks like flexible work hours, remote options, and professional development. These can make a big difference in your overall job satisfaction.

3. Timing Matters

Avoid bringing up salary too early in the interview process. Let the employer initiate the conversation, usually after they offer you the job. If they ask about your salary expectations early on, be strategic. You can say you’re open to discussing it once you know more about the role, or give a general range.

4. Be Prepared

Be prepared to make a case for yourself on why you are worth your desired salary. Highlight your relevant experience, key accomplishments, and technical skills. Quantify your contributions whenever possible. For example, if you developed a software application that saved the company time or money, be sure to mention that.

5. Don’t Be Afraid To Counteroffer

If the initial offer isn’t what you were hoping for, don’t be afraid to negotiate. Be specific about what you’re asking for and why. Justify your request based on your market research and your contributions to the company.

6. Know Your Walk-away Point

Before you go into the negotiation, decide on the minimum offer you’re willing to accept. If the offer doesn’t meet your expectations, be prepared to walk away.

7. Consider Long-term Impact

Think about the potential for salary increases, promotions, and bonuses in the future. A company that invests in your career growth is more likely to offer competitive compensation.

8. Document Everything

Once you’ve reached an agreement, make sure it’s in writing. This includes salary, benefits, and any other negotiated terms. A written contract protects both you and the employer.

Remember, negotiating your salary is a skill. It’s about understanding your worth, being prepared, and advocating for yourself. By following these tips, you can increase your chances of getting the compensation you deserve.

Categories
Career advice

5 Networking Strategies Secrets You Never Knew

In the tech industry, a strong network is your secret weapon. It unlocks hidden opportunities, offers insider knowledge of company cultures, and boosts your credibility. This guide provides tech job seekers with winning networking strategies to navigate the landscape and land their dream role.

1. Define Your Goals

Before diving headfirst into networking activities, take a moment to clarify your career objectives. Determine the type of roles you’re passionate about, the industries you’re targeting, and the unique skill set you bring. This clarity will act as a compass, guiding your networking efforts and ensuring you connect with the right people who can propel you forward.

  • Research companies that align with your interests and career goals. Understanding their work culture and values will help you tailor your outreach to individuals who share your vision. For example, if you’re passionate about building sustainable solutions, prioritise connecting with professionals and companies at the forefront of green tech.
  • Analyse your existing network. Consider former colleagues, professors, mentors, or even friends with connections within the tech industry. Reach out to them for informational interviews or to reconnect and explore potential leads. You’d be surprised at the hidden connections that can be unearthed through a friendly conversation.

2. Embrace Continuous Learning

The tech industry is constantly evolving. To stay ahead of the curve and remain competitive, embrace continuous learning. Participate in online courses, attend webinars, or read industry publications to keep your skills up-to-date. Demonstrate your commitment to learning on your online profiles and during networking conversations. Highlighting your drive for continuous improvement positions you as a valuable asset for potential employers.

3. Optimize Your Online Presence

Polish your online presence across professional platforms like LinkedIn, GitHub, and even your website (if you have one). Ensure your profiles are up-to-date, highlighting relevant skills, experiences, and achievements. Don’t just list past roles; showcase the impact you made in each position. Quantify your accomplishments whenever possible.

  • Engage in industry-related discussions. Join relevant online groups and forums specific to your field. Participate in thoughtful discussions, share insightful articles, and actively contribute to the community. This not only establishes you as a thought leader but also exposes you to potential employers who might be lurking on the forum, seeking talented individuals.
  • Consider creating original content. If you have a knack for writing, consider starting a blog or creating informative videos on topics relevant to your field. This demonstrates your expertise and positions you as a valuable resource within the tech community.

4. Expand Your Horizon

Leverage tech events, conferences, and meetups to expand your network in person or virtually. These platforms provide invaluable opportunities to interact with industry professionals, recruiters, and potential employers.

Prepare a concise and impactful elevator pitch. Introduce yourself and your career aspirations. Practice beforehand to ensure it’s clear, engaging, and leaves a lasting impression. Don’t hesitate to initiate conversations with attendees, but remember to be respectful of their time. Ask insightful questions about their work, express genuine interest, and leave a business card or connect on LinkedIn afterwards.

Many conferences offer workshops or career development sessions. Actively participate in these events to gain valuable insights and connect with like-minded individuals.

5. Tap into Existing Connections

Don’t underestimate the power of your existing network. Tap into alumni networks, industry associations, and professional organisations related to your field. Attend alumni events, networking events or career fairs, join online groups, and reach out to fellow graduates for networking opportunities. Leverage your existing network to seek referrals for job opportunities. Reach out to former colleagues, mentors, and friends who may have connections within your target companies.

Networking is a two-way street. Look for opportunities to offer value to your connections, whether it’s sharing relevant resources, providing introductions, or offering your expertise on a specific technical challenge. Building mutually beneficial relationships strengthens your network and increases your credibility within the industry.

Remember, people are more likely to help those who are willing to help them in return. As you build meaningful connections and establish yourself within the industry, watch as doors open to exciting new possibilities in your tech journey.

Categories
General How-Tos Software Tech

Creating Custom React Hooks – Oyinkansola Odunsi

If you’re not new to React, you probably know about or have used hooks like useState and useEffect before. However, do you know that you can create your own hook? Yes, you heard that right! And this is what this article is about. 

Also, if you’re a newbie to JavaScript library, I’ve got you covered! I’ll bring you up to speed on the existing React hooks, and help you understand how to create yours. Let’s dive right in.

WHAT ARE REACT HOOKS?

The React library is commonly used because it’s easy to handle. One of this library’s excellent functionalities is React hooks. In simple terms, React hooks are JavaScript functions that allow you to access state and other React features without writing a class. 

These functions can also used to isolate the reusable parts of functional components. Additionally, they are identified by the word use, followed by the superpowers they possess like DebugValue, Effect, Callback, and LayoutEffect

THE EXISTING REACT HOOKS

The latest React version (version 18) has 15 built-in hooks that you can use. The most commonly used hooks are useState, useEffect, and useContext. Here is a list and a summary of all the existing React hooks:

  1. useCallback: Returns a memoized (stored to avoid repeated computation) callback function so that the child component that depends on the function will not re-render unnecessarily. The function will only be recreated if one of its dependencies changes.  
  2. useContext: After creating a context, useContext allows you to use a value in the context further down in your functional components. So, you don’t have to manually pass props down your component tree. 
  3. useDebugValue: Helps you label the output of your custom hooks so you can easily understand their state and monitor their behaviour in React DevTools.
  4. useDeferredValue: Useful for prioritizing the responsiveness of your user interface by deferring long-running operations that might affect the performance of your application.
  5. useEffect: This hook handles side effects in your functional components. Side effects include fetching data, setting up event listeners, and DOM manipulation. 
  6. useId: Helps you generate unique IDs across your React application.
  7. useImperativeHandle: Allows you to specify the properties of a component that should be exposed when using refs.
  8. useInsertionEffect: This makes it easy for you to execute a function after a component has been added to the DOM.
  9. useLayoutEffect: It works similarly to useEffect, but it’s synchronous. You can use it to make changes on your DOM immediately when it’s updated, and before the browser displays content on a user’s screen. 
  10. useMemo: It is used to memoize the result of expensive computations to avoid unnecessary recalculations.
  11. useReducer: Instead of using useState you can use useReducer to handle more complex state logic within a functional component.
  12. useRef: Helps you create mutable references that you can access across multiple renders of a functional component. 
  13. useState: Allows you to manage the state within a functional component.
  14. useSyncExternalStore: This hook allows you to read and subscribe to an external data store.
  15. useTransition: Helps you manage asynchronous updates to a React application’s UI.

WHY DO WE NEED CUSTOM HOOKS?

Don’t get me wrong, this article is not to say that the in-build React hooks are not sufficient. React has all these powerful hooks that will serve you well. Nonetheless, I can’t deny the reality that custom hooks can greatly improve the readability and overall quality of your code.

Let’s open up this fact a little bit by highlighting why you might need a custom hook:

  • It makes logic reusable.
  • It allows you to use other hooks provided by React.
  • You can easily separate your logic from your UI.
  • You can break down complex stateful logic into simple chunks of code that are easy to maintain.
  • You can test specific parts of your stateful logic because custom hooks can be debugged in isolation.

TIPS FOR CREATING CUSTOM REACT HOOKS

Here are some tips to keep in mind to ensure your custom hooks are flexible, reusable, and easy to understand.

  • Follow the naming convention by starting with use.
  • Repeated/reusable logic within your components should be your custom hooks candidates.
  • Feel free to use the built-in React hooks where necessary.
  • Make sure a hook is focused on one responsibility instead of multiple functions.
  • Your hooks should have value or functions that components can use.
  • Ensure your hooks can accept parameters so you can easily customize their behaviour.
  • Test your hooks in different scenarios to ensure they are performing as expected. You can use tools like Jest and/or the React Testing Library.
  • Document your hook and succinctly explain its function.

CREATING YOUR FIRST CUSTOM HOOK

Step 1: Define Your Hook

Let’s create a custom React hook that would allow our application toggle between light and dark mode (our reusable logic). To begin, we create a JavaScript file to define our hook.

import { useState, useEffect } from 'react';
function useDarkMode() {
  const [isDarkMode, setIsDarkMode] = useState(false);
  useEffect(() => {
    const body = document.body;
    if (isDarkMode) {
      body.classList.add('dark-mode');
    } else {
      body.classList.remove('dark-mode');
    }
  }, [isDarkMode]);
const toggleDarkMode = () => {
    setIsDarkMode(prevMode => !prevMode);
  };
  return [isDarkMode, toggleDarkMode]:
}
export default useDarkMode;

Step 2: Use Your Custom Hook

Now, we can use our custom hook in our React component.

import React from 'react';
import useDarkMode from './useDarkMode';
function App() {
  const [isDarkMode, toggleDarkMode] = useDarkMode();
  return (
    <div className="App">
      <button onClick={toggleDarkMode}>
        Toggle Dark Mode
      </button>
      <div className={isDarkMode ? 'dark-mode' : 'light-mode'}>
        {isDarkMode ? 'Dark Mode' : 'Light Mode'}
      </div>
    </div>
  );
}
export default App;

Step 3: Test Your Hook

To carry out the test, you’ll have to install the Jest and the React Testing Library using:

npm install --save-dev @testing-library/react @testing-library/jest-dom jest

Then, we’ll create a test file for our custom hook. Let’s call it useDarkMode.test.js.

We’ll proceed to use the renderHook and act utilities in our React Testing Library to test our hook.

import { renderHook, act } from '@testing-library/react-hooks';
import useDarkMode from './useDarkMode';


describe('useDarkMode', () => {
  test('should toggle dark mode correctly', () => {
    const { result } = renderHook(() => useDarkMode());
    // Initial state should be light mode (isDarkMode: false)
    expect(result.current[0]).toBe(false);
    expect(document.body.classList.contains('dark-mode')).toBe(false);
    // Toggle to dark mode
    act(() => {
      result.current[1](); // toggleDarkMode
    });
    expect(result.current[0]).toBe(true);
    expect(document.body.classList.contains('dark-mode')).toBe(true);
    // Toggle back to light mode
    act(() => {
      result.current[1](); // toggleDarkMode
    });
    expect(result.current[0]).toBe(false);
    expect(document.body.classList.contains('dark-mode')).toBe(false);
  });
});

Next, add Jest to your package.json file as follows, then run npm test to confirm that the useDarkMode hook is running as expected:

"scripts": {
  "test": "jest"
}

Step 4: Document Your Custom Hook

Document how your custom hook works and include details like its parameters and return values.

CREATING A DATA FETCHING CUSTOM HOOK

Now that you have an idea of how to create a custom React hook, let’s build another common custom hook (a data fetching hook) to further reinforce our knowledge. Shall we?

Step 1: Create the hook.

We’ll call it useFetch.js. This custom hook is commonly used to allow several components to fetch data from an API.

import { useState, useEffect } from 'react';


function useFetch(url) {
  const [data, setData] = useState(null);
  const [loading, setLoading] = useState(true);
  const [error, setError] = useState(null);


  useEffect(() => {
    const fetchData = async () => {
      setLoading(true);
      try {
        const response = await fetch(url);
        if (!response.ok) {
          throw new Error('Network response was not ok');
        }
        const data = await response.json();
        setData(data);
      } catch (error) {
        setError(error);
  } finally {
        setLoading(false);
      }
    };
    fetchData();
  }, [url]);


  return { data, loading, error };
}
export default useFetch;

Step 2: Use your new hook in a component.

import React from 'react';
import useFetch from './useFetch';
function App() {
  const { data, loading, error } = useFetch('https://api.google.com/data');
  if (loading) return <div>Loading...</div>;
  if (error) return <div>Error: {error.message}</div>;
  return (
    <div>
      <h1>Data:</h1>
      <pre>{JSON.stringify(data, null, 2)}</pre>
    </div>
  );
}
export default App;

Step 3: Test and document your custom hook.

import { renderHook } from '@testing-library/react-hooks';
import useFetch from './useFetch';
// Mock the fetch function
global.fetch = jest.fn(() =>
  Promise.resolve({
    ok: true,
    json: () => Promise.resolve({ data: 'mocked data' }),
  })
);
describe('useFetch', () => {
  afterEach(() => {
    fetch.mockClear();
  });
  it('should return data after fetch', async () => {
    const { result, waitForNextUpdate } = renderHook(() => useFetch('https://api.example.com/data'));
    expect(result.current.loading).toBe(true);
    await waitForNextUpdate();
    expect(result.current.loading).toBe(false);
    expect(result.current.data).toEqual({ data: 'mocked data' });
    expect(result.current.error).toBe(null);
  });
  it('should return an error if fetch fails', async () => {
    fetch.mockImplementationOnce(() =>
      Promise.reject(new Error('Fetch failed'))
    );
    const { result, waitForNextUpdate } = renderHook(() => useFetch('https://api.example.com/data'));
    await waitForNextUpdate();
    expect(result.current.loading).toBe(false);
    expect(result.current.error).toBe('Fetch failed');
    expect(result.current.data).toBe(null);
  });
});

GET STARTED TODAY

By leveraging the power of custom hooks, you’ll be able to write simple,  maintainable and readable codes. And trust me, once you get started, you are locked in by the ease these functions bring to your programming journey.

Categories
Best practices General Software Tech

How To Improve Your Website Accessibilty – Victoria Nduka

Have you ever noticed ramps beside staircases at building entrances, like the one in the image below? These ramps aren’t for aesthetics. They were designed to allow disabled individuals access to the building. Buildings with walkways structured like this are considered “accessible”, because they accommodate everyone, ensuring no one is left out.

Nowadays, a lot of interactions happen online. You can shop for groceries from the comfort of your home and get it delivered to you before the day is gone. Just like in physical spaces, our digital world needs to be accessible too. Digital accessibility means making sure websites and apps can be used by everyone.

WHAT IS WEB ACCESSIBILITY?

Web accessibility means designing and developing websites and apps to suit individuals of all kinds (disabled and abled). It ensures that users can perceive, understand, navigate, and interact with your digital content without experiencing challenges that may prevent users from accessing the information or services they need.

To understand how relevant web accessibility is in the digital world, let’s consider its importance:

  1. Legal Requirements: In countries like Israel and the United States of America, some laws and regulations require websites to be accessible. One of such law is the ADA (Americans with Disabilities) complaint law. Not complying with these regulations can lead to legal sanctions.
  2. Better User Experience: When navigation is easy to run through, text is readable, and the user interface is smooth, visitors to the site will have a user experience.
  3. SEO Benefits: Websites designed with accessibility in mind perform better in search engine rankings. Using descriptive text for images (alt text) and organizing content with appropriate heading levels help search engines understand and index your site more effectively.

ACCESSING YOUR CURRENT WEBSITE ACCESSIBILTY

Before making changes to your website’s accessibility, it’s important to
assess its current state. Here are some steps you can take to evaluate the accessibility of your website:

Step 1: Conduct an Accessibility Audit

You can use various tools and techniques to identify accessibility barriers and areas for improvement. Consider the following:

Automated Tools: Use automated accessibility testing tools like WAVE, Axe, or Lighthouse to scan your website for common accessibility issues. These tools identify issues such as missing alt text, colour contrast problems, and keyboard navigation issues
Manual Testing: While automated tools can catch many accessibility issues, some issues require manual testing. Manual testing involves simulating how users with disabilities might interact with your website and identifying any usability barriers they might encounter.
User Testing: You can take your audit a step further by conducting usability testing with individuals who have disabilities. Gather first-hand feedback on their experience using your website. This can provide valuable insights into real-world accessibility issues that automated tools may no

Step 2: Review Accessibility Guidelines

Familiarize yourself with the Web Content Accessibility Guidelines (WCAG) published by the W3C. These guidelines provide a comprehensive set of criteria for making web content more accessible to people with disabilities. Reviewing the WCAG can help you understand the
specific requirements and best practices for accessibility. Then you can determine in what areas your website is falling short.

Step 3: Identify Priority Areas

Once you’ve completed your accessibility audit and reviewed the WCAG, prioritize the accessibility issues you’ve identified. Focus on addressing critical issues that impact the largest number of users or present significant barriers to access. Consider factors such as the severity of the issue, frequency of occurrence, and the potential impact on users.

Step 4: Create an Accessibility Action Plan

Based on your assessment and prioritization, develop a comprehensive accessibility action plan outlining the steps you’ll take to address accessibility issues on your website. Set clear goals, timelines, and responsibilities for implementing accessibility improvements. Your action plan should be flexible and adaptable to accommodate new insights and changes in priorities.

Step 5: Monitor and Iterate

Accessibility is an ongoing process, not a one-time task. Once you’ve implemented accessibility improvements, continue to monitor your website regularly for new accessibility issues and feedback from users. Iterate on your accessibility action plan based on new insights and evolving accessibility requirements.

PRINCIPLES OF WEBSITE ACCESSIBILITY

The foundation of web accessibility lies in four key principles developed by the World Wide Web Consortium (W3C) in a set of guidelines known as the Web Content Accessibility Guidelines (WCAG). These principles, often abbreviated as POUR, form the framework for creating accessible digital experiences. Let’s explore each principle in detail:

  1. Perceivable (P): Perceivable means that users must be able to perceive the information being presented. In other words, the content must be available to at least one of their senses (sight, hearing, touch) so that
    they can access and understand it. Consequently, users with visual impairments, for example, must be able to access web content through other senses or enhanced visual means.
  2. Operable (O): Operable means that users must be able to navigate and interact with the interface. Users may use different ways to interact, like using a keyboard or talking to the device. So, no matter how a user wants to use the website or app, it should work smoothly and be easy to use.
  3. Understandable (U): Understandable means that users should easily understand what they see on the website or app and know how to use it. It requires using clear language and making sure things work in a way
    that users expect without feeling lost or frustrated.
  4. Robust (R): Robust means that your web content is accessible to everyone, regardless of their choice of devices. This includes users who rely on assistive technologies like screen readers, screen magnifiers, or voice recognition software. The robust principle also guarantees that content will remain accessible as technologies evolve.

IMPROVING YOUR WEBSITE USING THE P.O.U.R PRINCIPLE

Now that you’ve assessed your website’s current accessibility status, it’s time to take action to improve it. Let’s explore how you can apply the POUR principles we have discussed earlier to improve the accessibility of your website.

Perceivable (P)

  1. Text Alternatives: Images and multimedia should have text descriptions (alt text) that screen readers can read aloud. Avoid generic descriptions like “Image01.jpg” and write clear, concise text that describes the content of the image. For instance, an image of a dog
    would have an alt text like “Golden Retriever playing in the park.”
  2. Colour Contrast: People with visual impairments may struggle to distinguish between text and background colours if the contrast is poor. Use a colour contrast checker to ensure your text is readable against the background.
  3. Captions: Videos should have captions so that users who are deaf or hard of hearing can read what is being said.
  4. Transcripts: Audio content should have transcripts that provide a written version of the spoken material.

Operable (O)

  1. Keyboard Accessibility: People with motor impairments may have difficulty using a mouse or other pointing device to interact with a website. Ensure your website allows users to navigate through all interactive elements (menus, buttons, links, forms) using just the keyboard. Users should also be able to navigate through the entire site using the Tab key to move forward and Shift+Tab to move backwards.
  2. Seizure Prevention: Be mindful of content that flashes rapidly (more than three times per second) as it can trigger seizures in users with photosensitive epilepsy. Instead, consider using animations without rapid flashing or provide a warning along with the option to pause or stop them.
  3. Navigation Aids: Provide clear and consistent navigation options to help users find content. Use a consistent layout for navigation menus across all pages.

Understandable (U)

  1. Readable Text: Use clear and simple language. Break up text into manageable chunks with headings, lists, and other formatting. Avoid jargon and use short, straightforward sentences.
  2. Predictable Navigation: Ensure that navigation is consistent and predictable. Avoid sudden changes in context. Links should clearly state their destination and buttons should indicate their action.
  3. Input Assistance: Provide help and suggestions for form inputs. Show clear error messages and instructions. Use placeholder text and instructions within forms to guide users.

Robust (R)

  1. Standards Compliance: Use valid, semantic HTML and follow web standards to ensure compatibility with different browsers and assistive technologies. Use proper HTML5 elements and attributes.
  2. Accessible Rich Internet Applications (ARIA) Landmarks: Use ARIA landmarks to improve navigation for users with screen readers. Mark up sections of the page using ARIA roles like role=”banner”, role=”navigation”, and role=”main”.

YOUR NEXT STEP

Congratulations on taking the first steps towards enhancing the accessibility of your website! Improving the accessibility of your website is not just a good thing, it’s simply the right thing to do. Remember that improving your website accessibility is a journey, not a destination. As your
website grows and evolves, revisit these principles and make sure new content adheres to accessibility best practices.

Categories
Best practices Coaches General Hackathon

Tips For Winning A Hackathon Challenge

Hackathons are tools that drive creativity and innovation by tackling challenges to provide solutions. In a hackathon competition,  individuals with similar interests collaborate to deliver a solution to an existing or predicted problem. The hackathon organizers, sponsors, or partners usually outline the challenges and the judges decide the winners after the presented solutions, provided criteria and guidelines are met. It is an opportunity for creatives and innovative minds to leverage communication, teamwork, and presentation skills to solve problems and challenges quickly.

HOW HACKATHONS WORK

Hackathons are carried out online, onsite, or hybrid depending on the sponsor. When COVID-19 brought the world to a standstill in 2020 and different country-specific restrictions and measures were put in place, most hackathons were organized virtually. But in recent times, there has been a gradual return to fully onsite hackathons. 

The various technologies, tools, and challenges that participants can use and work on are announced 1–2 days before the hackathon begins. Partners and sponsors introduce the challenges to all participants including important information regarding the competition even if you don’t understand the challenge to work before coming, the explanations will dig deeper into them for you, so listen carefully.

Eventaully, each hackathon submission is judged by a metric to determine the winning team or solution. The success metric is measured differently depending on the organizers, judges, or themes. Common metrics used include quality of prototypes, minimum viable product(MVP) development, website functionality, improvement in engagement scores, reduction in implementation time, and Participation metrics.

TYPES OF HACKATHONS

Hackathons come in many forms and depend on the objective, goal, or sponsors. They all fall into one of the types listed below:

Niche/Theme Based: Niche or theme-based hackathons are specially crafted by single or multiple sponsors to provide solutions to challenges by using a specified or company-created tool and resource such as API. Common theme-based hackathons include Finance, Healthcare, Diversity, and Open Source. For instance,  Digital Healthcare is a hackathon focused on driving solutions to the healthcare sector. The required outcome could be to create a web application, video game, or anything significant.

Custom Hackathons: A hackathon is custom if it addresses solutions to problems by leveraging a language, framework, or profile. For instance, a hackathon that uses a programming language such as Java, Python, or Ruby on Rails to solve a problem. In this type of hackathon, how you use the programming language is preferred above what you can build. For profile-based hackathons, this involve student-only or female-only hackathons that accept only people in those categories as participants to work on challenges or topics to claim a reward.

MISTAKES YOU SHOULD NEVER MAKE DURING A HACKATHON

To succeed in a hackathon there are mistakes you should avoid. These mistakes are not bound to first-timers or amateurs alone but also applicable to experienced hackathon participants and previous winners of one or more hackathons.

  • Avoid changing teammates along the way or quickly selecting teammates based on their appearances, stickers on laptops, or gadgets. Doing this may jeopardize your team’s strength and efficiency since the competition is constrained by time.
  • Avoid using tools that you and your teammates are not familiar with. Hackathons are good places to learn new tools but do not try to build using a new tool without understanding the basics of that tool, it might not end well.
  • Avoid trying to build a solution that is too complex to be done within the stipulated time. You’d be requiring too much from your teammates.
  • Avoid allotting unreasonable time frames for the accomplishment of major product milestones.
  • Avoid working alone. Seek support from teammates, mentors, or sponsors when you have to.
  • Avoid imposing your opinions and thoughts on your teammates without considering other alternatives from their perspective.
  • Avoid prioritizing aesthetics over functionality.
  • The hackathon rules are very important and must be adhered to if you don’t want your team to be disqualified. Familiarize yourself with the hackathon’s rules and fundamental problem statements.
  • Do not repeat an already existing solution by modifying some features to wow the judges.

HOW TO WIN AN HACKATHON

Here are 10 tips for first timers, and experienced hackathon participants to ace any hackathon competition with ease

  • Have a complete team: Diverse your team skills and abilities to include developers, UI/UX designers, product/project managers, marketers, and those with social skills.
  • Teamwork is the key: Teamwork is important for winning a hackathon. Listen to the opinions of your teammates, appreciate their contributions and ideas, and be open generally to a variety of ways to achieve the same goal.
  • Apply empathy: Be kind enough to understand your teammates, and discover their strengths and weaknesses to coordinate your team, delegate properly and motivate each other.
  • Build only key components within the given time: Focus on building the key features the solution needs and distribute the most important features to your teammates, ensuring each team member knows what is to be built individually.
  • Focus on the hackathon 100%: Hackathons are filled with distractions demanding your attention. You must stay fixed on the solution you are building.
  • Appreciate the uniqueness of your solution: If you have a novel solution that you can pull off with the hackathon time frame then go for it and pay less attention to what other teams are building. Some might just be reinventing the wheel when there is no need.
  • Prepare your presentation: Invest ample time to work on your presentation, including your demo, and make it as simple and interactive as possible. Your presentation is the second most important part of the hackathon, after your solution. Highlight the problem statement, key features, and why you made the product, how it works, and how it solves the problems of the end users”. 
  • Document all the ideas: Write down the ideas, concepts, and complaints of each team member during the brainstorming session and use the Prioritization Matrix to pick between what is important and needed, important and not needed for the product.
  • Gather some information: Gather basic knowledge of your sponsors, judges, and audience to help you customize your presentation and demo to fit their needs. Use social media sites like LinkedIn, X, and Pinterest or strike up conversations at the hackathon during lunch or Q&A sessions.

WHERE TO FIND HACKATHON RESOURCES

If you have been having a hard time searching for hackathons, here are some resources for you to explore.

  • DevPost: DevPost is an epicenter for hackathons. It is stocked up with different types and categories of hackathons by level, length, theme, location, and status. You will also find guides, tricks, and tips for organizers and participants in hackathons.
  • NaijaHacks:  NaijaHacks is a go-to spot for all things on hackathons. It offers guides on team formation, mentors, prizes, and workshops. It also has tutorials broken down into sectors including Blockchain, VR/AR, Machine Learning,  Mobile/Web Development, Hardware, Miscellaneous, and an introduction to Git for beginners.
  • DoraHacks: This is the hub for Web3 hackathons, it features ongoing and upcoming hackathons to browse and participate in. Individuals and communities can also use their platform to host hackathons
  • Hackathons International: Hackathons International is a global organization that provides problem-solving strategies, toolkits, and resources for participants and organizers to host/successfully participate in hackathons globally.
  • GitHub: GitHub is a repository of hackathon projects and resources including tutorials, templates, code from past hackathons, and tools to help you practice your skills, and provide key tips to winning projects.  It is a good source of inspiration and insight into successful hackathon approaches. Typing “hackathon projects” into the search box on GitHub will return a curated list of hackathon resources.
  • Stack Overflow: If you are encountering a coding roadblock, this is your centre for solution. Stack Overflow is an online Q&A forum for experienced and beginner developers. It contains several solutions to common problems. Whatever you are struggle with, someone else has faced it before and shared a solution on the platform.  
  • API Docs: Application Programming Interface description documents include, tutorials, references, and examples that show and explain to developers what is possible with your API and how to use it. This depends on the hackathon theme or your project idea, you can leverage APIs from various platforms. Ensure to always refer to the official documentation for specific instructions and usage examples to be sure. You can check out Spotify documentation Spotify Web Documentation.

WHY YOU SHOULD PARTICIPATE IN A HACKATHON

Immediate Recruitment: Many participants in hackathons got jobs only by participating. Companies organize most hackathons to provide solutions to an existing problem or desire to launch a new product to target a market. The solution you build can come in handy, which can ultimately lead to you being recruited to continue the development of the solution.

Find out more: Due to the practical nature of hackathons, it provides a unique opportunity for beginners, intermediate, and experts to gain more experience and insights into a particular tool, application, or technology. For example, a participant may have theoretical knowledge of a programming language but may have yet to have the chance to apply it in a real-world project. By participating in a hackathon focused on that language, they can learn new techniques, best practices, and shortcuts from their peers.

Opportunity to Network: Hackathons attract a diverse group of participants, including students, professionals, entrepreneurs, and industry experts. Through team collaboration, workshops, and networking sessions, participants can forge valuable connections with people who share similar interests or work in related fields.

Build Technical and Problem-Solving Skills: Hackathons present participants with time-sensitive challenges that require innovative solutions. These challenges often span across a wide range of domains, from software development and data analysis to hardware prototyping and social impact projects. By tackling these challenges, participants can enhance their ability to think creatively, break down complex problems into manageable tasks, and adapt to unexpected obstacles.

Grow Your Social Skills: Hackathons foster a collaborative environment where participants must effectively communicate and work together to achieve their goals. Team members may come from different backgrounds, disciplines, or even countries, requiring them to bridge cultural and language barriers. Through brainstorming sessions, code reviews, and project presentations, participants can improve their verbal and written communication skills, as well as their ability to give and receive constructive feedback.

Launch a Career: Hackathons are real-world opportunities to meet your first and long-term mentors, business partners, and angel investors.  A hackathon is an opportunity to build a solution to a challenge that enables you to spot a market that is open to exploit creating a new career role for you.

Strengthen your Resume: Hackathon participation is highly regarded by employers as it demonstrates a candidate’s practical skills, creativity, and passion for learning. Including hackathon projects on a resume can showcase a candidate’s ability to work under pressure, collaborate with others, and deliver results within a limited timeframe. Moreover, winning a hackathon competition can further validate a candidate’s abilities and differentiate them from other job applicants.

Categories
Best practices General How-Tos

Open-source Contribution Guidelines

One of the easiest ways to convince recruiters to hire you is by showcasing a rich portfolio containing, at least, one open-source contribution project. For entry and junior developers (and maybe senior developers), this is not open for debate as the benefits of contributing to open-source projects are immense. Not only does contributing to open-source projects broaden your experience and skills, but it also provides an orifice of exposure to industry-standard tools and practices.

So, how do you get started?

FIND A PROJECT

The first step is to find an open-source project that interests you. You can start by exploring platforms like GitHub, GitLab, or Bitbucket. These platforms host millions of open-source projects of technologies and domains. Look for projects with a clear and active community, as this will make it easier to get started and receive support.

To find the right project, consider browsing trending repositories or searching for projects based on your interests. Many platforms offer tags or categories that can help you narrow down your search.

For example, if you’re interested in web development, you might search for projects tagged with “JavaScript” or “React.” If you’re into data science, look for projects involving “Python” or “Machine Learning”.

EVALUATE THE PROJECT

Before diving in, take some time to evaluate whether you want to contribute to the project. Consider factors such as:

Project Goals: Ensure the project’s goals align with your interests and objectives. Understanding the project’s mission and vision can help you stay motivated and make meaningful contributions.

Technology Stack: Check whether you’re familiar with the programming languages and tools used in the project. Contributing to a project using a stack you’re comfortable with can help you contribute more effectively and learn faster.

Community: Assess whether the community is active and welcoming to new contributors. An active community often means better support and more opportunities for collaboration. Look at the project’s issue tracker, pull request activity, and community forums or chat groups to gauge this.

READ DOCUMENTATION

Familiarize yourself with the project’s documentation. Most projects have detailed documentation that explains how the software works, how to set it up locally, and how to contribute to it. Reading the documentation will give you a good overview of the project’s architecture, coding standards, and contribution process.

Good documentation typically includes a README file with an introduction to the project, installation instructions, and a contribution guide. Some projects also have a Code of Conduct, which outlines the expected behavior of contributors. Pay attention to these documents as they provide essential information for new contributors.

FIND AN ISSUE TO WORK ON

After reading the documentation, it’s time to find an issue to work on. Most open-source projects use issue trackers to keep track of bugs, feature requests, and other tasks. Look for issues labeled as “good first issue” or “beginner-friendly” as these are usually suitable for newcomers. You can also filter issues based on your skill level, the type of task, or the programming language you’re comfortable with.

When selecting an issue, start with something small and manageable. This will help you get acquainted with the project’s workflow and build confidence. As you gain more experience, you can gradually take on more complex issues.

GATHER MORE INFORMATION

Once you’ve found an issue you’d like to work on, it’s essential to gather more information. Here are some steps you can take:

Read Comments and Discussions: Many issues have comments and discussions that provide additional context or clarify the problem. Reading through these can help you understand the issue better and avoid redundant efforts.

Ask Questions: If you have any doubts or need more information, don’t hesitate to ask questions in the project’s chat or forum. The project maintainers and other contributors will be happy to help you get started and provide guidance along the way.

Review Related Code: Sometimes, looking at related code or previous pull requests can provide insights into how similar issues were resolved. This can help you understand the coding standards and practices followed by the project.

WORK ON YOUR SOLUTION

With all the necessary information at hand, it’s time to start working on your solution. Here’s what you should do:

Fork the Repository: Fork the project’s repository to your own GitHub account. This creates a copy of the project where you can make changes without affecting the main codebase.

Create a New Branch: Create a new branch for your changes. It’s good practice to name your branch descriptively, such as “fix-issue-123” or “add-feature-x.”

Follow Coding Standards: Adhere to the project’s coding standards and conventions. This ensures that your code is consistent with the rest of the codebase and makes it easier for maintainers to review your changes.

Write Clear and Focused Code: Keep your changes focused and well-documented. Write clear commit messages that explain the purpose of each change. This helps maintainers understand your work and makes it easier to track changes.

SUBMIT YOUR SOLUTION

Once you’ve completed your solution, it’s time to submit it for review:

Create a Pull Request (PR): Create a pull request on the project’s repository. This notifies the maintainers that you’ve made changes and would like them to be reviewed and merged into the main codebase.

Describe Your Changes: In your pull request description, explain the problem you’re solving and the solution you’re proposing. Reference the issue you’re addressing and provide any relevant context or information.

Respond to Feedback: The project maintainers and other contributors will review your code, provide feedback, and help you make any necessary changes. Be open to feedback and willing to make revisions to improve your contribution.

Once your PR has been approved, your changes will be merged into the main codebase, and you’ll have made your first open-source contribution. Celebrate this milestone and take pride in your achievement.

ADDITIONAL TIPS

Be Patient and Open to Feedback: Open source projects often have many contributors and maintainers with different opinions and approaches. Be patient when waiting for feedback and open to constructive criticism.

Respect the Community: Adhere to the project’s Code of Conduct and respect the community guidelines. Maintaining a positive and respectful attitude fosters a welcoming environment for all contributors.

Keep Learning: Continuously improve your skills by learning from other contributors and exploring new technologies. The more you learn, the more valuable your contributions will become.

Ask for Help: Don’t be afraid to ask for help or clarification when needed. The open-source community is generally supportive and eager to assist newcomers.

Document Your Journey: Keep track of your contributions and document your learning process. This can be valuable for your personal growth and can also help you showcase your experience to potential employers.

Network with Other Contributors: Engaging with other contributors can lead to valuable connections and collaborations. Attend meetups, join community chats, and participate in discussions to expand your network.

Stay Updated: Open source projects are constantly evolving. Stay updated with the latest changes by following the project’s repository, joining mailing lists, or subscribing to newsletters. This ensures you are aware of new issues, features, and updates.

Contribute Beyond Code: Contributions to open-source projects are not limited to code. You can help by writing documentation, designing graphics, managing community events, or even translating content. These contributions are equally valuable and help the project thrive.

CONCLUSION

Contributing to open source projects is a rewarding experience that allows you to learn new skills, connect with other developers, and give back to the community. By following these simple steps, you can make your first contribution with confidence and start making a positive impact on the world of open source software.

Remember that every contribution, no matter how small, adds value to the project and the community. Whether you’re fixing a typo in the documentation, resolving a bug, or adding a new feature, your efforts are appreciated.

Categories
Career advice General

Transitioning Into Tech; What They Never Tell You

Let’s face it, we’ve all dreamt of that lightning-fast transition into tech: conquering a course in six months, landing a high-paying role, and living the dollar dream. But for most of us (including you, newbie!), that fantasy fades fast.

This article isn’t here to frighten you, but to equip you for the real journey. Here’s what you need to know:

Learning Never Stops – Tech is an innovation powerhouse with new tools and trends. As a techie, it would be compulsory for you to be constantly learning, investing time and money in courses, conferences, and staying updated on the latest advancements.

Soft Skills are Superpowers – Don’t underestimate the power of communication, teamwork, and problem-solving. These “soft skills” are gold in the tech industry. They’ll shine through interviews, project presentations, and everyday collaboration.

Imposter Syndrome is Common – Tech can make anyone feel like a beginner, even seasoned pros. This “imposter syndrome” is normal! Remember, everyone feels the self-doubt. Don’t be afraid to ask for help and leverage the next tip.

Find Your Tech Mentor – A mentor is your secret weapon, especially early on. They’ve been there, felt the imposter syndrome, and can offer guidance and perspective. Feeling stuck? They’ll be your cheerleader and help you combat negative self-talk. (Pssst! Techrity is launching a free mentorship program, TMP 4.0 – check it out!)

Embrace the Setback – Social media might portray a world of instant tech success, but the reality is filled with bumps and roadblocks. See these setbacks as learning opportunities, not failures. They’ll shape you into a stronger, more resilient tech professional.

The tech journey is a marathon, not a sprint. It’s about continuous learning, adapting to change, and bouncing back from challenges. While the initial expectations might shift, understanding these realities is crucial for long-term success and fulfillment in this exciting field. So ditch the six-month dream, embrace the lifelong adventure, and get ready to win.