Saturday, December 03, 2016

Moving to the cloud & tech debt - a trap


I am thinking (or maybe I can see), that while more companies jump  to the cloud, migrating their existing software solutions and services, things like 'tech-debt' or 'architectural-debt' are going to become a first class citizen and hot topic, again. Which is a good thing! Really!!!

I am very happy about it, because I do believe that tech debt, over-engineered solutions or hype driven development do actually contribute to an increase rate of  'mediocre' software solutions and services, while we (the software engineers) think that we are doing just great.

But how tech debt is going to be again, a hot topic among meetings while migrating to the cloud? It is simple, the bill by the end of the month! Are you doing micro-services for no reason at all? Do you have a small monolith broken down to 1000 different pieces because this is the trend- for no good reason? Is your API chatty? Have you bundled a ton of libraries and features to your product that actually are not needed but it was just to play around with tech or your engineers to feel happy? Is your code spinning the CPU for no good reason? Is your code using the filesystem inefficiently? 

Maybe you had a 'hint' of these problems, but there were not so intense when you had full control or ownership of the deployment platform.

But now you don't control the hardware, you are being billed by individual operations.You PAY!
And at a certain point people will start to think about it again. Why our Google Cloud bill or AWS bill is so big? Maybe some will decide to go back. Who knows?

What I do suggest though is, spend some time and review your solution, your architecture and the quality of your code. There are for sure, great advantages offloading your infrastructure concerns to a more flexible - elastic world, but it is still YOUR software. And all the sins and mistakes of your software are not going to be 'hidden' or auto-magically resolved because you moved to the cloud, there is a high chance they are going to get' bigger'.


The cloud is great, but it wont make bad software great.

Monday, October 24, 2016

Voxxeddays Thesaloniki - a quick note #vdthes



Last Thursday & Friday, I did a short trip to Greece in order to attend the very first Voxxed Days in Greece, it took place in Thessaloniki

First of all, I would like to congratulate, the master mind behind the overall organization +Patroklos Papapetrou , who eventually succeeded and materialized a long lasting dream (for many of us), to establish in our small country, a  conference and activities that would bridge the gap between our small IT market with the rest of world or even the bigger European Markets and developer communities.

The 'Voxxed' family of conferences, is the ideal way for putting our country back in the map of IT conferences, and a great start to warm up again the local developer community.

So overall for me, the most important thing, is not if this particular first attempt was successful  (which was). The real important thing is (Athens or Thessaloniki) Voxxed Days,  to continue to exist next year and the year after, so that the local community can grow on them and vice versa! So we all need to support this initiative. The price was more than fair and I want to make a call to all the developers (and their companies) in Athens, in a few months time, to support the Athens Voxxed days.

So I am really excited we are going to have an Athens Voxxed Days, which I'm planning to attend and already thinking maybe submitting a talk as well.

During the conference I had the chance to talk with lots of  'blog' friends. Developers and subscribers of my blog. Thank you guys, I promise to keep the blog live and maybe make a new attempt on the podcast.

I was very happy to meet some old friends and talk about the latest state of the Greek IT market, like Spyros Anastasopoulos (one of the founding members of JHUG). You can read his thoughts and review about the conference here. I wish we had more IT professionals like Spyros, both technically but in terms of professional ethics. 

Eventually my trip was...very short, so I could not enjoy the beautiful city of Thessaloniki, maybe next time!

See you all in Voxxed Days Athens!

Monday, October 10, 2016

Set default file associations on MacOSX with duti..and save some time

Wow, how many lost minutes or  hours, every day, because I did not know this a long time ago. I am bit ashamed.

How many times, while working on your mac you get to Open a File, and the system by default opens an editor or an application that is usually set by default. I can not count how many times I have killed Xcode when trying to open a shell script, a csv file a java source file or whatever. When I was fully irritated, I was right clicking the file, and I was manually changing the 'Open With' option. This is the end!

Step 1:  Install duti from brew  (give the guy a Star in github plz) : 

brew install duti

Step 2:  Check the current default application for a specific file extension, e.g '.java' files :

duti -x java

It will prompt something like the following, indicating that Xcode is the default editor.

Xcode.app
/Applications/Xcode.app
com.apple.dt.Xcode ---> this is the bundle ID

Step 3:  Find the 'bundle ID' of the application you want to be default editor. 

I want to open by default with IntelliJ, so I need to find the bundle ID. Thanks to this excellent post, I found out about osascript (its bundled in MacOS)

osascript -e 'id of app "IntelliJ IDEA"'

It will output the following :

com.jetbrains.intellij

Step 4:  Use duti to update the .java file association to IntelliJ.

duti -s com.jetbrains.intellij .java all

Done!

Do you want to do more? For example usually I want Sublime to open many files.

Get the Bundle ID

osascript -e 'id of app "Sublime Text 2"'
com.sublimetext.2

And set some 'known file types'

duti -s com.sublimetext.2 .sh  all
duti -s com.sublimetext.2 .md  all
duti -s com.sublimetext.2 .txt  all
duti -s com.sublimetext.2 .json  all
duti -s com.sublimetext.2 .xml  all
duti -s com.sublimetext.2 .adoc  all

Sunday, August 28, 2016

A dream come true...teaching - Professional Java developer: Tools and best practices

I always enjoyed sharing knowledge. One of the reasons I blog is to share my knowledge on things around my job as a software engineer. Founding and running (with a handful of friends) the first Java User Group in Greece back in 2003, was due to the fact that we could not get sufficient training or access to personal development around our work, so we wanted to shared and re-use the knowledge we had as a small developer community. When I get to work, at any job, in any place, one of the things I look for during my first days, is how much knowledge is there for me, so I can read and get up to speed. I always enjoy, 'training' young developers, show them what I know, bringing them up to speed, shaping their 'developer' personality. 

I am really happy and excited that in a month's time I am going to fulfill a big dream, teaching. I am not an academic, I am a professional, a software engineer and under this context I am going to share some my views, experiences and knowledge, in a short course at the City University of London. You can find the link here. The title is ' Professional Java developer: Tools and best practices ' . My main goal is not to become a teacher, for me the whole initiative is mostly giving back some of my passion and love for my work as a software engineer,  to people that are willing to walk the same road and join me-us in the software development market/world.

The course's main target is to infuse the experiences and standards of today's Java developer job market into a short  course. I am planning a more hand's on learning experience, with an opinionated agenda rather a classic academic computer science course, that you will get as an undergraduate computer science student. I want to provide (as much as possible) the main skills and knowledge that any junior Java developer is nice to have and be familiar with, when he/she joins for the first time a company and a software development team. At least introduce them and then let the student expand on this knowledge.

The agenda and course content is almost finalized (with some minor exceptions) but I am planning to go through topics like
  • Modern Java IDE's - using effectively a Java IDE
  • Using code versioning tools like Git.
  • Latest Java  language's features.
  • Build tools for the Java related, walking through the basics of Maven or Gradle.
  • Testing with Java, using frameworks and libraries towards test driven or behavior driven development
  • Modern enterprise development with Java, a walk through to the available enterprise level micro frameworks, like Spring Boot, Wildfly Swarm, Vertx etc.
  • Development of RestFul API's in Java, using available tools and libraries. 
  • Cloud and Devops tools for the Java developer, a walk through tools like Vagrant, Docker, Amazon Webservices, the cloud.
  • Coding dojo's where we will investigate and learn about, 'famous' Java libraries that you most probably going to 'use' in your Job and it would be nice to know about them.
  • Tips and exercises similar to many interview questions a junior java developer might encounter during his/her job hunt. 
The course is suitable for different kinds of people
  • Computer science undergraduates that are preparing to enter the market
  • IT professionals that they want to have a quick intro to the practices and tooling of the Java world
  • Non IT professionals that are converging to the IT industry and specifically to software development using Java - but are already familiar to developing code with Java

I am very excited, I hope we could start on the 8th of October (assuming that there is enough interest and students). The class is going to be every Saturday from 10 to 5 (or so) and is a 5 part course, meaning 5 Saturdays.

Special thanks to my friend Dionisis Dimakopoulos, who eventually was the one that had the idea and gave me this opportunity, to share my passion through this course. 

Saturday, May 28, 2016

Soldo, my first step as a customer to the 'smart' payments world.

As I have written many times in this blog, from the moment I had the chance to work in the development of 'traditional' retail banking software, I immediately became interested as a 'customer' & software engineer to this new wave of rival services and applications, especially those related with micro-payments and 'electronic' wallets. Despite the fact that traditional banks, today move forward modernizing most of their 'retail' service offering, I still believe they are less flexible and a bit slower  comparing to other companies in the field.

For a month or so, I have been using 'daily' the e-payment solution of Soldo. The company is one of the newcomers in the electronic-micro payments world. Currently their service is in beta, so I was very happy to be one of the  few to try and evaluate their offering. Special thanks to my friend M.Charatzas.

So how does it work? When I 'entered' the service, I simply had to download an iOS application, complete the registration (adding my personal details). Upon activation, I got an 'electronic' wallet where I could see my balance, top up my account, search my transactions, get a virtual credit card (Mastercard) and a new real card (sent via post).  My new wallet (or account), can be credited either by regular bank account transfer, or by using one of my regular 'cards' from my traditional bank and 'debit' it. The overall process took just a few minutes, and the real card was sent within one week. Sweet!

During my initial week I did transfer a small amount of money to my new wallet, and started using the e-card and the regular one (it is contact less as well) in different places. In general I did not have any problem, only in one place the contact- less payment was not working). The real added value of these services is not the regular debit/credit card use. This is something already provided by traditional services. 

So the more you get to use the app, the more you get addicted to the plethora of information around your payments. The notifications upon each payment (or failed payment) are instant, the transaction history is simple enough and easy to use, so I can scroll through my payments and check available details. I am able to see during the previous month, when and how much money I did spent. I really like the 'today' view, where you get to check how much money you spent this very day.

