Coming Up With Project Ideas, A Student's Personal Experience

Oct 15, 2020

Introduction

Projects are a big deal. They can add value to your CV. They can help see potential employers what kind of code you write, if you decide to share them on Github. They can be a good learning opportunity given you get a good chance to learn and think about potential problems. Thing is, projects are fun and exciting.

If you're like me, you often, or even daily, come across hyped articles and flashy posts about new and upcoming technologies, ideas, frameworks, research papers, and Github repositories that truly seem remarkable with an amazing amount of effort put into it.

So here is what you decide to do, "I'm going to make the absolute best thing using this new technology!". But as reality hits, that is very often far away from the actual practical implementation of ideas.

Problems For Me, Personally

Coming from a time back when technology was still very fresh for me, and I was still very confused about what I wanted out of my career and academics, it was obvious, and eventual, that I was to run into some problems.

Some of the problems that I usually came across when trying to think of ideas was,

  • I was unsure how to differentiate between 'bad' and 'good' ideas
  • I was unsure of the technological requirements and the skills needed to implement that idea
  • I was unfamiliar with basically anything other than the language that I was using and the main Operating System, i.e., Windows at that time
  • I was only somewhat familiar with 'buzz words', such as 'graphics engines', 'data science', 'web development', 'compilers'.
  • I was unsure about where to begin, because I didn't have anyone but the Internet to help me, about 90%+ of the time and since computer science and programming was still all very new to me
  • I was unsure how to plan things out. Good projects need more than a week's proper time to have anything substantial to begin with
Shot made while filming for yesHEis project
This was sometimes me. Photo by Nik Shuliahin / Unsplash

The Flow I Went With In The End

However, I was hell bent on exploring the field and getting myself introduced to all the different things that I could find via the web. So here is the broken approach that I took...

Opps,

  1. Spent 2-3 days learning a specific technology
  2. Spent some time trying to find leaders for that technology and following them on Facebook, Twitter, or LinkedIn
  3. Trying to find ways to grow your skills in that specific domain by finding more technological techniques and whatnot
  4. Getting stuck
  5. Rinse and repeat

Why it doesn't work

The problem really starts at the 3rd point, as many students, as like me in the initial beginning, kept thinking about how they knew little to nothing, and that there was something that they still needed to grow or learn to actually make something useful.

To solve this, the only way sometimes seemed to keep learning a technology to get good at it, but honestly, this doesn't help you understand how to approach problems in an healthy fashion, and doesn't really allow you to think creatively and what all of this learning means in the longer run. Or perhaps focusing on the bigger picture,

Why This Problems Even Arises In The First Place

During a semester, there can be little to no time to actually think through the requirement phase for an actually good project.

Just to clarify, I am not talking about your average,

  1. XYZ management project
  2. ABC data structure implementation

As those are very simple and don't need much innovation to think about.

I'm really just talking about taking some sort of simple problems and approaching them from a software design perspective, that is,

  1. Learning to use a library to implement some basic functionality in your desired language
  2. Learning to research and coming up with a method for implementation in your language
  3. Learning to research and implement a simple program. It doesn't have to be a complete application, just something that takes you down a learning path and gives you a chance to work with something new, for example, if you're interested in Computer Vision, implement something related to that. Doesn't have to be huge or very complex, just something simple that you can incrementally use to learn something new
  4. Or just implementing a simple idea. Ask around from seniors and your instructors about project planning, team leading  ( if you are a team), organizing, pre-planning with wireframe models and UML, and what the technology stack should be, what limitations are possible, where might one get stuck, and how to get a very quick prototype up and running
  5. Try to find a niche area to get your work out there. That's very hard for beginners since everyone is still exploring the basics, but still, if you have a good idea and you think you know enough, go for it!

What Needs To Be Fixed

There needs to be a focus on,

Realizing Everything Is Iterative In Nature

Try to find and understand on how to research and how to list down ideas. Questioning things critically can help, but having a solid goal or some sort of vague notion of something, and using that to solidify an idea to work on is actually a very incremental step. The bottom line is, ideas grow from vague thoughts, to conceptual figures, to easily understandable frameworks for contributing, to good prototypes, to great products with a potential market value.

Ideas Over Technology

A reduced focus on the technologies used, and more on how to use what you have to get good to better results. Good projects / products try to limit the dependencies, not grow them

