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.

Are you expected to learn frameworks in your freetime?

at work

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.