Key Aspects to Consider in Software-Based Competitions
Tags: developers, programming, softwareengineering, softwaredevelopment
Published: 2024-04-25 21:46:10

My experience during my undergraduate years was filled with ups and downs. I participated in three software development-based competitions during my undergrad and was fortunate to place in each, despite feeling like I was on the verge of failure many times. However, I believe now is the perfect opportunity to share my thoughts. I'll only focus on weeks or month-long competitions where you will have enough time for careful planning, coding, and execution. Let's delve deeper.

## Get a supportive teammate

You should focus on exploration and learning, rather than just winning prize money. You may not be interested in every aspect of a project. For example, you might excel in coding, but you lack in presentation or design. Get a partner who can fill up your limitations. Collaborating with others can also help enhance your skills.

## Leverage Existing Resources

It's crucial to prioritize your efforts to make the most of your time and learn how to code effectively. Instead of spending time on tasks that can be easily found online, you can visit GitHub to explore existing codes, see how they work, and reuse them. If you lack in designs, visit the UI templates-related websites. Use ChatGPT, Bard or any resources that can speed up your project. Merge your thoughts with the resources. Instead of copy-paste, try to understand the code. Put more effort into the core features that prove the unique characteristics of your app.

Let me tell you my experience. In Therap Javafest 2023, my teammate and I wanted to create games for children using p5.js. We started by researching existing games available on the internet and drawing inspiration from them. Then, we delved into p5.js implementations to gain more knowledge. We came up with some ideas that were both feasible and entertaining. Meanwhile, we took a straightforward approach to the chatbot and grammar fixing. We utilized the ChatGPT API and some prompt engineering only.

## Focus on Tech Implementation

When participating in a competition, we tend to focus on finding the most unique idea possible. However, the key to success lies in the idea's implementation using existing technologies. Remember, your innovation should involve exploring and learning while keeping an eye on winning the prize. If your idea doesn't have an interesting perspective from a technological standpoint, it may not have much impact.

Read blogs and research about technologies to ensure that you use the most efficient and exciting technology. Make a stack of potential technologies and tools, then generate an idea that covers everything. It's necessary to challenge yourself, but it's equally important to be aware of your capabilities. Don't put yourself in a situation where you suffocate in an ocean of challenges later.

For example, to learn how to implement any specific feature, start by establishing the basic development stack. Next, take some time to find an inspirational example and take note of these. Discuss with your partner to determine a feasible implementation plan. Then decide on the specific features you want to include and add your unique touch. Find some more features like that. Include 1-2 extra features in your initial planning as additional options. Don't go overboard with too many fancy features. It just makes it too much to handle. Additionally, basic features such as email verification during sign-up help to build a good foundation. These features are usually easy to implement.

## Push Yourself to the Limit

Make sure that the time you spend on something has a positive outcome. If you're working on a project, make sure it's something you can show off later and that you learn something from it. Agile development can be stressful for software engineers, but it is also an opportunity for growth and learning. Try to challenge yourself and learn new things. Instead of using more and more similar frameworks, use frameworks to serve different purposes. You might not understand everything you're trying to learn, but your effort will still help you improve your skills.

## Adopt Best Practices

Always remember that you can build a project even overnight. Everything you need is available on the internet. If you can't find something, don't worry - you don't know the right keywords yet (this line is for beginners only). Even if you are a beginner in the development field, try to implement good practices. For example, start with good naming conventions, and later work on structuring your frontend and backend. This will make your codebase more appealing to the judges.

## Develop Soft Skills

Presentation is a crucial aspect of any competition. You may have an excellent project with many tools, but your presentation will display the value. Getting up on stage and improvising a speech is not going to work always.

To ensure a successful presentation, practice as much as you need to. Don't just display your code, as it may not be easily readable on a big screen. Instead, use diagrams and structures with a fluent speech that will help you connect with the audience. Show how well your project performs rather than just demonstrating that it works. For instance, if you have a chatbot for children, rather than asking a simple question like "How are you?", ask something more captivating that only children may ask, like "Can birds swim in chocolate?" If you handled it perfectly, the answer will showcase your effort gloriously.

Keep in mind that grabbing the attention of an audience is not an easy task. Practising your presentation will help you overcome the fear.

## Accept Imperfections Gracefully

Sometimes, despite your best efforts, a project may not turn out as expected. If this happens, don't get frustrated. Instead, take a step back and identify what went wrong. Start by listing the things that didn't go according to plan. It is acceptable to acknowledge logical flaws or limitations while highlighting positive aspects. For example, you can mention if you're facing issues with some public APIs that are not working as expected. Using paid tools won't make a significant difference in the competition. Your primary focus should be on the main feature of your project. It could be the structure, scalability, or implementation - anything you put your heart into. So explain the reasons to the judges and put pride in your efforts.

Always keep **two** things in mind: firstly, no matter how much you prepare, you can never be fully ready. Attend the competitions with whatever you have. Secondly, regardless of your position, there will always be someone better than you in the competition in any aspect. That's why keep an eye on others, communicate with them, and learn from their techniques. If you can master this approach, you can make the most of any competition you participate in.

There are many points to note down. Take your time to accomplish them. Starting is better than nothing.

My teammate @shikarisohan and I placed first on Therap Javafest 2023. I have attached the GitHub link below.

Happy coding!
 
{% embed https://github.com/ShikariSohan/kiwi %}