Also I am able to control many aspects of the regular and virtual card like, like the max amount I can debit the card in each transaction (I guess parents would really love that kind of feature), or the basic types of payments my card can be used for. For example I can enable or disable my Sold Card, for 'Online' payments, 'cash points' or payments 'abroad'. Of course at the end of the day, in case someone, steals your card, with the switch you can completely de-activate it and report that has been compromised.

The more I use, this kind of interactive payments, the more I get a feeling that I am in control of the overall process. So kind of 'security'. This is the main reason I am eventually switching to a 100% daily use of my Sold wallet. For example, there are a few cases, that I do feel a bit unsure when my card is 'walking' around 'shops' or restaurants, or when you get to a very busy place where a dozen of people 'attack' the point of sales, example a bar, and the personnel just swipe 1000 cards per minute trying to serve the people. In all these cases, I have stopped using my regular card in favor of Soldo, the moment my card is debited I get the notification and I can see what is happening or double check. 

Also, during traveling out of the UK, I can complete my transactions, based on the current 'exchange' rate of GBP and the Euro, with no extra fees! How cool is that!
Up until now the experience was very nice and I am very happy with this kind of services and offerings. I find my self to use this card more often comparing to my regular bank's card and it I think I might switch completely for day to day use and online shopping.
I am sure there are other products and services out there and I am very excited in general, because retail banking and micro-payments is a world where I totally believe there is room for improvement and innovation, both in the IT (software development) and business wise. 

So hello new world of micro-payments and e-wallets! 

Tuesday, May 24, 2016

Kubernetes London Meetup - picking up momentum #kubernetes #london


One of the great things, when living in London is that you have access to meetup's and communities  for almost every technology you will ever manage to get interested in. After attending the first EU Kubernetes Conference - KubeCon (2 months ago), this was my second time attending the 'Kubernetes London Community' in one of their regular meetup's at the premises of SkillsMater.

I would like to give credits to the 2 main organizers Peter Idah & Milos Gajdos for working towards, building a vibrant community for a technology that IMHO is not only trending but will become very relevant. I am might be a bit biased, but Kubernetes is one of the few 'things' out of this DevOps / Containers / Microservices tsunami of technologies, that is going to make a change - market wise. Thumbs up to 'GoogleCloud' for sponsoring beers and pizzas before the talks - good job. I would be very happy next time with an uber cool 'Kubernetes TShirt' for my summer vacation!


The Dev in the DevOps

I always feel, like a silent minority in that kind of meetups, especially the Kubernetes one. Despite the fact that I totally relate to the concepts and the technology, I do belong more to the Dev side of the DevOps culture rather than the Ops. As I have stated numerous times and in some of my 'introductory' talks around Kubernetes, I came 'close' to this technology and evaluated it's potential strengths, from the software developer's / architect perspective rather the Ops or DevOps developer. For me Kubernetes is an excellent abstraction for concerns that as a software developer I don't have to worry about, especially when I need to focus on delivering  / writing business code. These abstractions safeguard concerns and mitigate risks that I will have in the future, when my solution potentially will need to be flexible, scale-able, deployment environment neutral etc. I do follow the developments of the go language, I do try to relate to the complexities and specifics of AWS or Google Container Engine, but the main priority for me is the 'code' the solutions me and the team I belong to, needs to write and architect. I am not glorifying the Ops centric technologies, I see them as an enabler and a problem solver for 'business and technical concerns' many software solutions will face. But, as you might have experienced before, a lot of software projects do die, or never get to the mainstream in order to phase challenges that technologies or environments like Kubernetes or the Cloud have to offer. I do worry about the fact that 'we' the developers, have found a new 'box' of emerging technologies, that for sure are relevant but we kind of settle (or we consider uncool) the actual code written to provide the solutions. Still out main concern should be whatever lives within the container - and not the container neither the infrastructure around it. Yes they are important but not the main priority. Enough for my devs first rant - I hope I don't get flamed by the 'Ops' audience - which I have total respect.

About the meet-up 


The first talk was from Martin Devlin, from Pearson Plc, Bitesize PaaS Project. They are using Kubernetes for then 'upcoming' platform. I did keep some notes regarding some of the 'solutions' they keep in the mix for their platform. Unfortunately I did not have the chance to elaborate, but I kind of wondered, why you would need to use services like Consul, or Vault within Kubernetes where actually the framework already abstracts and provides in some extend this needs. Maybe at Pearson they do have special cases and requirements, which of course I can not relate to. The 'Vault' section was interesting enough. A kind and positive reminder to the 'Martin' for any future presentation, it would be nice he could add some more diagrams and more slides so that we can have a better idea of their solution and what was presented.






The second talk, was from Justin Santa Barbara. Really great talk, from one of the most important committers of Kubernetes, responsible for the AWS support. One of the many questions I get to have or hear in talks regarding Kubernetes adoption, is 'Can we use this in AWS, can we use this feature of AWS with Kubernetes? etc. So it was really great to have Justin presenting and passing his views and describing the current state and road map towards this area.

I really liked his 'all kubernetes' view of things, which totally makes sense for me. Kubernetes is  providing a rich set of functionality in different 'areas' around application deployment, that eventually containerized applications that will be 'living' inside this environment could be aware of these (capabilities) or even use them. 

Very nice interactive presentation and I do hope the London Kubernetes community to host more committers and devs of Kubernetes in the future. In my notes from Justin's presentation was, the 'PetSet' Controllers that is coming soon enough, and will eventually answer the question ' How about hosting my cluster-aware  MySQL  or ElasticSearch within kubernetes. Last but not least, there were a lot of questions around the applicability and availability of the 'Ubernetes' type of deployment (meaning multiple kube clusters in different regions/zones - acting as one).

It was really, time well spent yesterday and I am really looking forward for the future meetups and developments of this 'emerging London community'. If you are considering adopting, or trialing Kubernetes within your company in London, I totally encourage you to join this community and share the experience. 



Go Kube!



 

Sunday, May 15, 2016

Ένας χρόνος μακριά απ' την Ελλάδα.

Πριν από 4 μέρες κλείσαμε 1 χρόνο ως νεο-μετανάστες, όπως πολλοί που διαβάζουν αυτό το blog είναι ήδη υποθέτω. Θεωρώ ότι ανήκουμε στην κατηγορία,  'αργήσατε αλλά τα καταφέρατε' μιας και αρκετός κόσμος την είχε ήδη κάνει την τελευταία πενταετία. Θυμάμαι εκείνο το πρωινό στον Ελ.Βενιζέλος, νόμιζα ότι πάω διακοπές και θα ξαναγυρίσω. Αλλά δεν γύρισα, ίσα ίσα ήταν η αρχή για ακόμα μεγαλύτερες αλλαγές.

Φύγαμε απ' την Ελλάδα κυρίως για επαγγελματικούς λόγους, οι οποίοι έχουμε άμεση σχέση με το γενικότερο well being και φυσικά το μέλλον μας. Εγώ προσωπικά στα όρια της απογοήτευσης μετά από πολλά χρόνια στην Ελληνική αγορά να πολεμάω για τα αυτονόητα ή να έχω αυταπάτες (όπως πολλοί manager-τέτοιοι μου είχαν πει). Δεν ξέρω τελικά τι ήταν σωστό ή λάθος. Για να μην γίνομαι κακός με ανθρώπους, καταστάσεις, κουλτούρα και εταιρίες θα καταλήξω στην πιο ώριμη εκδοχή.

"Στο τέλος της ημέρας όσο πιο μικρή είναι η αγορά, τόσο λιγότερο ανταγωνιστική, οσο λιγότερο ανταγωνιστική τόσο πιο φτωχή σε ευκαιρίες, όσο πιο λίγες ευκαιρίες τόσο πιο βαρετή και σκληρή για να σε βοηθήσει να εξελιχθείς σε γνώσεις ή και οικονομικά. Όσο πιο πολλά θέλω, απαιτήσεις, αυταπάτες (πες το όπως θες) έχεις από την δουλειά σου και την καριέρα σου, τόσο πιο πιεσμένος θα νιώθεις σε ένα τέτοιο περιβάλλον. Όσο πιο απογοητευμένος νιώθεις τόσο πιο πολύ πιέζεσαι να αποδεχθείς την κατάσταση και να αγκαλιάσεις το 'σύστημα' ή απλά να φύγεις."

Ήταν τελικά στο εξωτερικό καλύτερα τα πράγματα- επαγγελματικά; 

Ναι και όχι. Στην πρώτη μου απόπειρα όχι δεν ήταν (για τα δικά μας θέλω). Βρεθήκαμε σε μια χώρα όπου κατάλαβα πόσο στρεβλή είναι η ελληνική αίσθηση της ποιότητας ζωής, που κατάλαβα πως είναι να λειτουργούν οι βασικές δομές του κράτους και του γενικότερου συστήματος. Αυτό μου άρεσε, μπόρεσα να ξεπεράσω το σοκ και την ιδέα ότι έφυγα από την χώρα μου, είδα ότι υπάρχει μέλλον και ζωή έξω. Μου άρεσε αυτή η αίσθηση της οργάνωσης, της ηρεμίας, του προγράμματος, της σταθερότητας.

Επαγγελματικά  βέβαια (IT), βρέθηκα σε μια ακόμα πιο μικρή χώρα σε ευκαιρίες, με εντελώς στρεβλή αγορά εργασίας (μονόπατη για να το πω λαϊκά, ή μονοθεματική), λογικούς μισθούς για τους newcomers (οι πιο παλιοί θα είχαν ζήσει χρυσές εποχές) αλλά σε γενικές γραμμές κανένα σημάδι ότι θα μπορούσα να 'συμπληρώσω' στο βιογραφικό μου εμπειρίες και ονόματα που θα με βοηθούσαν στο μέλλον ή θα ένιωθα ότι 'ξεδίψασα' άπ' τα επαγγελματικά μου θέλω. Correction time.

