Sonntag, 28. Juni 2020

2020 Germany. What company's demand in theirs job description from candidates for Java developer position

Hi folks!

Today i want to present a interesting report about what German company’s looking for in form of java technology knowledge from skilled and professional workers.

Before I present data let me describe how exactly I gathered this data and how many companies were analyzed by me.

For this research I used data from a largest job search engine German website.

As input were provided job title of Java developer, each job description consist the job requirements those were extracted and counted  as one company to many languages, 

the numbers represent the amount of company’s which put in the job description the requirements of knowing x,y,z particular language and framework.

How many company’s I looked for:  around 200 , why not to give concrete number , well I spent 2 days gathering and I am not sure that it was exactly 200 its way to much as I expected to see.
Lets see the diagramm!

Now to data itself, as always Java is a king and on the top, but C# and C++ are in demand too, strangely enough I saw more and more the requirements for knowing python together with java and other languages, how crazy the projects must be  if  the requirement for java guy must be good in c++ and python, this actually full stack developer with xxx salary (100K Euro bare minimum for skilled developer), some company should have balanced amount of workers the stretch and expectation way to large , then its humanly possible.

Framework wise, Spring Boot is a king 

some people would disagree, but as I much love Java EE and Jakarta its obvious truth in 2020 many companies look and expect from Java developer the knowledge of Spring Boot. I saw only one German company which actually demanded the knowledge of Jakarta Enterprise, which was one insurance company.

About Jakarta Enterprise in my opinion it’s in flux, the Jakarta Enterprise 8 is compatible to Java EE 8, but any new version there is huge difference, some folks in Jakarta developer community want to drop EJB, and I understand why, but this would bring for some EJB heavy company’s which depend on EJB and what I saw in job descriptions has given me the outlook that in the near future they would get into problems, because switching to new Jakarta would be painfully difficult  and costly to them, my advice to those company’s start to think now , before your applications would not be manageable and plan on big refactoring to Spring Boot or to new Jakarta Enterprise.

About GUI: Swing is alive and kicking, but company’s should think about deprecating and moving on to JavaFX, the reason behind such advice: Oracle officially plan to support Swing until September 2026 , here read the Oracle roadmap 
I just need to quote Oracle:
“Swing and AWT will continue to be supported on Java SE 8 through at least
March 2025, and on Java SE 11 (18.9 LTS) through at least September 2026”

Further Insights SQL and JPA and Hibernate are still in common use, using ORM abstraction layer is good thing, but I saw actually in one description that one company seeks candidates with knowledge of JDBC and this make me sad, JDBC is great , but really in 2020 we should have trust in ORMs.

What about cloud?

It seems, the Google Kubernetes and Docker are default nowadays, some cloud vendors probably would disagree with me, but you can’t deny the fact that many company’s who have applications in cloud use Kubernetes and Docker and its very important to them to have highly educated people, which can use such technologies on daily basis.
Positive note: Junit is de facto standard and many, many ,many companies demand clean and test driven development, this is very good and I hope they know how to write test, testing software before and after going into production still very crucial.

What about IDE?
Haha, Eclipse is on top, oh sure Netbeans and Intelij are in demand too, and in my opinion you should know all those 3 IDE’s. What I personally prefer? Well I like the Eclipse, but it has strong roots from my university experience and your experience maybe different to my.

What about Java Script?

This is actually most disappointment fact to me , way to much companies use Angular and I know Angular is Google product, but really Angular in 2020 , does your company burn so much work time and still like to have those curves where developer for weeks stuck and struggle through npm and typescript madness? Come on switch to VueJS, were common sense and testability and overall better quality.

Speaking of fronted (JSF not dead!):
JSF is not dead, there many company’s which demand knowledge of this JEE framework, I like JSF because of consistency of the technology , sure this technology quite old and demand to have good and powerful server for serverside rendering. JSF done right is a beauty, but in many cases people who switched from JSP produce very unclean code which is hard to maintain or even to test, still this is what market demand and I am looking into JSF once again, but only on Jakarta implementation.

What about SQL and databases ?:
Many companies demand knowledge of Oracle or Postgre or Microsoft SQL and tiny minority of MySQL.
Personally I try to stay away from databases, for me its just a container where I read and write my data, I don’t want to spent well to much time of design my db or even build around a application for the database , my solution have many options and its include different types of storage inmemory, harddrive, database and other storage devices ;)

Version control?
Git its obvious choice of many companies, but some still use SVN and subversion, come on people start moving into git and make archive from old svn and subversion.


Jenkins, Kibana, Kafka, Elastic Search all on the list but there I see big development not quantifiable data applicable. Jenkins is de facto standard for building your software in CI/CD pipeline, but sometimes the effort of keeping its alive way to costly and don’t make any big sense to me , but its good to know about options. Other stuff as usual, there way to many tools to make any conclusive decisions, each company prefer different sets of tools and i think to understand who is winner well the market still green ask me exactly in 5 years the same questions again and I hope to give you better answer.

Any functional languages?

Skala , but the demand in what I saw about functional is way to low , nobody write in the description of knowledge of Clojure which sad (because I planed to learn Clojure and now I need to change my plans, i probably learn Python instead :) )

What about SAP and Hybris?

Well I am not a SAP specialist, but I saw some demand on Hybris and well I don’t think that’s is profitable invest your time in learning Hybris , because the mentality of SAP as company and vendor locking, read more here about Hybris , in my opinion framework should make your efficient in your business and not let you dependent on them , but as always your experience can be  very different from my. If you seek a easy customizable framework maybe you should try Oracle Apex which actually allow you easy to extend your business processes.
On this note I can say SAP has own and unique universe and if you one day get into you probably wouldn’t be able to get out, so be caution you was warned ;)
What type of development type German company’s prefer?

