Slide 1

Slide 1 text

How to find and qualify good Java developers Wallace Espindola Senior Java Developer & IT Architect

Slide 2

Slide 2 text

Main learning takeaways 1) Discover the Java market and technologies; 2) Step-by-step on how to find and qualify devs; 3) Where and how to search for devs.

Slide 3

Slide 3 text

● Dev market movement and numbers ● Java history and timeline ● What is (not) Java and related tech ● Frameworks front and back end ● Check and evaluate CVs ● Legacy x trending techs ● Junior x Mid x Senior ● Practical interview questions ● Tech profiles and possibilities ● Questions & answers Schedule

Slide 4

Slide 4 text

DISCLAIMER All of these slides are based on personal experiences over my 17 years’ career, developer’s interview experiences, personal opinions and some statistics.

Slide 5

Slide 5 text

About me ● Brazilian from Rio de Janeiro ● Electrical & SW Engineer, 17 years of career in IT ● Experiences in many industries: Government, Oil&Gas, Banking, Telecom, Defense, Education, BioTech. ● Expat in Belgium since early 2017 ● Profile: SW development & IT Architecture ● Stack: Back-end / Java / Web

Slide 6

Slide 6 text

High demand: So true nowadays! Why? Reason:

Slide 7

Slide 7 text

Some statistics: Java Top #3 language Source: www.githut.com

Slide 8

Slide 8 text

Tiobe: Java language compared Source: www.tiobe.com

Slide 9

Slide 9 text

Java: Among the top most active on GitHub Source: githut.com

Slide 10

Slide 10 text

Stack Overflow statistics Source: stackoverflow.com

Slide 11

Slide 11 text

Difficulties of the market Source: https://www.comptia.org/content/research/it-industry-trends-analysis-2021

Slide 12

Slide 12 text

Interesting Statistics and Insights https://insights.stackoverflow.com/survey/2021 https://www.tiobe.com/tiobe-index/ https://www.thoughtworks.com/radar https://githut.info/ https://madnight.github.io/githut/#/pull_requests/2021/4 https://dzone.com/

Slide 13

Slide 13 text

Java history

Slide 14

Slide 14 text

Huge number of technologies

Slide 15

Slide 15 text

A bit of terminology, too many J… J2SE / JSE (java standard edition) J2EE / JEE / Jakart EE (java web - enterprise edition) J2ME / JME (java mobile edition) JDBC (java database connectivity) JVM (java virtual machine) JDK / OpenJDK (Java Development Kit) JRE (java runtime environment) JAXB (java xml related) JSP (java server pages - old frontend) Javadoc (Java documentation) JPA (java persistence API) Javac (java compiler) Jar (java file containing classes) Java Beans (related to java objects) JMS (java message service) JUnit (java unit tests) JSF (java server faces - frontend) JaxRS (rest webservices specs) JMX (java mgmt extension) Non JAVA related: JavaScript (not java related - frontend) JQuery (not java related - frontend) JS (or .JS - frontend / javascript) Json (data type for webservices) Jboss (web server / container) Jasper (for reports) Joomla (CMS - content mgmt system) JRebel (fast compilation, no restart) Jetty (web server) Jersey (rest framework) Ajax (Asynch JavaScript And XML) JAVA related:

Slide 16

Slide 16 text

Most used/popular frameworks in Java Spring MVC Spring Boot Hibernate Maven Log4J / SLF4J JUnit Mockito / EasyMock Apache Kafka GWT (Google Web Toolkit) Grails Play Jersey Quarkus Micronaut Apache Spark Apache Camel Selenium Apache Hadoop Eclipse Vert.X Dropwizard EclipseLink Vaadin (a bit old) JSF (a bit old) Struts (old) JSP (old)

Slide 17

Slide 17 text

Java Roadmap 2022 Part 1/2

Slide 18

Slide 18 text

Java Roadmap 2022 Part 2/2

Slide 19

Slide 19 text

Most popular font-ends

Slide 20

Slide 20 text

Specialty Back-End Developer Front-End Developer Full-Stack Developer DevOps Developer Database Developer Mobile Developer Data Scientist Developer Big Data Developer