Έτσι χωρίς πολλά πολλά είπαμε να αποχαιρετήσουμε την χώρα των euro-δημοσίων υπαλλήλων (Λουξεμβούργο) και να πάμε σε μια αγορά που μπορούμε να παίξουμε με τις ευκαιρίες της και μάλλον να εκπληρώσουμε πολλά απ' τα θέλω μας. Enter London, UK.

Είναι καλύτερα;

Ναι, αν και η κίνση αυτή είχε μεγάλη ταλαιπωρία και άγχος τώρα μετά από 3 μήνες, νιώθουμε ότι κάναμε το σωστό. Είμαστε αρκετά πιο αισιόδοξοι επαγγελματικά, νιώθουμε ότι σιγά σιγά γινόμαστε πιο ανταγωνιστικοί και το πιο σημαντικό, παρόλο που πουθενά δεν υπάρχουν οι τέλειες ευκαιρίες, οι τέλειες εταιρίες, μας δημιουργεί ένα αίσθημα ασφάλειας το γεγονός ότι μέσα στην εβδομάδα τα τηλέφωνα θα χτυπήσουν 2-3 φορές για προτάσεις. Βαρέθηκα; δεν θεωρώ ότι η τωρινή μου δουλειά με καλύπτει από θέμα, φιλοδοξιών και  χρημάτων; Είναι μια απόφαση απλά καθαρά δική μου, για ξεκινήσω και να μπω στο ξανά στο job hunt. Δεν είναι εύκολο, ούτε ευχάριστο αλλά είναι καθαρά δική μου απόφαση, και αυτό με κάνει να νιώθω ήρεμος. No dependencies, αν θέλεις κάτι καλύτερο, αν πιστεύεις ότι αξίζεις κάτι καλύτερο, 'ιδού η Ρόδος, ιδού και το πήδημα'. 

Ωραία τα επαγγελματικά στο IT και η ζωή;

Είναι η πιο συνήθης ερώτηση. Δεν υπάρχει σαφής απάντηση. Μάλλον υπάρχει για εμάς, αλλά δεν σημαίνει ότι είναι συμβατές με τον καθένα. Προσπαθώ πάντα να 'καταλάβω' ή να μάθω το background του καθένα που με ρωτάει για να του φέρω απλά παραδείγματα ή στοιχεία που μπορεί να συγκρίνει. 

Δεν υπάρχει η τέλεια κατάσταση. 


Φεύγεις από την χώρα σου, από το σπίτι σου. Σου λείπει πάντα η οικογένεια σου, οι φίλοι σου, η γειτονιά σου και πόλη σου (σαν αίσθηση) . Πρέπει να μάθεις να ζεις σε ένα διαφορετικό περιβάλλον, να επικοινωνήσεις, να προσπαθήσεις να ενταχθείς σε όποιο νέο κοινωνικό σύνολο. Αν δεν έχεις διάθεση ή δύναμη να ασχοληθείς με πράγματα που δεν είχες σκεφτεί ότι θα σε απασχολήσουν στην ζωή σου θα δυσκολευτείς.

Αρκετός κόσμος, αναζητά ένα καλύτερο αύριο. Νομίζω από τις πιο πολλές ερωτήσεις που δέχομαι σε email και facebook, το βασικό κίνητρο (μετά από λίγο συζήτηση) και η μεγάλη ερώτηση είναι 'Θα βγαίνω οικονομικά;' . Είναι σύνθετη η απάντηση, αλλά μια γρήγορη απάντηση είναι, 'θα μπορείτε να έχετε 2 μισθούς στο σπίτι;'. Δεν είναι μακρυά και από την κατάσταση στην Ελλάδα, 2 μισθοί στο σπίτι σημαίνει μεγαλύτερες αντοχές, μεγαλύτερη ευελιξία. Το ίδιο ισχύει για έξω απλά επειδή τα ποσά είναι μεγαλύτερα και τα έξοδα πολλαπλάσια, δεν υπάρχει ευκολα χώρος για να συμβιβαστείς. 1 μισθός σε μια ακριβή χώρα ή πόλη σημαίνει συμβιβασμοί, ποιοί θα είναι αυτοί είναι σχετικό με το lifestyle και τις απαιτήσεις του καθένα. Εξαιρώ φυσικά  καταστάσεις όπου 1 μισθός μπορεί να συντηρήσει σε υψηλά standard ολόκληρη οικογένεια. Υπάρχουν και αυτές οι περιπτώσεις (δεν είναι πολλές) αλλά υπάρχουν. Δεν ανήκω σε αυτή την κατηγορία.

Να φύγω;

Ναι
αλλά για τους σωστούς λόγους. Ποιοι είναι οι σωστοί λόγοι; Εσύ θα αποφασίσεις αλλά προσπάθησε να μην σκέφτεσαι με το κλασικό Ελληνικό μεγαλείο. Όχι δεν είμαστε πιο έξυπνοι από άλλους λαούς, και δεν μας περιμένουν στο εξωτερικό για να μας δώσουν κουβάδες λεφτά και να μας δοξάσουν. Πρέπει να προσπαθήσουμε και εμείς όπως όλοι οι άλλοι. Όχι δεν έχουμε πιάσει τον πάπα από τα @@, που είμαστε μετανάστες (αρκετοί Έλληνες ιδιαίτερα εδώ στο Λονδίνο έχουν αυτή την τάση, να λένε πόσο φοβεροί είναι που ζουν εδώ, λες και είναι οι πρώτοι που ανακάλυψαν την Αμερική). Αυτή η  βλαχοποζεριά δεν μας αφήνει ποτέ. Ναι υπάρχουν ευκαιρίες παντού, και ανάλογα με τα skill σου, και σε ποια αγορά θα πας, θα πρέπει να κάνεις και τους κατάλληλους υπολογισμούς. Όσο δύσκολο είναι να διατηρήσεις το Α επίπεδο ζωής με έναν μισθό στην Ελλάδα και χωρίς δικό σου σπίτι, είναι διπλάσια δύσκολο έξω. Ρώτα και ψάξε όσο πιο πολύ μπορείς. Δεν είναι κακό ούτε ντροπή. Έλληνες υπάρχουν παντού, γνωστοί γνωστών, προσπάθησε να παίρνεις πληροφορίες από ανθρώπους που είναι φρέσκοι σε έναν τόπο και όχι από κάποιους που είναι πάνω από 10-15 χρόνια γιατί οι απόψεις τους και τα επίπεδα σύγκρισης είναι πια διαφορετικά και μακρυά από την πρόσφατη ελληνική κατάσταση.

Review του χρόνου ξανά! Καλή τύχη και καλό κουράγιο σε όσους το έχουν σκεφτεί ή έχουν πάρει ήδη την απόφαση. Καλή υπομονή και σε αυτούς που μένουν πίσω.
 

Tuesday, April 19, 2016

Judo ... στο Λονδίνο..και σκέψεις πίσω στον δικό μου σύλλογο.

 Το να βρω νέο dojo και να ξεκινήσω προπονήσεις είναι στιγμή ορόσημο σε κάθε αλλαγή χώρας. Εύχομαι ότι δεν θα χρειαστεί άλλη. 

Μετά απ΄το σύντομο πέρασμα σε ένα αρκετά συμπαθές και μικρό σύλλογο στο Luxembourg, σήμερα έκανα την πρώτη μου προπόνηση στο Sobell Judo Club, στην περιοχή του Isligton (κοντά στο emirates) που έχει γίνει και μια απ' τις αγαπημένες μου περιοχές γενικά, ιδιαίτερα απ' το Angel και προς τα πάνω.

Ο sensei Σ.Σαμσών  8 νταν , με εντυπωσίασε,  πραγματικά έμεινα ευχαριστημένος  από την ευγένεια  αλλά και τον τρόπο διδασκαλίας του.  Επίσης μπορούσα να ανταλλάξω και μερικά ελληνικά μαζί του πάνω σε τεχνικές. Ιδιαίτερα φιλικοί και ευγενικοί οι αθλητές, το τμήμα είναι mixed, άνδρες, γυναίκες και μικροί Judoka,  είχα την ευκαιρία να τους γνωρίσω όλους και να με κάνουν να αισθανθώ αρκετά άνετα. Ότι περιμένεις δηλαδή σε κάθε dojo.  Οι προπονήσεις είναι 2 φορές την εβδομάδα, από 1.5-2 ώρες. Το dojo είναι μέσα σε ένα μεγαλύτερο αθλητικό κέντρο με πολλές δραστηριότητες και χώρους - μου θύμισε το γυμναστήριο του πανεπιστημίου πριν πολλά χρόνια - αλλα 3 φορές μεγαλύτερο.

Αυτή είναι η μαγεία του Judo, μια παγκόσμια οικογένεια με τις ίδιες αξίες. Δεν έχει σημασία που θα πας, όταν πατήσεις το πόδι σου σε ένα dojo, θα σε αγκαλιάσουν σαν 'brother' όπως μου είπαν σήμερα και θα προσέξουν να ενταχθείς γρήγορα. Ανεξάρτητα απο θρησκεία, χρώμα ή καταγωγή.

Μιας και το γράφω αυτά δεν ξεχνώ να βοηθάω και να συμμετέχω οσο μπορώ ηλεκτρονικά στον 'αγαπημένο΄μου σύλλογο, τον Συλλογο Judo Περιστερίου - Dojo Club. Σε πιάνει μια μελαγχολία μερικές φορές όταν βλέπεις τους δασκάλους σου και παλιούς συναθλητές σου σε φωτογραφίες, να συνεχίζουν την προσπάθεια, να κάνουν δραστηριότητες και να μεγαλώνουν τον σύλλογο. Αν είστε απ΄ τα δυτικά και θέλετε να μάθετε για το judo, κάντε μια βόλτα πάνω στον Άγ. Βασίλειο στο Περιστέρι - υπάρχει μια θερμή judo παρέα.
hajimeee λοιπόν και στο Λονδίνο! 