Its good to know , that many companies use Scrum or Kanban, but still Waterfall and V models exist!
In my opinion its all about humans, if humans are not productive in any of systems, you as company should work with humans and strive for the best optimum solution for humans and not for company, you will be amazed how then the efficiency will improve if people work in the best setup for them.

Something unknown topics?
Well as usual there more data to analyze , like Salesforce usage and knowing  of  zephyr, power bi, Prometheus, sonarqube, bamboo, dynamodb, liquibase and etc.

Summary: Spending time on market research for small portion of data which I was able to gather give me quite interesting view on current “market” and I hope you will too see the change, we definitely in java world develop less and less new systems and most times will work on old and legacy systems and now and them refactor them into small microservices (only when it make sense in business terms!) , cloud services really in demand and many companies probably plan to move theirs datacenters into cloud , but word of caution your data is valuable make sure that you have something on site where you assets are protected and backed up.
The last part is challenge for developers, we moving way to fast as industry JS especially is crazy in lots of different JS frameworks , but sticking to Angular is no way a good decision, many devs will disagree with me and that’s ok I saw the data , but the efficiency in Angular projects is way to low, many Angular and Java Script devs stuck at some point of development , they cut corners and do hacky stuff, which is not proper solution and I predict we as industry feel impact in the next 5 years  of badly designed and bad maintained Angular based solutions!

Final thought about the market state:  writing tests is in broad usage and for those who dont write tests you should  explain to your managers, that without test’s nothing will work properly and business will see huge impact of defunct system which eventually will result in bad financial situation for the company. 

I finishing this blog on positive side we Java developers already understood the problem and we write lots and lots of test to be able to improve quality of code on daily basis, java script developers can and must learn from us alot and we should teach them the proper software engineering skills , so that even our fronted ui will be stable as the backend.

Samstag, 20. Juni 2020

My journey through design patterns in Java!

As Uncle Bob says, if you call yourself a professional programmer you should "educate yourself and teach others".

I add only to this statement following: so that new generation of developers would be aware of advantages and disadvantages and would be able to make rational decisions for their software projects.

What book i used for my design patterns journey:

This book definitely is "easy ride", even code which is provided by that book is easy to read and to understand!  (I speak from view of  seasoned developer with many years o experience)

So i refreshed my knowledge about design patterns in Java , what about teaching other people ?

Here you have completely  free workshop on youtube where i explain and show in code the solutions for each of the design patterns explained in the book!

If you know c++  thats cool and great!!
Do you want to get even deeper understanding, then i recommend to read this book !

Where i go from here?

Well now, i  am clearly understand most common design patterns,

Here is my list of actual stuff in making:

1. I have one big project to implement which is a game in Unity3D 
2. Help my clients with their projects 
3. And i 100 % definitely  try to read another great book about Java, which is Effective Java by Joshua Bloch !
4. Create another youtube series: "Why the whiteboard tech interviews should be deprecated and damaging the industry overall" and provide my own solutions to "Cracking the coding interview" book

In future youtube series i would tell the world that:

1) Writing programming solutions on whiteboard is stupid and not applicable in real software engineering world, yes we use whiteboard but not for the writing code rather most time for explaining concepts and ideas, only "stupid" tech leads or crazy developers do that and only because that they brain full of "garbage" and to show off, nobody take them seriously or understand well, but they most times likely responsible for project delays and bad code......

2) Your company is not google!!
Repeat after me: Your company is not GOOGLE! So stop to pretend to be a one!

3) Some senior developers have no clue what people learn in universities when they study computer science or related to it degrees, they claim university fresher should know that and that, but in reality many universities are far behind the industry in some cases like 10 years behind the current industry standards! I know it from the first hand, because i study computer science (part time)

4) Nowadays we have companies and people who write "stupid books" about what a good candidate should know about the programming language and the frameworks, why i call it stupid ?

Because in university , there no time to learn so much amount of knowledge what most software company wants!
Those guides books like the book of author Gayle Laakmann Mcdowell will be deprecated, candidates who reading such books just losing theirs valuable time instead of doing some real work of study and implementing the knowledge into the field !

So we developers with experience should refrain from such bad practices and do more homework ! I even think of putting a clear oath that i as programmer never use whiteboard to interview the candidate for the assessment of his or her knowledge and i would assets only on actual learning skill of the candidate trough pair programming interview.

Some of the developers maybe asking themselves, we have such big shortage of developers how we can close the gap without loosing the productivity? Each new developer must be introduced to the project and it takes far too long to do that.

I know the answer:  provide good online tutorials , during the covid19 crisis you have lots a free time and by doing that you will teach many, many  people and gain respect from your fellow developers and don't be afraid if you do mistakes, mistakes are natural with all what we as humans do.

When you actually interview people do it in pair programming style, give them a task and watch how they solve it and help them if they stuck, if a candidate can't write good quality code, then its obvious that such candidate would  be bad match for company , but if you see that candidate quick learner and that he just need small push ups to reach the goal, then you have the right candidate and only then and here i strongly repeat myself and only then,  allow HR to do a personality and cultural fit tests.
I tried this approach and its 100% perfect that such approach of hiring candidates produce great results!

Ok, enough ranting ;)
We should think positively and do anything in our power to close the developers shortage gap, i personally think and plan to give lectures about software industry in universities around 2025 , so the students of the future would basically started to learn about the industry sooner that it was in the past and i encourage any well experienced developer to do that ;)


Blog readers favorites