Καλησπέρα παιδιά. Για να ξεκινήσεις ως junior java Developer ποιες πιστεύετε οτι είναι οι βασικές γνώσεις που χρειάζεσαι? Σιγουρα εξαρτάται και με τι ασχολείται η εταιρεία απλά θα ήθελα να μάθω τα στάνταρ.
Ευχαριστώ πολύ.
Junior Java Developer
Re: Junior Java Developer
Αν και η απάντηση είναι αρκετά καθυστερημένη, ελπίζω τα παρακάτω να βοηθήσουν άλλους υποψηφίους στον εργασιακό τομέα. Θα προσπαθήσω να είμαι όσο πιο "πρακτικός" γίνεται.
Για μένα δεν υπάρχουν στάνταρ. Όπως το είπες είναι ανάλογα την εταιρεία.
Ο τίτλος "junior java developer" πολλές φορές από μόνος του δε λέει τίποτα. Μπορεί μία αγγελία με αυτό τον τίτλο να αναφέρεται σε μία full stack θέση (frontend to backend), άλλη να αφορά μόνο το backend και άλλη να γράφει java και να εννοεί javascript. Ναι, ναι μπορείς να βρεις και τέτοιες ωραίες αγγελίες.
Θα μιλήσω προσωπικά τι θα ανέμενα, οπότε μην τα λάβεις ότι είναι απαραίτητα και τα σωστά:
1. Όρεξη να μάθεις νέα πράγματα που κατά πάσα πιθανότητα δεν έχεις ξαναδεί καν στο παρελθόν. Θεωρώ π.χ. πολύ σημαντικό να θέλεις να βελτιωθείς στα tools που χρησιμοποιείς και να εκμεταλλεύεσαι τις δυνατότητες που σου δίνουν. Για παράδειγμα, χρησιμοποιείς ένα IDE. Προσπάθησε να το κάνεις configure και να χρησιμοποιήσεις και κάποια shortcuts για να κάνεις κάποιες εργασίες πιο ξεκούραστα και αποδοτικά. Μη μένεις μόνο σε αυτά που ξέρεις (point and click). Μπορεί να γίνει σταδιακά και αργά αυτό αλλά να το έχεις στο πίσω μέρος του μυαλού σου.
2. Να γνωρίζεις οbject oriented design (τι είναι κλάση, Interface και να μπορεί να μοντελοποιήσει ένα πρόβλημα κάνοντας χρήση τους).
3. Να γράφεις όσο το δυνατόν πιο καθαρό κώδικα σύμφωνα με τα επίσημα standards της γλώσσας (π.χ. σωστό identation, ονοματοδοσία με camelcase για την java, κά). Εντάξει, υπάρχουν tools που μπορούν να βοηθήσουν σε κάποιο από αυτά, αρκετοί όμως μπορεί να μην τα χρησιμοποιούν καν.
4. Να σπας το πρόβλημα που έχεις να επιλύσεις σε methods (analytic skills), ώστε να είναι όσο το δυνατόν πιο ξεκάθαρο (και όχι μόνο). Όσο περισσότερες τόσο το καλύτερο.
5. Όλα τα παραπάνω μπορούν να "αποδειχθούν" μέσα από μικρά ή μεγαλύτερα projects τα οποία μπορείς να παρουσιάσεις και για τα οποία έχεις καλή γνώση αν ρωτηθείς. Το εργαλείο για αυτή τη δουλειά μπορεί να είναι κάποια πλατφόρμα τύπου github/bitbucket.
6. Κι ένα tip για τη συνέντευξη: Αν ερωτηθεί για κάτι που αναφέρεις στο βιογραφικό σου μην απαντήσεις "αυτό δεν το θυμάμαι καλά, το έκανα στη σχολή, έχει περάσει καιρός". Διαφορετικά δεν έχει νόημα να το "προμοτάρεις" καν. Αυτό σημαίνει ότι πάντα χρειάζεται πολύ καλή προετοιμασία.
Πολύ επιθυμητά:
1. βασικές γνώσεις sql (σχεδόν πάντα θα κάνεις κάποιο interaction με ΒΔ)
2. βασική γνώση κάποιου ORM (Object Relational Mapping) tool (π.χ. Hibernate)
3. βασική γνώση κάποιου versioning tool (π.χ. git, αφορά το 5 αυτό)
4. βασική γνώση κάποιου building tool (π.χ. maven)
Από έναν junior δε νομίζω ότι κάποια εταιρεία πρέπει να περιμένει πολλά. Δηλαδή, για να μην παρεξηγηθώ, θα μου φαινόταν αδιανόητο να ζητήσει π.χ. να γνωρίζει design patterns, με δεδομένο ότι δεν έχει εργαστεί στον τομέα το υποψήφιο άτομο.
Διαφορετικά δεν ψάχνει junior απλά θέλει να τον πληρώνει ως junior.
Για μένα δεν υπάρχουν στάνταρ. Όπως το είπες είναι ανάλογα την εταιρεία.
Ο τίτλος "junior java developer" πολλές φορές από μόνος του δε λέει τίποτα. Μπορεί μία αγγελία με αυτό τον τίτλο να αναφέρεται σε μία full stack θέση (frontend to backend), άλλη να αφορά μόνο το backend και άλλη να γράφει java και να εννοεί javascript. Ναι, ναι μπορείς να βρεις και τέτοιες ωραίες αγγελίες.
Θα μιλήσω προσωπικά τι θα ανέμενα, οπότε μην τα λάβεις ότι είναι απαραίτητα και τα σωστά:
1. Όρεξη να μάθεις νέα πράγματα που κατά πάσα πιθανότητα δεν έχεις ξαναδεί καν στο παρελθόν. Θεωρώ π.χ. πολύ σημαντικό να θέλεις να βελτιωθείς στα tools που χρησιμοποιείς και να εκμεταλλεύεσαι τις δυνατότητες που σου δίνουν. Για παράδειγμα, χρησιμοποιείς ένα IDE. Προσπάθησε να το κάνεις configure και να χρησιμοποιήσεις και κάποια shortcuts για να κάνεις κάποιες εργασίες πιο ξεκούραστα και αποδοτικά. Μη μένεις μόνο σε αυτά που ξέρεις (point and click). Μπορεί να γίνει σταδιακά και αργά αυτό αλλά να το έχεις στο πίσω μέρος του μυαλού σου.
2. Να γνωρίζεις οbject oriented design (τι είναι κλάση, Interface και να μπορεί να μοντελοποιήσει ένα πρόβλημα κάνοντας χρήση τους).
3. Να γράφεις όσο το δυνατόν πιο καθαρό κώδικα σύμφωνα με τα επίσημα standards της γλώσσας (π.χ. σωστό identation, ονοματοδοσία με camelcase για την java, κά). Εντάξει, υπάρχουν tools που μπορούν να βοηθήσουν σε κάποιο από αυτά, αρκετοί όμως μπορεί να μην τα χρησιμοποιούν καν.
4. Να σπας το πρόβλημα που έχεις να επιλύσεις σε methods (analytic skills), ώστε να είναι όσο το δυνατόν πιο ξεκάθαρο (και όχι μόνο). Όσο περισσότερες τόσο το καλύτερο.
5. Όλα τα παραπάνω μπορούν να "αποδειχθούν" μέσα από μικρά ή μεγαλύτερα projects τα οποία μπορείς να παρουσιάσεις και για τα οποία έχεις καλή γνώση αν ρωτηθείς. Το εργαλείο για αυτή τη δουλειά μπορεί να είναι κάποια πλατφόρμα τύπου github/bitbucket.
6. Κι ένα tip για τη συνέντευξη: Αν ερωτηθεί για κάτι που αναφέρεις στο βιογραφικό σου μην απαντήσεις "αυτό δεν το θυμάμαι καλά, το έκανα στη σχολή, έχει περάσει καιρός". Διαφορετικά δεν έχει νόημα να το "προμοτάρεις" καν. Αυτό σημαίνει ότι πάντα χρειάζεται πολύ καλή προετοιμασία.
Πολύ επιθυμητά:
1. βασικές γνώσεις sql (σχεδόν πάντα θα κάνεις κάποιο interaction με ΒΔ)
2. βασική γνώση κάποιου ORM (Object Relational Mapping) tool (π.χ. Hibernate)
3. βασική γνώση κάποιου versioning tool (π.χ. git, αφορά το 5 αυτό)
4. βασική γνώση κάποιου building tool (π.χ. maven)
Από έναν junior δε νομίζω ότι κάποια εταιρεία πρέπει να περιμένει πολλά. Δηλαδή, για να μην παρεξηγηθώ, θα μου φαινόταν αδιανόητο να ζητήσει π.χ. να γνωρίζει design patterns, με δεδομένο ότι δεν έχει εργαστεί στον τομέα το υποψήφιο άτομο.
Διαφορετικά δεν ψάχνει junior απλά θέλει να τον πληρώνει ως junior.
Είμαι ένας μοναχικός cowboy...
Re: Junior Java Developer
Κι ένα ενδιαφέρον infographic από jetbrains. Επειδή είναι εταιρεία δεν είναι ό,τι πιο αντικειμενικό (έχει συγκεκριμένο user base) αλλά τουλάχιστον δείχνει κάποιες τάσεις για το τι παίζει στην αγορά.
https://www.jetbrains.com/lp/devecosystem-2019/java/
https://www.jetbrains.com/lp/devecosystem-2019/java/
Είμαι ένας μοναχικός cowboy...