Sunday, April 17, 2016

Spring Async and Java's 8 CompletableFuture, a small change to the existing tutorial #spring #async #java8

It is known that I am not the biggest fan of Spring, but at the time being I work for an organization that maintains too many projects utilizing Spring (in different forms and versions). I still remain skeptic towards Spring, of course there are some very nice ideas, there are some nice (too many) abstractions, there are some very handy 'shortcuts' to bootstrap complex projects. I am not going to elaborate on the things I don't like in this post.

One thing I like on Spring's documentation, is their getting started guides. Well written and concrete. I was reading through, a short guide, for 'Async' method execution, through SpringBoot /RestApi [link] .

So this is this the implementation of the example 'asynchronous' findUser() method. Full source here.

@Async
public Future<User> findUser(String user) throws InterruptedException {
  System.out.println("Looking up " + user);
  User results = restTemplate.getForObject("https://api.github.com/users/" + user, User.class);
  // Artificial delay of 1s for demonstration purposes
  Thread.sleep(1000L);
  return new AsyncResult<User>(results);
}


I was wondering why there is still a 'Future' in the example, while we have been introduced Java8, CompletableFuture. I guess the original authors want to preserve backwards compatibility with previous versions of Java (6 / 7 ) - where this construct is not available.

It seems that someone else had the same question, and wrote a very nice example here. In one of the comments, you can see a hint that from version 4.2 and onward the Spring API, would be compatible with the use of CompletableFuture, on top of Future & AsyncResult which are already provided. I thought, `well it's a shame, why not try it or even document it, because if someone lands on this example, he/she might stay with the current implementation` - why not use something standard?. 

So I decided to make a tiny change, remove Future and replace it with CompletableFuture, also comment out the calls to Future.isDone() and replace it with the very handy CompletableFuture.allof() method.

So I changed the return type on the 'service' method



while, updating the, caller code - to sync on all 3 futures and once allof() them were done, we could print the results.

The modified, example can be found here. I found this and this blog posts from Tomasz Nirkewicz, a very nice and pragmatic walk through of CompletableFuture, rich method list. There is also a quite complete presentation by my favorite Devoxx Speaker , Jose Paumard you can find it here.

Links
  • https://spring.io/guides/gs/async-method/
  • http://geowarin.github.io/completable-futures-with-spring-async.html
  • http://www.nurkiewicz.com/2013/05/java-8-completablefuture-in-action.html
  • http://www.nurkiewicz.com/2013/05/java-8-definitive-guide-to.html
  • https://github.com/javapapo/projects-from-blog/tree/master/spring-async-complfuture

Sunday, April 10, 2016

while (true) { νοστος };

Όταν πρωτό φτάσαμε στο Λουξεμβούργο, για κάποιο καιρό σκεφτόμουν αρκετά έντονα το σπίτι μου στην Ελλάδα, το δυτικό Χαϊδάρι. Ο πραγματικά υπέροχος καιρός σε αυτό το μικρό καταπράσινο κέντρο ευρωπαϊκό χωριό δεν με βοηθούσε αρκετά. Έβλεπα καθημερινά ειδήσεις, ήταν και εκείνο το δημοψήφισμα, νιώθαμε ότι φύγαμε μάλλον την τελευταία στιγμή. Μετά από 1,2 μήνες σταμάτησα να σκέφτομαι την Ελλάδα, αυτό το αίσθημα που σου δημιουργεί ο νόστος  ξέρεις. Είχα ήδη συνειδητοποιησει ότι δεν θα έμενα για πολύ εκεί, οπότε θωράκιζα τον εαυτό μου για το επόμενο βήμα.

Τώρα που έχουμε  εγκατασταθεί στο Λονδίνο περνάω κάπως το ίδιο (σκέφτομαι το σπίτι μου), υπολογίζω ότι σε λίγο θα περάσει και αυτό. Ίσως είναι και συσσωρευμένο άγχος και ένταση που δημιουργήθηκε από το extreme relocation (2 χώρες σε  λιγότερο από ένα χρόνο).

Εδώ στο Λονδίνο, έχω πιο πολλούς γνωστούς και φίλους. Ανθρώπους που τους ήξερα και με ήξεραν απ΄ όταν πάτησα το πόδι μου εδώ για πρώτη φορά το 1999, αλλά και άλλους που περάσαμε αρκετά χρόνια μαζί στη Αθήνα, στο ίδιο γραφείο, όλη μέρα.  Μερικές φορές νιώθω ότι ζώ σε μια παράλληλη πραγματικότητα. Μαζευόμαστε για καφέ ή φαγητό, τόσα γνώριμα πρόσωπα, και μιλάμε για τα παλιά, μερικές φορές και για την Ελλάδα. Λες και έχουμε βγει για μπύρα μετά την δουλειά στην Πανόρμου. Δεν ξέρω ακόμα όλη αυτή η εικόνα μου φαίνεται παράξενη και η πλάκα είναι ότι είμαι κι εγώ μέσα σε αυτή. 

Το πιο ενδιαφέρον είναι όλα αυτά προλαβαίνω να τα σκεφτώ και να τα αισθανθώ το Σαββατοκύριακο. Δευτέρα με Παρασκευή μάλλον το μυαλό κάνει switch! Αύριο θα βάλω την τελευταία πινελιά, βρήκα σύλλογο για να συνεχίσω το Judo, είναι δίπλα απ' το γήπεδο της Arsenal. Για να δούμε. 

Συνεχίζουμε να λαμβάνουμε ερωτήσεις, από ανθρώπους που θέλουν να φύγουν. Κάποιοι με αεροπορικά έτοιμα, άλλοι τεστάρουν τις αντοχές τους, άλλοι μετράνε τα χρήματα στις προτάσεις. Νομίζω ότι η παρέα μας θα μεγαλώσει και άλλο σύντομα.  Συνεχίζω να μην έχω χωνέψει 100% ότι έγινα κι εγώ κομμάτι του μεταναστευτικού κύματος. Ίσως αυτή η συνεχής μετακίνηση να μην βοήθησε αρκετά. 

Θα δούμε, περίεργες οι εναλλαγές συναισθημάτων.


Sunday, March 27, 2016

The Java Hellenic User Group..είμαστε ακόμα εδώ - 2 April 2016 @ Orange Grove

Νομίζω δεν θα ξεπεράσω ποτέ το 'είμαστε, έχω τρέξει αρκετά (όπως και άλλοι) για την μικρή αυτή την κοινότητα στην Αθήνα και την πονάω και ενδιαφέρομαι ακόμα.  Είναι ιδιαίτερη στιγμή γιατί έχουμε ουσιαστικά το  πρώτο JHUG event το οποίο δεν το οργανώνει 100% η αρχική ομάδα του JHUG. Γι' αυτό όσοι είναι ακόμα στην Ελλάδα και συγκεκριμένα στην Αθήνα στις 2 Απριλίου, περάστε μια βόλτα απ' το Orange Grove. Πληροφορίες εδώ.

 Καλά να java-ρετε όπου κι αν είστε!

Sunday, March 20, 2016

Is your codebase smelly? Find out with the help of SonarQube and the Smells plugin!

In the project which I recently joined, I discovered a set of annotations, (part of the code) that eventually did not add any functionality but they were 'marking' classes or fields  as a potential bad implementation, or as a potential case that may need to be reworked. The original author, had created a very elegant way (imho) on annotating parts of the code, for things that needed to change or to be improved. This mechanism was mostly targeting less senior contributors so they improve and at the same time, it was marking 'smells' in the code that unfortunately were not a 5 minute fix and might need a bigger change or discussion around it.

@TechBebt ("rework this method, so that takes care this business concern")
@Refactor ("Use the proper data structure for this operation, see LinkedList");
public void doSomething(String aParam){

In the past I used to work in projects where this kind of code-review and comment process was performed using our famous following comments. You might have some of those in your project I guess.

// TODO 
// FIX-ME

I really liked the annotation approach, so since I am new, I started searching for them all over the place. When I found something that I could fix, I followed the annotation's description field, and I could provide a small bug fix. It seemed to be a bit cleaner than the long sentenced TODO items. The problem with the above annotations is you will bump into them, only if you happen to see them, or search for them in your IDE, where TODO or FIX-ME usually show up in IntelliJ's or Eclipse's task (todo) list.

At the same time, I proposed to install Sonar for the team and eventually monitor the 'health' of our code base improving the exposure of this information to a wider audience. The more you expose your code problems to the team, the easier you make this information to anyone, the more chances you have members to contribute fixes rather than dictating it as a process.

While I was configuring Sonar, I discovered the Qualinsight Smells Plugin, along with their maven library. Eventually it is a library that contains similar annotations to those I discovered in the project, so you can add it as a dependency in your project and start 'marking the smells'. These annotations then can be scanned by the related Sonar Plugin, so when you code base is scanned, in the final Sonar report, you can have a list of  all the annotated 'Smells'. You can go through the simple documentation on github. A smell annotation looks like this: 

@Smell(minutes=10,reason="This class should be redesigned in order to", 
type=SmellType.BAD_DESIGN)

You have to indicated
  • an estimate of time for a potential fix.
  • the reason, actually the description of the smell.
  • and a set of predefined types, in order to specify what kind of smell it is. The provided list is  sufficient enough to cover most of the cases.
You can find an example of project configuration here.

When the Sonar report is ready, the smells are going to be listed , as the image below illustrates.



I really liked the overall approach. Despite the fact that our ultimate goal is eventually to fix the code and only 'annotating' defects, I still think it is a very elegant idea. Especially when your team consists of less senior developers or 'devs' that they don't pay attention to things like quality and maintainability of the code base, it is a very 'constructive' and elegant way to bring forward these concerns and with the help Sonar, increase their exposure. It is also a team effort, identified Smells are not predefined rules from findbugs or PMD, they are human identified  points, there might cases where the code is fine, but it does not implement correctly the business.  Sonar enables non technical stuff to eventually have access to the 'state' of the project, so yet another way the product owners/ managers to a better understand about 'technical debt'.

So...is your code base smelly? If yes do something about it. Nobody likes smelly code.

ps) All credits to M.Pawlak  (@QualInsight) for his work on this library.

