How to create an awesome coding portfolio and why its useful

Do you want to learn how to build a kickass coding portfolio? In this post you will get an overview on how to setup a github account and host your first projects their.

Why every developer should have an coding portfolio?

  • A portfolio is a way for developers to showcase their work to others, you dont want to miss out on that opportunity.
  • If you are looking for a job a portfolio is better than any resume you can write. As they say a picture speaks more than 1000 words. Check out this post to see what kind of projects recruiters are looking for in a portfolio: http://junior-dev.com/2019/04/18/what-kind-of-projects-do-employers-want-to-see-on-a-portfolio
  • A good portfolio will help you build connections and freelancing opportunities (if you choose so)

Why create an portfolio on github?

Github is the most popular hosting site for git repositories. Some of the biggest companies in the world use github. Having a portfolio on github will give you the chance to show your portfolio to millions of other developers. Naturally that makes it the best place to host your projects their. It also shows recruiters that you are familiar with version control systems.

Lets get started

If you dont already have an gitub account go to github.com and create one.

After that go to https://github.com/settings/profile to start editing your profile information.

Your Github Profile should give a good first impression of you. For that you need to have a professional profile picture and a short bio about yourself.

Your bio should give a short overview of your interessts and skills. If you have a personal website fill out the URL field.

Your code should live on github

If you dont have your projects on github already you should host your code their. Create a new repository or import a repository. If you are not familiar with git you can learn the basics of git here: https://git-scm.com/book/en/v1/Getting-Started-Git-Basics

Every repository should have a Readme

A good readme should include:

  • A short paragraph about the project itself
  • Necessary prerequisites
  • A guide on how to setup the dev environment
  • How to run tests
  • How to deploy/start the application

You can find a good template here: https://gist.github.com/PurpleBooth/109311bb0361f32d87a2

Want to read more? Join the newsletter for weekly updates

What kind of projects, do employers want to see on a portfolio?

Recently there was a popular question on /r/java where someone asked

I really enjoyed the question and the answers, as there where a lot of insights, so i summarized the most common answers in this blog post.

Extracurricular activities


I want to see evidence of extracurricular activities. Back in the day, before it was popular, Google looked for Python experience in their Java developers. Since it wasn’t popular yet, having experience with Python suggested someone who loved coding enough to teach themselves to do it on their own time.
I can teach you how to do a project. I can’t teach you how to solve problems and learn technologies you haven’t seen before.

/u/best_of_badgers

For a self thought developers building a portfolio is a must imho as its the best way to show that you can do the job, but also for students its important to have a portfolio of apps or OSS that you have worked on.

High level technologies

For me, I’m just looking at the high level technologies you have worked with and stuff you are interested in. If you pique my interest I’ll do an intro phone call to get a better picture of who you are and what you’ve worked on.

/u/thecuseisloose

It´s important to put the technologies you have worked with on your resume. You could impress employers if you have worked with new or interessting technologies. If you have experience in the tech stack the use at the companie this will be a huge plus.

Evidence of being able to learn fast, and be autonomous

I’m mostly looking for evidence of being able to learn fast, and be autonomous, e.g. teach the job for themselves in period that isn’t like several years

/u/audioen

Smaller companies tend to have less ressources for training new deployers, so the ability to learn fast and (mostly) autonomous is highly valued. Of course this differs from company to company.

Something that builds and is “deployable”.


Something that builds and is “deployable”.
I want to be able to do a git clone and then mvn package and docker-compose up. It doesn’t have to be great, but I want to see the application run.

/u/shagieIsMe

Having finished or a least runable apps in your portfolio makes it even more compelling for employers. This will be even better if you have a README explaining how to package and run the application.

Having some projects better than having none.


Having some projects better than having none.
Having projects that I can investigate — on github, or on some website of their own — is better than a line on a resume. “Investigate” means that I can go read the docs, play with the app, look at the code, or anything else.

/u/mikeblas

Anything is always better than something. This is also true for portfolios, put everything on there even if its unfinished.

Projects that are used by “customers”

Having projects that have customers is best. If you make a program to catalog your VHS tapes, that’s great. If you’ve made a program to catalog your VHS tapes and everyone at the anime club loves it and uses it, and you’re listening to your customers and adding features, then that’s awesome. Note that “having customers” doesn’t necessarily mean “making money”.

/u/mikeblas

/u/mikeblas makes a very good point again. Having a project that is used by real people is really valuable and will help you to stand out of a crowd of applicants.

Thanks to all the posters of this /r/java thread for sharing their wisdom with us. I hope you enjoyed this summary.

If you liked this post you may also want to check out: http://junior-dev.com/2019/03/28/how-to-prepare-for-an-programming-job-interview/

What qualities should a senior developer have?

