I often say that one of the best ways to learn programming is to learn by doing, i.e. creating your own applications. I get a lot of questions asking me to define what applications you can create to improve your skills and to show off such an application in your portfolio before a job interview. In this article, I will present you with 10 examples of applications, along with a short description, that you can create.
Most of the ideas I'm about to present to you can be implemented as a web, desktop or mobile application, it doesn't matter. It's just worth emphasizing that your application should be written in the appropriate framework. If you want to become a desktop application programmer, create a desktop application in C# in Windows Forms or WPF. If you want to become a web application programmer, I recommend creating an application in C# in ASP.NET MVC or ASP.NET Core.
Additionally, it's worth implementing the functionalities that you already know, then you can already show the recruiter your skills. On the other hand, it's also worth writing applications that will develop your skills. If you can't implement a functionality, try to read up, look for information on the topic and solve the problem. In this way, by creating new applications or adding new functionalities, you will learn new areas of a given technology that you haven't known before. Also, remember to always stick to good practices and programming patterns when creating such applications.
I would like to divide the ideas that I'm going to present into 3 types.
1. Your Hobby
The first type are applications that you yourself may need, which will help you in your daily work. They will automate some of your work.
The first idea. There will be no specifics here yet. Think for a moment if there is an application that can be useful to you on a daily basis, one that solves some of your daily problems. It helps to automate some of your work or maybe it will be related to your hobby. Writing such an application can be an additional motivation for you and you will certainly be more willing to develop it. Think calmly if there is such an application. If nothing comes to your mind here yet, I invite you to more specific ideas.
2. Blog
The second type of applications that you can create are general ideas that are worth having in your CV, and at the same time you can also boast about your knowledge, familiarity with various frameworks.
You can try to write a platform for a blog. I myself once wrote a platform for my blog codewithkazik.com, which I use to this day. Basic functionalities that such an application can have:
- Possibility of logging in by the administrator, who can add new articles to the blog, as well as manage them, i.e. edit and delete them.
- Browsing articles by users.
- Filtering articles.
- Pagination.
- Possibility of adding tags, categories to each article.
- Possibility of adding comments to each article.
- A form with the possibility of sending an e-mail to the administrator.
- Handling all errors and logging information about possible errors in the application, if they appear.
Of course, you don't have to implement all of these features, if you don't have enough time, try to implement at least a few points.
3. Online Store
Another idea is a regular online store. There are also many possibilities here:
- It's worth making a nice template.
- Administrator panel that lets you manage the entire store.
- Product management.
- Banner management.
- Cart.
- Sending emails.
- Integration with other applications, e.g. for issuing invoices, shipping ordered goods, etc.
- Marking products as promotions.
- Information about product availability.
- The ability to select the appropriate configuration, i.e. size, color, etc. for products.
- Administrator purchase notifications.
- Product search engine.
As before, depending on how much time you want to spend on implementation, you will add as many functionalities.
4. TODO List
A very popular application, i.e. a regular TODO list that allows you to manage your planned tasks. Here too, you can introduce various functions, each of which will develop your skills. So, for example, you can:
- Display a list of tasks.
- Display a list of completed tasks.
- Display a list of tasks after the due date.
- Editing.
- Adding.
- Deleting tasks.
- Marking tasks as completed.
- Sending email reminders.
- Sending email reminders.
- Sending text messages.
- Filtering data.
- Validating data.
- Supporting views on mobile devices.
- Adding tasks to appropriate categories.
Of course, you can write such an application as a web, mobile or desktop application.
5. Forum
Another idea is a regular forum, which are not so popular now, but creating such an application for a portfolio can be a good idea. You can also create here:
- User management (registration, login, profile, private messages, roles).
- Administration panel.
- Main view, which will first display the relevant sections, and after entering the section, all topics created in it.
- Ability to add new topics.
- Ability to reply to topics.
- Adding reputation points for users for good answers.
- Searching for topics, filtering, pagination.
- Tracking selected topics.
- Notifications about new posts in topics.
- Tagging topics.
- Displaying users who are online.
6. My Finances
Managing your finances, or even your company's finances.
- List of all purchases, earnings.
- Display of statistics, charts.
- Division into categories, so that everything is very clear.
- Calculation of savings.
- Reminders of various payments.
7. Bookstore Management
The next idea is Bookstore. That is, some simple application that can be used in a bookstore. Here you can implement, among other things:
- Ability to manage clients.
- Ability to manage books.
- Ability to assign books to clients.
- Validation.
- Sending some reminders.
- Maybe even adding some fees when someone holds a book for too long.
You need to think about what other functions might be useful, there could be quite a few.
8. Invoice Management
Another idea is an invoice management app, or even some mini accounting. You can start with a regular app just for invoice management. Here too, you have a lot of things to implement:
- User login.
- Viewing/editing invoices.
- Creating new invoices.
- Creating credit memos.
- Managing customers.
- Managing products.
- Marking paid invoices.
- Sending payment notifications.
- Filtering, pagination.
- Validation.
9. Internet Portal (e.g. Facebook)
The third type of application that you can create is a copy of an application that already exists. Creating such an application has one big advantage. When creating it, you don't have to come up with new functionalities by force, you just have to create everything as it already is in the original application, or simply similarly.
Here, of course, a good example would be e.g. Facebook.
- Login.
- Manage your profile.
- Add new posts.
- Add friends.
- Follow friends' posts.
- View posts on your timeline.
- Add likes to a post.
- View users' profiles.
- Private messages.
There are many features you can add, of course you don't have to recreate the entire portal, just implement a few basic features.
10. Messenger (e.g. Slack)
The tenth idea is a regular messenger, thanks to which users can exchange messages. Something similar to slack, mattermost, or gadu-gadu in the past. It will be the same here:
- User registration/login.
- Nice user interface for sending messages.
- Adding friends.
- Creating new rooms.
- Handling sending messages.
- Notifications about new messages.
Remember that depending on your knowledge, you can freely develop such applications. It is worth creating a working application, a working project that you can constantly develop, to start with. Over time, you can add new functionalities.
Bonus
Remember that learning programming is not always a full-time job. If you have an idea for an application, you can just as well start writing such an application yourself and then try to sell it. This is a path that I also recommend to participants of my Become a .NET Programmer training. Although I admit that selling such an application also requires other skills, but that is a topic for another article.
SUMMARY
Those are so many examples of applications that you can create to start with. If you are interested in such a topic, let me know in the comments, then I will be happy to share more ideas with you.
If you liked this article, be sure to join my community. Sign up for the free newsletter, where every week I share valuable materials, especially regarding C# and the .NET platform (free subscription - newsletter).