Sunday, March 13, 2016

KubeCon EU - 2016 - London, short review #kubecon #kubernetes




I 'fell in love'  with Kubernetes, a year ago, during a day job research initiative around containers, micro-services, orchestra-tors and platforms as a service frameworks. I'm not a sysadmin, neither an OPs guy, I am a developer. I like to write code, design software, improve them, refactor them, re-architecting them.  From the developer's perspective kubernetes is eventually the right technology  (IMHO) to abstract many of the challenges of a micro-services based architecture, at the same time is easy to learn at least it's main idea's- without being sysAdmin Hulk.  Last summer,  when the first KubeCon tool place in California, I was telling to my self ' Man I wish I was there, it would be great to be in a conference for a technology that is in it's infancy and is picking up'. A few months later, KubeCon EU is announced and I registered no matter what.

A few months forward, I am sitting happy enough on a big room, along with other Kube-nauts, waiting for the keynote talk by Kelsey Hightower, who I was very happy to meet in person and ask about the latest details of his book, which I've done a early review - a couple of months ago. By the way he is a great presenter, fun to watch and very honest towards the maturity and simplicity of Kubernetes. I really liked statements like the following from his talk - which  show that the people behind pushing kubernetes are pragmatists and not unicorn riders!


 
 It happens that KubeCon 2016, happened in a very intense period of my life, it was only 10 days that I have fully relocated to London, so everything was so.... 'new?' maybe.

Due to my developer background, I was mostly interested on use cases talks, rather than specific technical updates on the framework, which anyway I follow on the github page and the relevant slack channel.

I have to note that, the introduction of  Ingres, Deployments  and deamon sets, were very nice addition to the recent versions - and they are going to simplify the workload of many teams embracing kubernetes. My favorite part of Kubernetes is anyway the combination of Services/ Replication Controllers and load balancers (ingres) and how I can apply it on top of any legacy - statically design deployment.

It was more than obvious, that Kubernetes is picking up on adoption in various and different organizations, we saw examples from the New York Times, the Met Office Informatics Lab and the UK home Office (which by the way has a very impressive github page). Of course we had talks from RedHat which is already embracing Kubernetes through OpenShift. I think it is matter of time, that we are going to see even more examples in future kubecons and then the use cases track is going to be even bigger. 
 
Kubernetes is eventually picking up in the 'local' scene as well, and my bet is that in a year or so the examples and demand for 'related' skills is going to be  higher, I kind of did my own research while job searching here in the UK, and in many companies still the idea of 'orhecstrators or Platforms as a Service' is just an idea, or a research initiative, while many companies still evaluate containers, micro-service based solutions or..they live happy enough leveraging Amazon services :).

 
The event planning and execution was very nice, so congrats to the conference organizers. The premises of CodeNode in London were more than sufficient for that amount of people and the number of sessions. Maybe as a proposal for future KubeCons in the future is to consider adding some live streams? Also, I would love to see more sessions on use cases but with real 'code' and examples on the specifics of the deployments. In some cases I can understand that this was not possible, for example use cases like the UK home office, could not easily provide specific details. In some other cases a more 'technical' oriented session would be even more useful.

Last but not least, finally I got to get a proper Kubernetes sticker for my laptop!!! Yaay! So go Kube and I trully hope that soon enough I will be able to see kubernetes in my day to day work or projects.

Tuesday, March 08, 2016

Mind the gap



Όταν  το καλοκαίρι του 2004 αποχαιρετούσα  το όμορφο Canterbury (Kent) όπου και πέρασα μια αρκετά όμορφη χρονιά εντελώς διαφορετική απ' τα χρόνια του πτυχίου στα κατάμαυρα Midlands, δεν πίστευα ότι θα γύριζα για να μείνω μόνιμα. 12 χρόνια αργότερα, επέστρεψα και μάλιστα συνειδητά, αφού είδαμε και τι 'παίζει' σε κάποιες γωνιές της κεντρικής Ευρώπης.

Το Λονδίνο δεν είναι μια εύκολη πόλη, προφανέστατα δεν είμαι ο πρώτος που το γράφει ή το λέει. Άλλο όταν το ζούσα σαν φοιτητής - επισκέπτης, άλλο τώρα. Βέβαια το Λονδίνο μπορεί να γίνει αρκετά βολικό και ωραίο, ή σε έναν βαθμό 'βολικό' χωρίς αυτή την ενέργεια και το βάρος που σου ρίχνει, αν είσαι τυχερός και επιλέξεις να ζεις σε μια βολική και όμορφη περιοχή. Απ' τα δυτικά προάστια της Αθήνας, στα βόρειο ανατολικά του Λονδίνου, καλώς ήρθατε στο Hackney και μια τζούρα Islington και μία τζούρα Angel. Μπορώ να πω ότι δεν θα μπορούσαμε τηρουμένων των αναλογιών και δυνατοτήτων μας να βρούμε πιο βολική και ωραία τοποθεσία να ξεκινήσουμε το ταξίδι μας σε αυτή την χώρα. Περπάτημα στην δουλειά μέσα από τα κανάλια της περιοχής, περπάτημα πίσω, περπάτημα για το super market (αν και μόλις σήμερα έκανα την πρώτη μας δοκιμαστική παραγγελία στο Ocado), περπάτημα για να πας 2 σταθμούς πιο πέρα και να μην πάρεις το tube, περπάτημα στο κέντρο. Γενικά περπάτημα το οποίο δεν είναι κακό.

Δυστυχώς, παρόλο που κάνω το tour της Ευρώπης, ακόμα δεν έχω πέσει σε σπίτι που να έχει πραγματικό fiber@home. Οπότε όπως και στο Λουξεμβούργο, έτσι κι εδώ ADSL, ελπίζω τουλάχιστον το πακέτο των καναλιών της sky να αξίζει (μην βαράτε ήταν αρκετά φτηνή προσφορά). Όσο για το κινητό, έκανα μάλλον λάθος, επέλεξα την 3.co.uk με το unlimited data plan της, αλλά μέσα σε κτήρια δεν έχω σήμα. Κάπως σώζεται η κατάσταση γιατί έχουν μια εφαρμογή που ουσιαστικά σε συνδέει μέσα από VOIP κανάλι, αρκεί να έχεις πχ στην δουλειά Wifi.

Η εικόνα της Αγγλίας που είχα είναι αρκετά παλιά, αν και είχα έρθει αρκετές φορές μετά, τελικά συνειδητοποιώ τώρα που βιώνω την καθημερινότητα ότι κάνω συγκρίσεις με εμπειρίες και εικόνες που είχα σαν φοιτητής. Το πρώτο πράγμα που κατάλαβα (και το λέγαμε και τότε) είναι ότι το Λονδίνο δεν έχει σχέση με την υπόλοιπη Αγγλία. Ίσως πιο πολλές φορές ακούω ανθρώπους να μιλάνε σε άλλες γλώσσες (ακόμα και ελληνικά) παρά Αγγλικά. 

Για την ώρα γραφειοκρατικά τα έχουμε πάει καλά  οι διαδικασίες προχωράνε as expected - με ίσως το πιο σημαντικό να γραφτείς στο αντίστοιχο ΙΚΑ(?),  National Insurance Number. Πολλές από τις υποχρεώσεις του σπιτιού, βασικά όλες, δεν χρειάστηκε να πάω κάπου για να τις ολοκληρώσω - έγιναν online με συμπλήρωμα κάποιας φόρμας και βαριά βαριά ένα τηλέφωνο, όπως πχ να παζαρέψω ένα καλό deal για internet και tv. Μάλιστα η εγγραφή στον δήμο και η πληρωμή των πρώτων δημοτικών τελών  (council tax) έγινε σε 2 μέρες. Το βράδυ έκανα την αίτηση την επόμενη μέρα, ενεργοποιήθηκε ο λογαριασμός και μου δόθηκε αριθμός πληρωμής. Το σύστημα είναι απίστευτα efficient στο να στα παίρνει, ελπίζω να είναι αντίστοιχα καλό και στο να σου παρέχει πράγματα / υπηρεσίες.

Η εμπειρία στην δουλειά είναι ενδιαφέρουσα, δεν έχω ξανα-δουλέψει σε τόσο μεγάλο οργανισμό - πολυεθνική. Αρκετά ως υπεραρκετά συστήματα, πολυπλοκότητα, μεγάλα deployments, σύνθετες τοπολογίες. Ομάδα 24/7 development, όπου το τελευταίο commit σου είναι ορατό σε κάποιον (ους) στην απέναντι όχθη του Ατλαντικού ή σε κάποια άλλη γωνιά της Ευρώπης. Δεν μπορώ να πω ότι είναι mind blowing ότι βλέπω τεχνολογικά (αν και έχω μια λίστα με πράγματα και τεχνολογίες που θα μελετήσω), παρόλα αυτά είναι αλήθεια ότι πριν γράψεις ένα email, πριν αφήσεις ένα slack μήνυμα πριν κάνεις commit, rebase ή και merge request πρέπει να το σκεφτείς 2 φορές, μιας και όλο και κάποιος θα το δει, θα το τσεκάρει θα σε κάνει challenge. By the way είναι ο δεύτερος οργανισμός που κάνω join (με πρώτη τη Trasys στην Ελλάδα πριν σχεδόν 10 χρόνια που προσπαθούσε να δουλέψει έτσι), που βρήκα έτοιμο, στημένο continuous integration pipeline- από το git push του branch σου μέχρι και το integration test της εφαρμογής. Επιτέλους σοβαρότητα, χάρηκα ιδιαίτερα με αυτό.