Most junior-developers want to become experienced senior developers but how does one become a senior developer? What does one even need to know to become a senior developer. In most companies you will become a senior developer after working there for X years. But what qualities should a good senior developer have?

Technical skills are secondary

Maybe you believe that a senior developer must have godlike technical abilities, that he or she knows every framework out there. The truth is technical skills are important but the soft skills are more important.

A senior java developer will still be a senior developer when he has to work with a new language.


A senior developer teaches others

A good senior developer will teach others and make the whole team better. He will give guidance and direction when things get unclear. A good senior developer therefore has to be also a good teacher.

A senior developer knows what he dont knows

A good senior developer knows that he doesnt know everything but he is able to identify his knowledge gaps and do the necessary research to fill the gaps. He is able to better estimate projects as he is able to see common pitfalls and hurdles.

A senior developer can communicate efficently

A good senior developer can communicate efficently with clients and other developers. He is able to gather requirements from customers and able to explain technical concepts to non-technical people.

A senior developer has worked in lots of different projects

A good senior developer has worked in lots of different projects and therefore gained a lot of experience with a varity of frameworks, languages, environments and clients.

It takes time

Senior developers are made and not born, so it takes time to aquire the necessary skills for becoming a senior developer.

But you are not alone, join the newsletter for weekly insights on how to become a better developer.

How to not get overwhelmed while learning web development

Are you overwhelmed by trying to learn everything there is to know about web development?

Web development is a broad field with many technologies and i can be quite overwhelming to learn if you dont start learning with a specific plan. The tips below will help you to get a structured overview about web development.

Cover the basics HTML/CSS

Before you dive deep into the web develpoment hole its a good idea to learn the basics of HTML and CSS. Make sure that you are able to build simple static HTML pages before you learn any fancy framework.

Learn about Frontend development

Frontend develpoment mostly means Javascript so learn the basics of javascript after you have mastered HTML and CSS. Once you are familar with javascript you can move on to learn about frameworks like React or Angular.

Learn about Backend development

Once you are familar with the frontend side of the application you can start learning about the backend. NodeJS lets you build a backend in pure javascript but most backend functionallity is written in PHP / Java or another language.

Learning by doing

Its important to practice by building projects. Its important that you start small and iterate so that you actually will finish your project. I wrote an entire blog post about how to choose a great project: http://junior-dev.com/2019/04/01/how-to-choose-the-perfect-side-project/

Learn one technology at a time

Dont try to learning everything at once. If you are new to programming stick with one programming language.

A structured learning path to frontend development

The best way to learn front-end development for free is: freecodecamp.com. It provides a structured course from zero to full-stack development.


Formal Education or self thought developer?

You want to become a developer but cant decide if you should pursue a computer science degree or teach yourself?

Lets talk about the pros and cons of each option.

Formal Education

Advantages

A good formal education will teach you everything there is to know. You will follow a highly efficient curriculum. Compared to self though developers you will have smaller “knowledge gaps”.

A degree will greatly improve your chances on the job market

You have a group of peers to work with and help each other out.

Disadvantages

To study full-time for three to four years can be a big financial burden.

Studying is very time consuming. You have to follow a fixed curriculum and cant work at your own pace.

It takes a lot of time and depending on your situation you maybe are not able to finish your degree.

Become a self thought developer

Advantages

You can study on your own schedule at your own pace.

Depending on your goals you can continue to work while studying on nights and weekends.

You can study the things that interesst you.

Beeing a self-thought developer shows great passion and work-ethic to a potential employer.

You can design your own curriculum.

There are a lot of free resources out there that can teach you the fundamentals.

Disadvantages

Without a degree its harder to get a job. You have to do mork to convince employers that you are a good hire.

Becoming a self thought developer might be a very lonley challenge, try to find mentors or peers which whom you can study together.

When designing your own curriculum the chance of “knowledge gaps” might be bigger as you dont know what you dont know.

Conclusion

Pursuing formal education is a safer choice in most cases then trying to get a job as a self thought developer. But often personal situations or circumstances wont allow the time and financial commitment of a three to four year degree, in this cases going self-thought is the better option.

After all its a highly personal choice that has to be choosen wisely.

How to handle imposter syndrome as a junior-developer

Hello, a common question that pops-up all the time is “how to handle imposter syndrome”. Especially as junior-developer you might feel overhelmed at times. Let me tell you that this feeling is completley normal and everyone feels the same.

Software Engineering is a difficult field that moves at a fast pace. Nobody can know everything there is to know about development. Its plain impossible.

Even experienced developers are confronted with situations where they have to you a new paradigm or framework. Its your job to learn about these unknowns.

Feeling imposter syndrome therefore means growing your skills.

Just in time learning is real