Slide 21

Slide 21 text

How to evaluate developer CVs? ↑ Number of experiences + ↑ Number of Trainings/Courses + Certifications + Years of Experience

Slide 22

Slide 22 text

Interviewing developers ● Avoid long process is DESIRED ● 01 Coding test is OK ● 01 RH interview is OK ● 01 Tech interview is OK ● Weeks for feedback is BAD ● No feedback at all is the WORST

Slide 23

Slide 23 text

Test online for developers https://codesubmit.io/ https://www.imocha.io/ https://codesignal.com/ https://www.codility.com/ https://www.testdome.com/ https://www.testgorilla.com/ https://www.hackerrank.com/ https://www.codingame.com/start https://devskiller.com/coding-tests/ https://coderbyte.com/organizations https://www.linkedin.com/skill-assessments/

Slide 24

Slide 24 text

Indicators: Is s/he updating/progressing?

Slide 25

Slide 25 text

Exposition and community engagement Participate in Java/Dev groups or communities Contribute to Open Source Projects Write technical articles to Blogs or LinkedIn Presence in Tech Meetups Presence in Tech Conferences Answers tech questions in Stack Overflow Trainings or courses given

Slide 26

Slide 26 text

Certifications: added value in the CV

Slide 27

Slide 27 text

Old / legacy tech / not sexy anymore Swing Desktop technologies Java FX Java ME JSP JSF Servlets Applets Jquery Struts EJB 2 Java under version 8 MyBatis / Ibatis JDBC pure XML PL-SQL Vaadin ZK OSS SVN / CVS DOM / SAX SOAP Webservices ANT Cobol Mainframe

Slide 28

Slide 28 text

Trending / sexy tech / calls dev attention Spring Boot Quarkus Microservices REST APIs Docker Vue.JS React.JS Event Driven Apps Reactive Programming Apache Kafka AWS / Azure / GCP / Cloud Java 11+ JavaScript / Typescript Kotlin JSON Kubernetes IntelliJ IDEA Functional Programming Node.JS NoSQL Elasticsearch (ELK) Jira/Confluence Git / Bitbucket / GitLab Websockets CQRS Android / IOS HTML5

Slide 29

Slide 29 text

Junior x Medior x Senior

Slide 30

Slide 30 text

A senior java developer profile must… Have lots of practical experience Know the theory base Know well OOP Know some design patterns Understand the frontend Know webservices Know SQL and Database Understand UML Understand unit/integration testing Be autonomous and take decisions Know how to analyze a problem Know how to estimate tasks Know how to make code review Know how to train/coordinate juniors Know how to prototype and present ideas/solutions Know how to write documentation Have architecture knowledge Have a good interaction in internal/external teams

Slide 31

Slide 31 text

3 questions to discover the level 1) What is the difference between interface and abstract class? (And tell me the advantages and disadvantages) 2) What is the difference between JPA x Hibernate x Spring Data? 3) What is the difference between Dependency injection x inversion of control x dependency inversion?

Slide 32

Slide 32 text

Practical experience questions 1) Please tell me about 3 design patterns you used and how 2) Please explain to me how and why you used polymorphism, overloading and overriding in a real system 3) We have an Invoice ID like 2022-xxxxx, where xxxxx is numeric and incremental, that must be unique in a system with a high number of simultaneous requests. How to solve that problem in the code, or using a framework, or using the database?

Slide 33

Slide 33 text

Diversity of profiles for IT Developers Engineers Mathematicians Physics Administration Economy Professors Geeks English French Dutch

Slide 34

Slide 34 text

Local people x expats Local is hard to find Remote Developer Employee x Freelancer VISA Sponsor Expat Status Regime India, South America, North Africa More years in career than in Europe After VISA/WorkPermit they stay 5 years Papers take up to 3 months

Slide 35

Slide 35 text

Questions

Slide 36

Slide 36 text

My contacts LinkedIn: https://www.linkedin.com/in/wallaceespindola/ GitHub: https://github.com/wallaceespindola E-mail: [email protected] Twitter: @wsespindola Thank you!!!