Επί της ουσίας καμία δουλειά δεν είναι τέλεια, κανένα project στην πένα (ίσως να υπάρχουν εξαιρέσεις- ιδιαίτερα σε εταιρίες που παίζουν με τον ανταγωνισμό) παρόλα αυτά βλέπεις την διαφορά νοοτροπίας σε ότι έχει να κάνει με βασικά πράγματα τα οποία θα βοηθήσουν το day to day της ομάδας, θα τονώσουν την ποιότητα, ορθότητα και maintainability του project. 

Last but not least, κάτι που με κάνει χαρούμενο που βρίσκομαι εδώ είναι τα πολλά και διαφορετικά event κάθε εβδομάδα για developers. Αύριο μαζί με καλούς φίλους και συναδέλφους από την Ελλάδα, session για Microservices, την Πέμπτη διήμερο google kubernetes conference (το πρώτο στην Ευρώπη και είμαι αρκετά χαρούμενος που θα παραστώ) , την επόμενη εβδομάδα OpenJDK session κάπου άλλου, Java Champions meetup στο κέντρο του Λονδίνο, την ίδια εβδομάδα σε γραφεία της εταιρίας που δουλεύω ανεξάρτητο Agile Developer meetup μετά κάτι άλλο. Δεν σταματάει ποτέ. Νιώθω σαν παιδάκι σε κατάστημα παιχνιδιών δεν ξέρω τι να πρώτο διαλέξω, τι να δω και που να συμμετέχω! 

Βέβαια είναι ακόμα αρχή οπότε βλέπουμε, πάντως είναι μια αρκετά καλή αρχή, ελπίζω να συνεχίσει έτσι (αν και τα τελευταία χρόνια έχω γίνει επιφυλακτικός με τα πάντα ). 

Saturday, February 13, 2016

Leaving Luxembourg, lovely country, lovely people but a small and limited IT market IMHO.


So it is time, after 10 months living and working in Luxembourg, we are leaving. Packaging, arranging relocation, lots of emails, contracts, papers, some anxiety, waiting  - it just May 2015 again for me, when we decided to leave Greece. I wish this is my last relocation for the upcoming years, so wish me luck.

I have mostly kind words to say about Luxembourg. It is a small but very well organized country. You are in the center of Europe, you get to be exposed in an central European 'environment' in terms of different people from different countries. You get to visit other bigger countries in a matter of minutes (car or train). It has very good public services (like transport but it seems lot of people are lazy enough and don't use it), it is small so you are not getting overwhelmed by the city size. It seems that it is a very good choice for young families, lots of benefits from the government - (if you work of course) and a very very nice environment to live.

Of course there are some 'negative' points as well, very expensive country to live, high housing prices in case you want to reduce (or eliminate) your commute time. Single workers  with medium or low salaries will find it difficult to preserve a good quality of living (it is far better when you are a couple). Small opportunities in terms of jobs in certain markets, e.g the I.T market.

So things were mostly good, why have you decided to leave? 

I get to have a lot of people asking me this question lately. It is strictly related to job opportunities and career development in the IT sector, and IMHO, after working and searching for a job here (I had to) - I concluded that my career dreams will never come true + I wont be able to improve my profile and skills as the time passes by. I realized that at this stage of my life that no matter how nice a place is, if you don't have an interesting and fulfilling job no-matter if you get to live in a nice place you can be miserable from 9 to 6. For me that was something that was affecting my quality of life. Again, this does not imply that all of the people should feel or prioritize like that.

At the same time  the amount of time you need to spend in order to find an interesting and promising (job) is very big, along (of course there must be some interesting jobs) with the overall and actual opportunities out there :

So some things to consider - strictly personal opinion - so please do not get mad at me.
  • A large (I would say the largest almost 70%) portion of job opportunities in the country is related to 'consulting' (body shopping) for the various E.U organizations (namely the European Commision, DIGIT, Eurostat, the European Investment Bank and CDT ). Despite the fact that you might 'get lucky' and be placed in a new project within some of these organizations, the norm would be to just replace someone on an already established (some times legacy project), with a technology stack already predefined by a central committee, most of the times limiting your ability to actually get involved with the 'future of the project' or make your personal contributions. If you are the type of software engineer that you want to work with new technologies, you want to regularly have the opportunity to stand and contribute to the project, if you want to try new things or be exposed regularly to new things, this is not a job for you. On other hand, if you wish to lay low and focus on other aspects of your life (e.g family), follow low risk and sometimes not exciting project, work in a relaxed (or very relaxed environment), reduce the risk to be exposed in challenging situations where you will need to exercise or sharpen your skills, then yes this might be it. It's all about choices for me, and both of them are equally important and respected. 
  • Based on the above, I would like to make a note, since some of the agents - recruiters here, were eventually pointing  particular companies (those providing services to E.U institutions), as the reason that the job market can not be easily diversified in terms of opportunities and offers. As they claim, and is true, since most of the these jobs offer usually better salary packages comparing to the other opportunities in the private sector, most of the people choose to give up some of their career development needs or dreams for a far better salary and most of the times a more relaxed environment ;). So they claim that the rest of the market is not easily picking up on new talent , sometimes that is the reason that they decide to give up and not further develop teams and projects. Well I totally agree with their finding but there is a catch. Having gone through offers from both worlds (true private sector and EU related body shop jobs)  - I have seen that for some reason the real private sector here in Luxembourg is not offering very competitive salaries  (or they keep degrading in absolute numbers) if you take into account the very high cost of life of the country. So for example for expats (or not frontaliers) it is almost impossible to consider to join a firm here with a medium or bad salary offer - while it is very easy to join one of the many body shop teams and work for a European Institution with a decent salary. If you ask me this is very reasonable, there is no reason to have a career here without a decent salary package - you can not afford it simple as that.
  • The Banks! It is really funny, lots of people even now days they have stories to tell for people working in the local or international financial institutions 10 years ago, most of the stories are about their huge  salaries etc. Some people believe that those salaries and opportunities still exist. I might be wrong but  I have to say that the banking sector here is sort of shrinking - due to the recent law changes regarding  tax avoidance and other E.U provisioned standards. That means that their I.T operations  as well are shrinking and that means that a lot of institutions nowadays, try to recruit on non permanent basis. Most of the jobs are 'contractor' opportunities for certain amount of time - while the local teams are just satellites for other remote teams, many times off shored to (see eastern Europe or India) . I got to review - some offers on this sector and I was not very pleased neither with the actual jobs nor their salary package. Maybe I did not search enough or I did not get to know the right people, but IT jobs in banking here Luxembourg are not as they used to be and unless you are willing to work as a contractor in mostly legacy and old systems - then it is not the most exciting place to be (of course there must 1-2 exceptions hidden somewhere ).
  • The start-up scene. Yes Luxembourg is trying to introduce and setup an IT startup scene, and I truly hope that they will make it in the upcoming years - provided that they act accordingly and on a realistic path. Since the country is trying to diversify it's service offerings, from a country that was mostly known for the various financial / banking services and base for European organizations to a new IT fintech hub. This really makes sense and anyone would say that since the country has a vibrant financial sector (not only banks, funds, regulators, accounts, insurance institutions) - why not fuse some of this business expertise into the IT world and come up with some new breed of companies and offerings. Currently this is just the beginning and I truly hope in a few years time to be materialized in a true and vibrant market. Some of the thing they need to adapt are the following:
    • Make it even simple for new companies to start - and reduce their cost - currently there is still a lot of start up cost.
    • These companies, based on the very high cost of life, unfortunately they will need to offer competitive salaries in order to attract talent. There is no other way unfortunately - unless the cost of life falls (but this is unlikely to happen).
    • The government need to 'police' even harder IT companies that they still look out to leverage the  flexible tax and financial environment - and do not really want to invest on teams and do some innovation. Cases where companies come and go, because they could not save the expected tax amount of money - is not helping to build a solid start up hub.
  • True software development and innovation versus consulting.  While this might not be an accurate phrase, since you can do consulting and software development , what I am trying to say is that in order for the IT market to become more vibrant and interesting, the companies and organizations need to embrace the development of software solutions and innovative products - rather than relying on ready made stuff, procuring maintenance jobs that eventually do not really attract new talent.
As I said, please treat all the above as a personal opinion and nothing more. I might be wrong in some cases, maybe I should have to spent at least 2-3 years to actually really evaluate the 'potential' of the local IT market. I decided that I would not like to do this, but it's a personal decision based on my recent experience and my gut feeling. There are opportunities in here and talented people as well, you just need to spend a lot of time in order to find them, something that I was not willing to do - since I already believe that I decided to leave my country - late enough. I should have relocated from Greece 8 years ago- at least. If by any chance the market was closer to my standards or expectations, I do admit that I would not relocate, because as I already elaborated the place and the country are more than nice :).


Tuesday, February 02, 2016

συνεντεύξεις στην Premier League του IT - μια ιδιαίτερη εμπειρία (προσγείωση) - landing in London #job


