Hi Coder
I know this is a normal feeling, but after graduating from university, I started to reflect on the 4-year training and thought that I didn't accomplish as much as I would have wanted to. Even though [some] universities do a great job at training students as engineers, I have to admit that many of them do little to no training on how to self-promote our work. In this article, I want to share with you what I would've done differently if I had to start over again with my software engineering undergrad.
As a disclaimer, I want to mention that by no means this is extensive research, this is, in fact, based on my experience as a software engineer. I learned the hard way that I needed to put out my work and I want you to be confident enough with your skillset and learn more by building, sharing, and networking.
Without further ado, let's dive into the things I wish I would've done in university to get more confident with my skills, promote my work, and eventually make it easier to land a job.
1. Build your own website
I know this sounds overrated, but doing so allows you to have a little place online that's YOURS, will not fall into obscurity and only you decide how it looks. I still remember when the social platform Hi5 was popular in Latin America. Everybody would personalize their profile, make it cute, would spend countless hours working on it, but guess what? other platforms took over and hi5 was forgotten. It may sound difficult to think about Instagram going out of business or becoming unpopular, but that's what happens with most platforms. With this in mind, build your own website, make it as unique as you want, or get inspired by other people's style but BUILD it.
You may use Wix, Webflow, WordPress, etc, to build your website and that's totally valid because they allow you to put it together much faster. And if you don't know what style to go for, they offer different templates that you can use. I'd suggest you build it from scratch using libraries like Bootstrap because it is much cheaper and also allows you to explore different technologies. The sky is the limit when it comes to coding your own projects. Whether you want to go for the prebuilt website or coding it from scratch, it's up to you, they are both great ideas.
I've spent many hours checking out amazing websites. Here are some of my favorites, I hope they encourage you to get started now:
They are all unique in different ways, they showcase the developer's style. You have a style too, and you can create a website that reflects your personality and interests even if you get inspired by others. In his book "Show Your Work" Austin Kleon says:
"If you are really interested in sharing your work and expressing yourself, nothing beats owning your own space online, a place that you control, a place that no one can take away from you"
2. Work tirelessly on projects
The million-dollar question might be, what should you build? The million-dollar answer is, ANYTHING. I've heard and read many times that in order to become a good developer, one has to build projects, and that's true. But what people often forget is that nothing comes from nothing, you need to copy others in order to get new ideas. You will never build the program that many people will want to use unless you start by building a typical to-do list app.
That being said if you have any specific project in mind that you want to build for yourself, do it! Go for it, don't let your inner saboteur tell you that is not useful and that nobody will pay attention or hire you, because that is simply not true. I've heard that:
"Quantity has a quality of its own"
And I believe it, you will never know how you good are unless you allow yourself to be bad.
Here's a list of projects that I find creative and challenging. You may build along with the developer and modify the project to add different or better features:
Build what has been created, build what has not been created, build small and big projects. Use different programming languages, get out of your comfort zone, ask for help, get stuck, ask ChatGPT, but build! And share your projects on different platforms (more on this later.)
3. Document your code
You will be surprised to come back to your project after a few months of not writing a single line of code to see how much you've forgotten. Even more so if you are working with a completely different stack or programming language. That's why I highly recommend you to document your code.
def add(a, b):
"""
Add two numbers together.
Args:
a (int): The first number.
b (int): The second number.
Returns:
int: The sum of the two numbers.
"""
return a + b
def add(a, b):
# This function adds two numbers
return a + b
The images from above show well-documented and poorly-documented pieces of code. I hope you can get an idea of why it is better to do it well from the very beginning and not months later, it will make your work as a developer much easier. Along with documenting your code, you can use markdown documentation too. Not only does it look good on your GitHub, but it gives you a more human-like approach to your code and your eyes will be pleased to go through it when needed. Here's an example of markdown documentation that I like; I know GoDot is a professional piece of software (a game engine) and they can afford to have a bunch of people writing beautiful markdowns, but you can create beautiful documentation too.
I also encourage you to read this short article by Victoria Drake on how to write documentation, it is incredibly useful.
4. Get an internship
To make your time in university a lot more interesting and worthwhile, you need to find an internship. Getting a job as a junior developer can be a daunting and time-consuming task. But you will probably have a better outcome if you manage to turn an internship into a job offer.
The process of landing an internship goes beyond the scope of this article, therefore I'll list a number of websites that you can check out to learn more about internships and jobs:
Keep in mind that your university may have a list of companies that already employed your fellow students, student employment, career fairs, etc. Take advantage of that! Apply, and don't be afraid of being rejected, once you land that internship, it will be much easier to land others. But you need to actively look for it because, unfortunately, it will not find for you.
5. Show your work!
Some productivity gurus suggest staying out of social media, or at least avoiding it as much as possible. I'd say that there's value in joining communities, even if it's online, to show your work. If you can manage to join an in-person community where you can meet developers or tech people to collaborate with them, that'd be fantastic. But if you can't, I'd highly recommend joining X (Twitter), LinkedIn and/or Discord communities. People like showing what they're succeeding in and some might be willing to help you learn how to create content for different platforms. Conversely, you can watch them doing it, plus reading books, and articles and listen to podcasts on how to build in public.
Austin Kleon is better at putting together encouraging words than me,
"Imagine if your next boss didn't have to read your resume because he already reads your blog. Imagine being a student and getting your first gig based on a school project you posted online"
In a world where social media has democratized who and what gets to be promoted, you should try to harness it as much as you can. Put out work, you are better than you think, furthermore, you will get better the more you do it. Let me say it again, you will never be good unless allow yourself to be bad.
It's better to be "bad" at coding and receive feedback than to never build anything out of fear of being judged. If you struggle to muster the courage, consider visiting a museum and appreciating artwork. Pablo Picasso honed his talent through building, painting, and creating. You'll be astonished by the number of things he produced throughout his lifetime. He was prolific.
Don't let fear think that you are not good at something, you will get good at it, so go build now, show your progress and the final result!
Bonus - Attend hackathons, tech events, and meetups
Attending events is a great way to meet new people and see what others are building. Recently, the Free and Open Source Developers' European Meeting, or FOSDEM took place in Brussels. This is a free event for software developers to meet, collaborate, share ideas, etc. People from all over the world gather there and the best part is that there's no need to register to join.
There are a lot of these events, even in small cities. Hackathons will allow you to meet experienced people who are working on interesting projects, learn about certain industries' needs, network, etc. Even if you just learned how to write your first "Hello world" there'll be people there to encourage you to keep on working. Being exposed to a team or company that does what you want to do is priceless; people like talking, and people like giving pieces of advice, if you can be there to absorb good information from the best, do it.
In his book "How to Learn to Code and Get a Developer Job", the founder of FreeCodeCamp, Quincy Larson said that one of the best ways to build your reputation as a developer is to attend hackathons.
Hackathons can lead to many things: befriending interesting people, learning more about challenging projects, and potentially getting a job. So, with this in mind, I bet you are googling the next hackathon near you now, right?
Final thoughts
My goal is to help you avoid the mistakes I made while in university. You may perceive 3 or 4 years of training as a long time, but in reality, it passes by super fast. You will surely learn a lot from your professors, fellow students, and other sources. However, the most effective way to test your knowledge and pave the way for a successful career during and after university is to start building ambitious, well-documented coding projects NOW.
Coding doesn't have to be a lonely journey. Engage with communities, find accountability partners, share your work, and start building. By doing it now, you'll be ahead of the game later—trust me.