Learning stuff as you go is a real and common practice in software enginneering. Is not by accident that stackoverflow is the most important website for developers of all kind. Just in time learning is a valuable skill own its own that every software developer needs to fullfill his job.

Accept that you will never know everything

Accepting that you will never know everything there is to know can be encouraging. Stay humble and accept that you will forever be a trainee in the field of software engineering.

It gets better with experience

Even tho imposter syndrome never really gets a way, it will get better as you gain more experienced and are more comfortable in your situation. So dont be discouraged, there is a small light at the end of the darkness that is imposter syndrome.

at work

Are you expected to learn frameworks in your freetime?

So i recently came accross a question that asked:

Are you expected to learn frameworks in your freetime?


Well technology moves forward at a very fast pace, and it can be hard to keep up. The mayority of your learnings should happen during work hours but unless you work 70 hour weeks you probably wont keep up with the latest trends.

That said not every company uses the latest cutting edge technologies, my current customer still uses java7 for example, so not every company has the pressure to keep up with the latest technologies.

I personaly stay informed about the latest trends via weekly development newsletters, one i can recommend is: https://programmingdigest.net/

Everyone has to decide for himself or herself to which extend he or she wants to sacrifice her freetime to keep up with the latest frameworks.

Personally i think as software professional you have to be curious and spend some of your freetime improving your skills.

If you want to become a better developer you might want to consider joining our newsletter for helpful weekly emails about software engineering topics.

How to choose the perfect side project?

You want to improve your coding skills but you cant decide which project you should work on in your free-time? Choosing the perfect side-project depends on many different factors. Below are some of the most important factos when choosing a side project.

Learn something new

You want to choose a project that puts you on the edge of your current skill level. If you choose a to difficult project you will abandon it, its therefore essential to choose a project with the right difficulty level. Not to hard but not to easy.

Fits your interrests

Choose a project that fits your interessts or that will help you be more efficient in your personal life. This increases your motivation to work on your side project, making it more likely to be finished.

Know your available time

The project should be managable in scope, you want to choose a project that you are able to finish in the time frame you have available. Finished projects look better on your resume then unfinished ones. If you want to shoulder a project thats too big for you, it will fail.

Start small and iterate

The best way to build a project is to start small and then iterate on it. Build a basic version first and then either improve it in small iterations or choose your next project to work on.


How to prepare for an programming job interview

Hello, today we will talk about how to best prepare for an programming job interview. A job interview can be a nerv wracking thing but you can prepare for it.

With the tips below you will be ready to face your first job interview.

Prepare for the whiteboard

Its very likely, that you will have to solve code problems during your interview, either on a whiteboard or in some other forms. If you are not used to it this can be very hard. Luckily there are many plattforms out there, that let you solve programming challenges. Some of them are:

Solving daily problems will help you a lot to prepare for whiteboard interviews.

Build an portfolio

A portfolio can be a collection of github repositories or of workings apps that you buildt. The important part here is that an employer can see that you are highly commited to becomming a programmer.

Your portfolio is the best way to show an employer that you are the perfect fit for them.

Know your strengths and weeknesses

Its crucial that you know your strengths and weeknesses. Be honest during your interview, but dont sell yourself to short.

Its ok to not know everything

If you dont know about a technology, say that you have never worked with it but that you are commited to learning.

Handle rejection

Not every interview will go well, you will have to be persistent and play a numbers game. Every interview will teach you something, use the lessons you learned for the next interview.

Use your network

Dont be afraid to use your network, tell everyone you know that you are looking for a programming job. Most people will be glad to help you out.

Getting your first job as a programmer is hard but software developers are in high demand so the best time to apply for jobs is now. The job market is very much in your favour.

If you have any questions hit me an email at: martin@junior-dev.com


The different types of debugging

Hello, today we will talk about debugging.

What is debugging?

Debugging is the process of finding and resolving defects or problems within a computer program that prevent correct operation of computer software or a system.

So debugging means to find and fix errors, there are various ways to do this.

  • Print output on the screen
  • Create Unit tests
  • Create Integration tests
  • Debug using a debugger

So what are the different types of debugging?

There are many different types of debugging, below are some of the most common

Print output to the screen
The easiest way is to print the output of expressions or the state of variables to the console using
System.out.print();

Create Unit tests
Unit tests assert the correct function of the smallest piece of code you have e.g. methods
There are various frameworks out there, most popular junit.

Create Integration tests
While Unit tests, verify only methods, an Integration Test asserts an complete Module of code e.g. a payment module. Typically Integration Tests take longer to complete as they are bigger and often access a database.

Use a Debugger
This is what most people have in mind when they hear debugging. Using a debugger is a skill on its own. If you use IntelliJ check out the debugging cheat sheet