Ο τελευταίος 1,5 μήνας, ήταν αρκετά έντονος και αγχωτικός, θα ήταν κρίμα να μην τον καταγράψω εδώ για να τον θυμάμαι. Δεν είναι μυστικό πια ότι αποφασίσαμε να φύγουμε απ' το όμορφο και 'βολικό' Λουξεμβούργο. Δεν θα αναλύσω σε αυτό το post τους λόγους, επιγραμματικά θα πω ότι είναι αυστηρά επαγγελματικοί. Δεν μείναμε ευχαριστημένοι με τις δουλειές, ούτε και με την αγορά και ότι potential είχε να μας δώσει για τα επόμενα χρόνια. Θεωρήσαμε ότι έπρεπε να μεταβούμε σε μια πιο μεγάλη, σταθερή και με ποικιλία σε προτάσεις αγορά, όπου θα εκτεθούμε σε μεγαλύτερο ανταγωνισμό, θα δυναμώσουμε τα βιογραφικά μας τεχνικά και θα μπορέσουμε να πειραματιστούμε με τα διαφορετικά industries. (όχι μόνο πχ ευρωπαϊκά έργα ή μόνο τράπεζες και αν σου αρέσει).

Εξετάσαμε την αγορά της Ελβετίας, συγκεκριμένα την Ζυρίχη. Έκανα κάποιες συνεντεύξεις, μιλήσαμε με μερικούς agent και recruiters, μάλιστα στο τέλος κατάφερα να πάρω και ένα offer, από μια γνωστή Ελβετική τράπεζα - παρόλα αυτά την απέρριψα, μιας και από την έρευνα μας, καταλήξαμε ότι επαγγελματικά πάλι θα υπήρχε κίνδυνος να κλειστούμε σε μια 'ιδιαίτερη' αγορά η οποία την συγκεκριμένη εποχή είναι μεταξύ 2 κόσμων. Τις τράπεζες  που μαζικά κάνουν development σε near shore περιοχές (Πολωνία, Ισπανία, Ουκρανία ήταν αυτό που άκουγα συνέχεια) και κρατούν μικρότερες ομάδες onsite - και τους 'made in Switzeland' software vendors όπου more or less θέλουν να μιλάς γερμανικά και να είσαι κοντινός 'τους', μιας και προωθούν μια λογική, software από ντόπιους σαν τα ρολόγια μας. Μπορεί κάποιοι που είναι ήδη εκεί να έχουν κάπως διαφορετική εικόνα, τουλάχιστον αυτή είναι η κατάσταση όπως την σημείωνα, μέσα απ' τις συνεντεύξεις και τις συζητήσεις.

Ο προορισμός μας, ήταν εκεί για πολλά χρόνια στο μυαλό μου, αλλά δεν είχα πάρει την απόφαση. Μετά το crash course εδώ στο κέντρο της Ευρώπης, αφού βγάλαμε τα συμπεράσματα μας,  και αφού ήδη μπαίνουμε αρκετά δυναμικά με δεύτερο relocation σε λιγότερο από 1 χρόνο - το Λονδίνο ήταν ο νέος και λογικά final destination.

Στην καριέρα μου έχω κάνει αρκετές συνεντεύξεις, τις πιο πολλές στην Ελλάδα, μερικές πιο παλιά στο Βέλγιο, μετά αρκετές εδώ στο Λουξεμβούργο και κάποιες για την Ελβετική αγορά. Δεν μπορείς να πεις ότι δεν έχω εμπειρία, σίγουρα όχι τεράστια αλλά δεν βγήκα τώρα απ' το καβούκι μου. Ότι εμπειρία και να είχα, ήταν σχετικά λίγη θα τολμήσω να πω, για ότι είδα στην προσπάθεια μου να φέρω το πρώτο μου landing job στην Αγγλία. Πώς βλέπεις το GIF πάνω, μια ανώμαλη προσγείωση που σου χτίζει χαρακτήρα, σε ανεβάζει σε γνώσεις (έστω και αν δεν το καταλαβαίνεις) που σου υπενθυμίσει ότι όσο καλός κι αν νομίζεις ότι είσαι, υπάρχουν εκεί 'έξω αρκετοί καλύτεροι από εσένα και πρέπει να τους ανταγωνιστείς'.

Θα ήθελα λοιπόν να μοιραστώ μερικά tip με όσους θέλουν να κάνουν το ίδιο ή το έχουν βάλει στο μυαλό τους. Δες το σαν μικρή βοήθεια, στο τέλος της ημέρας εσύ θα πρέπει να αποδείξεις πόσο καλός/καλή είσαι - δεν υπάρχουν σκονάκια στην διαδικασία.

1. Φτιάξε το CV σου, ιδιαίτερα οι ημερομηνίες μεταξύ θέσεων.  (βασικό πρέπει να το ξέρεις ήδη)

2. Φτιάξε το CV σου, μην προσθέτεις τεχνολογίες ή buzzword αν δεν μπορείς να τις υποστηρίξεις ή αν δεν μπορείς να εξηγήσεις τι κάνουν και πως τις χρησιμοποίησες. (βασικό πρέπει να το ξέρεις ήδη).

3. Θεωρείς τον εαυτό σου Java Developer? Javascript Developer? ή Χ  developer? τότε κάτσε και διάβασε, όχι για πλάκα, κάτσε και διάβασε όλα τα βασικά της γλώσσας που θεωρείς ότι είναι το μεγάλο σου προσόν. Όσο πιο senior θες να λέγεσαι τόσο πιο δύσκολες θα είναι οι ερωτήσεις σε θέματα γλώσσας. Πάρε παράδειγμα ερωτήσεις που κάνουν σε διάφορα certification- tricky questions. Μπορεί να ερωτηθείς κλασικά πράγματα όπως πχ για την equals/ hashcode μέχρι τα χαρακτηριστικά του CMS και G1 garbage Collector και το ποιο datastructure είναι πιο γρήγορο απ' το άλλο. Δεν μπορώ να καταγράψω όλες τις πιθανές ερωτήσεις, μπορείς να google- άρεις και θα βρεις αρκετές, το σημαντικό είναι ότι πρέπει να διαβάσεις, μην το πάρεις στην πλάκα. Αν είσαι Java developer τοτε δες, core java, concurrency, performance είναι hot topic. Επίσης μην ξεχάσεις να διαβάσεις σχετικά για test driven development.

4. Γύρνα πίσω στα φοιτητικά σου χρόνια και στα μαθήματα 1) εισαγωγή στους αλγόριθμους 2) applied mathematics (ή γενικά μαθηματικά). Πολλές συνεντεύξεις (όχι όλες) έχουν σαν core μέρος τους την εξήγηση, λύση γνωστών αλγοριθμικών puzzle ή ασκήσεων. Όσο πιο πρόσφατα σου είναι πράγματα όπως sorting algorithms, applied mathematics, πιθανότητες, γνωστοί αλγόριθμοι ή number generators τόσο πιο εύκολα θα μπορέσεις να απαντήσεις γρήγορα ή να πολεμήσεις ένα πρόβλημα. Πχ, στις μισές συνεντεύξεις που έδωσα, ασχοληθήκαμε με τα string palindromes. Το πρόβλημα μπορεί να είναι απλό, πχ να εξετάσεις μόνο αν μια λέξη είναι και να γράψεις τον κώδικα αλλά και ιδιαίτερα σύνθετο πχ να βρεις το max palindrome σε μια παράγραφο (δεν είχα ακουσει ποτέ για τον αλγόριθμο του Manaher να πω την πικρή μου αλήθεια έκανα κάποιες ώρες να διαβάσω όλη την λύση) . Το πιο σημαντικό σε συνεντεύξεις με τέτοιο βήμα είναι ότι, πρέπει να απαντήσεις σχετικά γρήγορα και να μην κολλήσεις. Σε αντίθετη περίπτωση θα σε κόψουν (το ξέρω δεν βρίσκω λογική αλλά θα το κάνουν - πιο πολλά μετά επί των διαδικασιών). Ένας τρόπος να πας καλά σε αυτό το στάδιο είναι να κάνεις εξάσκηση και να διαβάσεις, εκτός και αν έχεις μια φυσική τάση να λύνεις τέτοια προβλήματα ή διάβαζες ακόμα και στον ελεύθερο σου χρόνο, οπότε δεν θα έχεις πρόβλημα.

5. Έχεις γράψει ποτέ κώδικα σε χαρτί; Ίσως παλιά στο πανεπιστήμιο; Ε γύρνα πίσω σε αυτά τα χρόνια , πάρε αρκετές Α4 και μολύβι. Μάθε να λύνεις κάποια προβλήματα (όπως τα παραπάνω) με το να γράφεις κώδικα σε χαρτί. Είναι φοβερό να ανακαλύπτεις πόσο δύσκολο είναι να γράφεις κώδικα χωρίς πληκτρολόγιο και IDE. Πάλι δεν καταλαβαίνω 100% την φύση της διαδικασίας αλλά όπως και να έχει εδώ παραθέτω τα fact. Σε πολλές συνεντεύξεις θα σου ζητηθεί να γράψεις από κανονικό compile safe κώδικα μέχρι ψευδο-κώδικα. Θεωρώ ότι ένας καλός τρόπος να το συνηθίσεις είναι να το κάνεις μόνος σου στο σπίτι. Το να πας για πρώτη φορά σε τέτοια συνέντευξη και να μην το έχεις ξανακάνει τότε θα σε δυσκολέψει. Ανάλογα το seniority  της θέσεις θα σου ζητηθεί αρκετές φορές να σηκωθείς στον πίνακα και να ζωγραφίσεις διαγράμματα. Μπορεί να είναι system design, μπορεί class hierarchies μπορεί να είναι abstract system integration, πρέπει να έχεις μια άνεση να μπορείς να σταθείς στο χαρτί και στον πίνακα και να μην σε πιάσει κρύος ιδρώτας.