Team Leading ( Yes, Absolutely )

There should be a focus on managing teams. Contrary to the popular programmer myth of a guy / girl sitting continuously for hours on end typing away at the keyboard, a good team knows how to divide the work up.

So, for example, instead of just getting a baseline idea across the table early on, and then working on that idea for the next 2-3 months, you can also just think about the end goal that you are trying to achieve, and split up your work such that you can actually divide it into pieces easier for you or your team to consume. First prioritize what features or modules matter to you the most. Then, just take a small part of your project and have you or yourself focus on that for the next 2-3 days. After that, you can just switch to another feature, or if possible, have your team split up even further by having some people work on something in particular, or some other section of your team works on something else in a way that doesn't bother the two teams.

There is no substitute for hard work.
― Thomas A. Edison
Photo by Andrew Neel / Unsplash

Understanding Your Limitations And Setting Boundaries

It's okay to fail and have projects not really live up to you expectations.

It's okay to fail as well, but it is even more better that you learn from those mistakes and have obstacles and challenges as something fun, interesting, and where you can turn your weakness into a strength.

Remember, that's why you started a project in the first place -  to expand beyond what you already knew, and to face those challenges.

How To Explore, An Attempted Discussion

Personally, I have been reading "CUDA For Engineers, An Introduction to High-Performance Parallel Computing", by Duane Storti, and Mete Yurtoglu. They gave some pretty solid advice, which I really wanted to add here. The points below have been modified in some way from the original content in the book,

  • Identifying a library, language, or API related to the tools you already know with features/functions that look useful and apply them to a problem of personal interest.
  • If you have a certain technology in mind, you can always look up interesting projects or code samples about it, try to understand what it does or what it is supposed to do, and how it accomplished that goal.
  • Sit down with your tech savvy friends and talk about that technology about what they think can be easily done. Show them the code samples you find. If people find it interesting and something that can be done, you have the start of an idea!
  • If you're doing something related to a specific technology, you can always find talks related to that. There are plenty of podcasts, talks on YT, implementation worthy ideas out there. There are for Data Science, for Python, for C/C++
  • Go to https://stackoverflow.com and enter [tech-you-want-to-work-with] in the search box. Click on the votes tab and go through the top rated questions, answers, and threads
  • Check out some of the content from an online programming / development / tech-you-want-to-work-with class, maybe?
  • Locate a copy of a book and see if you can find some content relevant to your purposes.

Some Tools

Personally, I have been using,

  • notion.so, for keeping track of notes, idea pitching, designing and storing UML diagrams, wireframe models, database schemas etc. Basically what I tried with Notion was to keep everything in one place, and so far, it's been working fine for me
  • trello.com, a great tool for keeping track of your project ideas and backlogs in a kanban style fashion
  • Github, obviously with the way that code contribution is done, Github provides an easy way for teams to collab and work on code together via Pull Requests, an Issues
Para todo hay solucion
Photo by Cesar Carlevarino Aragon / Unsplash

Ways To Find Ideas, A Summary

Projects are amazing and quite fun, to be honest, but finding a proper direction, aim, and desire with what you want to make is something else entirely and that deserves praise on its own.

I would say, make mistakes, learn from them, and just keep improving. There is literally no other way than through trial and error itself.

Some Tips To Help Along The Way

Some tips from me,

  • Do not pick ideas that are interesting in nature, they might even help you grow, but really just consider the time constraint. Getting a finished product should be the highest priority.
  • There is nothing wrong with picking ideas that have been done and dusted ( management systems ). For tried and tested ideas, I think the focus should be more on what you could add to an already made idea such that it has its own value, or something that could prove to be challenging, but worth it. It's really your call
  • Be sure to ask for help. Stack Overflow, Reddit, examples from Github etc. It could be that the problems that you can run into have already been solved by someone else. The chances are usually high

Before You Go!

That's all! Thank you for reading through this article. Really hoped you liked it. Do let me know if you would like to see a different kind of structure than the one I went with here, or is there some idea that I should expanded on more. That's pretty much it.

Saif Ul Islam

Undergrad @ FAST NUCES | Upcoming SWE

Great! You've successfully subscribed.
Great! Next, complete checkout for full access.
Welcome back! You've successfully signed in.
Success! Your account is fully activated, you now have access to all content.