6. Φρόντισε να έχεις ελεύθερο χρόνο για να κάνεις ασκήσεις (assignments). Στα πρώτα στάδια, αρκετών συνεντεύξεων θα σου δώσουν ασκήσεις για να ολοκληρώσεις μέσα σε ενα εύλογο χρονικό διάστημα. Συνήθως είναι σχετικά απλά πράγματα, πχ  standard library development, ίσως μερικά παιχνίδια. Θα σου πάρουν από 1-3 μέρες. Το σημαντικό είναι ότι στο τέλος δεν πρέπει να δώσεις απλά την λύση, θα πρέπει να είναι άριστα documented, fully tested και φυσικά να κάνει αυτό που σου ζήτησαν.  Άρα πρέπει να βρίσκεις χρόνο για να τις κάνεις και να τις παραδίδεις στην ώρα τους. Από τις πιο ωραίες διαδικασίες θα έλεγα, μιας και πραγματικά χωρίς ιδιαίτερο άγχος μπορείς να δείξεις τι μπορείς να κάνεις και μάλιστα με το δικό σου στυλ. Δυστυχώς μερικές φορές το feedback που θα πάρεις πίσω δεν θα είναι αρκετά justified , άλλες φορές ναι - οπότε είναι και στην εταιρία και στον εξεταστή πολλές φορές. Σίγουρα μια συμβουλή είναι keep it simple, documented and tested και δώστο. Μην προσπαθήσεις να χτίσεις κάτι το ιδιαίτερα πολύπλοκο ή framework heavy, άσε που τις πιο πολλές φορές σου γράφουν στην ίδια την άσκηση ότι μπορείς να χρησιμοποιήσεις μόνο core language apis και τίποτα παραπάνω.

7. Δούλεψε με τους recruiters. Ένας από τους πιο γνωστούς τρόπους να βρεις δουλειά είναι οι recruiters, (head hunters). Ζήτα από φίλους και γνωστούς που είναι ήδη στην αγορά να σου προτείνουν 1-2 agencies που θεωρούν καλά. Θα σε βομβαρδίσουν αρκετοί, οι παραπάνω από τους μισούς θα σου πουν τα πάντα για να σου παρουσιάσουν την κάθε δουλειά σαν καλό fit για σένα, δεν θα είναι όμως. Από τους 10 που μπορεί αν σε πάρουν τηλέφωνο, 2 -3 ειναι αυτοί που θα καταλάβουν ποιος είσαι, τι ζητάς και που θα μπορούσες να είσαι καλό fit. Από την άλλη όταν είσαι στην αρχή θα αναγκαστείς και να πάρεις προτάσεις και από ανθρώπους που σε βλέπουν 100% σαν fee, δηλαδή τον στέλνω σε οποιαδήποτε δουλειά απλά για να πάρω εγώ το fee μου. Αυτό ίσως σε οδηγήσει και σε άκυρες συνεντεύξεις, ή κάποιες που δεν θα πάνε καλά, αλλά σίγουρα είναι μια εμπειρία.

8. Πήγαινε σε συνεντεύξεις. Όσο πιο πολλές κάνεις ιδιαίτερα με εταιρίες που ίσως δεν σε ενδιαφέρουν τόση  εμπειρία μαζεύεις ειναι καλύτερα για εκείνες που σε ενδιαφέρουν. Μάθε να διαχειρίζεσαι το άγχος, θα υπάρχουν στιγμές που θα κολλήσεις, θα υπάρχουν στιγμές που θα ντραπείς που δεν μπορείς να απαντήσεις κάτι που σου ακούγεται τόσο απλό, θα υπάρχουν στιγμές που θα σου κάνουν επίθεση παραπάνω από ένας εξεταστής και θα σε εκνευρίζουν με follow up ερωτήσεις ή θα έχουν κολλήσει σε κάτι. Θα υπάρξουν στιγμές που μετά από 2 και 3 ώρες συνέντευξης θα έρθει ένας ευγενικός κύριος και θα σου πεί ότι δεν τους κάνεις, άλλοτε θα σου πει ακατανόητες βλακείες , άλλες φορές θα σου δώσουν εξήγηση (δεν έλυσε το πρόβλημα γρήγορα, δεν μας αρέσει το πως δούλεψες στο pair programming, είσαι αρκετά μονο-θεματικός σε τεχνολογίες κτλ κτλ). Στην αρχή θα σε πειράξει, θα σου δημιουργηθεί ένας κόμπος στο στομάχι, μπορεί να απογοητευτείς, αλλά θα πρέπει να το ξεπερνάς και να περνάς στην επόμενη συνέντευξη. Κάτι σαν τους αγώνες του NBA για ομάδα, συνέχεια test, χωρίς break.


Επί της διαδικασίας.

Ομολογώ δεν βρήκα  τα πάντα 'λογικά'. Πολλές συνεντεύξεις που έκανα ήταν κάτι σαν τρίωρες εξετάσεις που σε περιμένουν με το όπλο. Όσο πιο πολλά λεφτά και senior θέση τόσο πιο πολλές πιθανότητες να δυσκολευτείς. Από την άλλη μου αρέσει δεν μου αρέσει είναι φανερό ότι το σύστημα στο Λονδίνο, έχει βρει έναν τρόπο να κάνει speed check σε μεγάλο αριθμό developers. Δεν γίνεται να το αλλάξεις οπότε το πιο πιο λογικό είναι να προετοιμαστείς. Δεν είναι ακατόρθωτο αλλά όσο πιο ενημερωμένος είσαι τόσο πιο ευκολο γίνεται - αυτός είναι και ο σκοπό τους post. Δεν είναι όλες οι εταιρίες ίδιες, ούτε όλες οι συνεντεύξεις γεμάτες παγίδες και time bomb tests, αλλά θα τις δεις και αυτές και ίσως σου χαλάσουν στην αρχή την ψυχολογία ή σε κάνουν να αμφιβάλεις για τον εαυτό σου. Είναι εντελώς ανθρώπινο και κατανοητό, μόνο οι βλάκες ή πάρλες (όπως ονομάζω) νομίζουν ότι τα ξέρουν όλα και μπορούν να κάνουν τα πάντα.  Σε κάποιες περιπτώσεις, εξαιτίας εμπειρίας μπορούσα να αφουγκραστώ ή να δω ότι τελικά η πραγματική δουλειά ή project δεν ήταν σε τόσο elite επίπεδο όσο η συνέντευξη. Δηλαδή τα πράγματα ήταν πιο normal, τσαπατσούλικα ή λίγο ανοργάνωτα απ΄ τι στα λένε ή σε ρωτάνε. Είναι και αυτό μέρος της διαδικασίας.

Overall

Ήταν μια ιδιαίτερη περίοδος. Διάβασα(με) αρκετά, αγχωθήκαμε, είχαμε καλές και άσχημες στιγμές. Στις άσχημες στιγμές μαθαίνεις να συνεχίζεις και να μην το βάζεις κάτω. Μαθαίνεις να λες στον εαυτό σου ότι δεν είσαι πάντα τόσο καλός όσο νομίζεις ή παράλληλα μπορεί να υπήρχε κάποιος καλύτερος από εσένα. Πάντα υπάρχει κάτι να μάθεις και στην αποτυχία. Όπως λέει και ένας σοφός 'φίλος' μαθαίνεις να κρατάς το cool σου και να μην σε παίρνει από κάτω.

 Στις καλές στιγμές τις νιώθεις νικητής και νιώθεις περήφανος που πέρασες 2-3 rounds και τελικά κάποιος σου κάνει πρόταση για να σε εντάξει στην εταιρία του/ομάδα. Νιώθεις ότι έπαιξες στα trial της μεγάλης κατηγορίας και είσαι μέσα, θα σου κάνουν μεταγραφή, ανεβαίνεις στο πρωτάθλημα με τους καλύτερους.

 Υπήρξαν περιπτώσεις που πέρασα συνεντεύξεις και είχα πολύ καλό feedback και πρόταση, όταν δεν το περίμενα, και υπήρξαν περιπτώσεις που έλεγα ' εντάξει εδώ θα είμαι άνετος τους έχω - και τελικά δεν τα πήγα καλά'. Θυμήθηκα τόσα πολλά βασικά πράγματα που είχα ξεχάσει, και στο τέλος αυτής της διαδικασίας τεχνικά βγαίνω πολύ πιο έτοιμος και διαβασμένος όσο ποτέ άλλοτε τα περασμένα χρόνια. Ναι κύριοι μέχρι και 2 βιβλία για Spring κατανάλωσα σε μερικές εβδομάδες, γιατί έπρεπε να το κάνω.  Σίγουρα την επόμενη φορά που θα ξαναβγώ στην γύρα  θα είμαι με ακόμα λιγότερο άγχος και πιο καλά προετοιμασμένος. Το μόνο σίγουρο είναι ότι θα το ξανακάνω, μιας και το Λονδίνο είναι η χαρά του προγραμματιστή, ότι ζητήσει η ψυχή σου, ότι έχεις ονειρευτεί από business, τεχνολογίες, μικρές μεγάλες ευκαιρίες, είναι εκεί για σένα, σε περιμένουν αρκεί να πας με σοβαρότητα, διαβασμένος και μετρημένος - και να βρεις την επόμενη σου ευκαιρία που θα σε φέρει πιο κοντά στα τεχνολογικά και επαγγελματικά σου θέλω. Για  αυτά τα θέλω και τα όνειρα, αποφασίσαμε να ξοβολευτούμε από εδώ που είμαστε και να κάνουμε μια προσπάθεια να τα κυνηγήσουμε, τώρα λίγο πιο σοφοί και πιο έμπειροι από πριν.

Εύχομαι σε όλους καλή επιτυχία και  τα λέμε πια στο Λονδίνο. Ίσως ένα μικρό παράρτημα του JHUG να πρέπει να ξεκινήσει εκεί, με έμφαση στην κατανάλωση σοβαρού καφέ!



*update

Μια ενδιαφέρουσα τριλογία - από έναν σοφό φίλο για την διαδικασία.
Επίσης ένα σχετικό άρθρο κι εδώ από την Σοφία (digital era).