This entry is dedicated to inform everyone of every possible way (that I know!) of preparing for changing jobs when it comes to dusting off their skills and obtaining new ones. Aside from one section (“Stage fright?”), I won’t tell you how to conquer your psyche or make up your mind whether it’s time, rather I assume you’ve already done so and are now looking for “how” rather than “why”.
I’ll discuss sites that help get in shape, show ways to practice and show ways to measure your progress. In a nutshell – plan what to focus on, assess yourself, act on findings / practice!
Oh, and this was sitting as a draft for quite too long – being a perfectionist doesn’t help getting things out quickly!
First things first
Think what you’re after. IT is getting broader by the year, no need to try to be an expert in everything, especially if you ain’t gonna enjoy working in given area. Select a domain, max two, and stick to them. Emphasize your CV that way, add tag-line or profile that shows which way YOU intend to take YOUR career. Sift through offers meant for you and occasionally perhaps something else.
Second, once you know what you’re after, dust your relevant skills off. Or acquire them.
How good am I? Competency matrix
I first started typing “how bad am I” but why should you get down? It’s better to know your strength than weakness and hone that. Improve weakness only to “barely OK” level, don’t waste time on making yourself average. Averages don’t land anyone dream jobs, ‘incredibles’ do.
So, how good you are? Use Joseph’s excellent competency matrix to see – and find where you’ve rusted! Because most likely you have some places you used to be better than you are now – better as “more in shape”. Or where you’d use becoming better! Unless, like José, a friend of mine, you make a point of honour to have one or two job interviews every half a year – which I intend to do from now on as it’s good way to keep in shape in areas where your daily work doesn’t reach.
How and where? Choose what you like. Honorary mention goes to BlackBeltFactory, website closed by SkillSoft despite being quite nice and operational. Also, an obvious while really great solution, become an open-source committer!
I’ve come to know Project Euler via @ags313 and @ktosopl. But imagine my surprise when nicest summary came unexpectedly at my door, as I was writing this and wondered what to say. Quoting Heinz Kabutz’s last email from 2014:
Today is the last day of our GregorianCalendar.YEAR. As I was working
through my “todo” list from 2014 to try and clear everything, I found
a reference to the Project Euler website (https://projecteuler.net/).
The questions are a combination of maths and computer programming.
Lots of fun! So much fun in fact that I’ve spent the last two days
working through the first 50 questions.
Here is how Project Euler will help you:
1. You will get to solve some tricky programming tasks.
2. You will need to think about performance, especially complexity of
the algorithms that you are using.
3. You will get good practice if you ever need to go for a job
interview. Some of the questions sounded like something that a
brainiac interviewer might throw at you.
4. You will get to improve your brain by exercising it. Use it or
lose it. A good reason to go neither into management nor politics.
5. You don’t have to solve the problem in Java. You can use a piece
of paper and a pencil. Of vi. I solved some of the most difficult
questions with vi.
As I mentioned before, I solved the first 50 questions in two days,
whilst also doing other things. Some of the puzzles were easy to
solve and others took a longer time. Whenever I could, I used the
Java 8 streams and syntax. That also was good practice for me. Some
of the tasks seemed impossible to solve with streams. Others were a
perfect fit, and even helped me solve problems using parallel streams.
I was quite surprised that less than 7% of people who registered on
the site had completed 50 questions. I’m pretty sure that anyone
reading The Java Specialists’ Newsletter will be able to beat that
Unlike some on-line tools to test developers (looking at you DevSkiller), Codility has option for programmers, in shape of lessons.
Submit, go through lessons, participate in challenges. Easy as that.
If you need hard cash to motivate your practice, seek no further. TopCoder is a website where folks wanting job done post assignments, aka challenges, and site members try to code them. In steps:
- create an account (one-time step of course)
- register for challenge that you want
- read requirements, clarify doubts via questions, code, submit for review, make fixes
- collect payment after submitting tax form
While I haven’t tried, it seems interesting. I don’t know how much active it’s now compared to some time ago, when it was quite a hit. I only found 8 open Java challenges today, out of 78 total dev challenges.
Conduct mock interviews
Do you know a person that works some-place you want to work? Does what you want to do? Ask that person for a mock interview, with brutal assessment of your skills. Ask them to give you a coding task or a problem to solve. Face it when they time you.
While practising and dusting off skills is also refreshing (and important enough to warrant it’s own section) you don’t want to stop there.
You are seeking a new beginning. It helps when you do so with new look (some even say it helps develop new mindset). Take a look in the mirror. Perhaps a new haircut is what you need? Sift through your wardrobe. Not just for suit, but you may want to actually get yourself a new pair of pants. Perhaps business casual, perhaps geeky, whatever it is, you need to feel and look good in it. First impression matters, clothing and haircut help, it’s proven.
Refresh also your on-line presence. CV is an obvious given, but don’t stop there! Blog, social networks (professional or otherwise), GitHub or BitBucket accounts… Highlight or add material aligned with your desired profile.
Start reading technical blogs (if you stopped). Return to meetings with other similarly inclined people. If there’s no group you know (in Kraków? unlikely), start your own.
To be really well-versed as a programmer, I suggest Software Craftsmanship Kraków. The number of things I learned there is simply incredible.
If there are days you don’t have time or energy for coding practice, watch videos:
- GeeCON: https://vimeo.com/geecon
- Polish JUG: https://vimeo.com/polishjug
- InfoQ: http://www.infoq.com/java/
Number of really good people have that. For number of good (and even larger number of bad) reasons. No matter. First – that’s where all that practice and other preparation comes in. You spent time on it. You gained or refreshed knowledge, skills and dusted off analytical thinking, deduction and overall reasoning. Damn, you even look better (on- and off-line ;-P). This matters.
Second – more mock interviews. Deliberately choose people whom you consider better than you and ask them not just to interview, but to grill you. Ask them to be harsh, unfriendly and overall difficult. Higher bar during training means easier time during real thing. Especially with omnipresent political correctness, where a recruiter can’t be unfriendly (even if you are), can’t leave early and must sit in a room for whole duration of an interview (even with a person not wanting the job and completely unprepared, or not able to answer easiest question).
Third – the market is on your side. If interview A fails, go to interview B. Then C. Then… and so on. Realize that. Take a look around. Count job offers for IT people. We’re really blessed, not just lucky, but blessed.
Fourth – realize how good you are. Show yourself your strength. Talk at a local JUG or other forum for passionates. Write an article about latest hassle you dealt with. Commit latest changes to your pet-project… or start one, just for fun (practice, right?). Refresh the blog with long put-aside content. Do something, collect feedback with honest openness for criticism. Tell others that you need their honest appraisal whether what you did is worthwhile or whether they’d want improvements. Tell them you want to rate yourself, improve, see your strengths. You may well be surprised by their answer.
If all above fails and you still are afraid
Fifth… if all above fails, just pick one or two random (or even “I don’t wanna work there”) companies and go there with reckless abandon. Don’t give a damn whether you fail that interview, just go out there “in the wild” and see how you fare. Use those interviews as a probe, to see what you lack, what the questions were, etc. Note things down for reference. If you get a job offer… perhaps take it. Or keep it as plan B. This is a great way to boost confidence. If you don’t, that’s even better.
I’ve had number of discussions about it to counter some common thoughts. Thus, I’ve wrote up “Why you should do throw-away interviews?”
Prepare your own questions
Research your future work-place with your goal in mind. Prepare a list of questions for your interviewers, be it tech-people, HR or managers. Note down the answers. Request time for your questions – or even let them know in advance what you want. Still, I’d do so only for questions where answers will really need time. Answers given on the fly very often reveal something interesting about the company.
This is also incredibly good move to stand out among others. I’ve done a few surveys in the past, among both technical and non-technical recruiters and sourcers and they all said that questions are welcome, as they also reveal things about prospective employees. Also, candidates with good questions are better than those without.
Good luck out there! Write what I missed or what was helpful please. 🙂
For your convenience:
- Competency matrix: http://sijinjoseph.com/programmer-competency-matrix/
- Project Euler: http://projecteuler.net/
- BBF closure: http://xcafebabe.blogspot.com/2013/01/java-blackbelt-factory-shutdown.html
- Codility for programmer: https://codility.com/programmers/lessons/
- TopCoder for devs: http://www.topcoder.com/community/development/getting-started-in-development/
- TopCoder, currently active Java challenges: https://www.topcoder.com/challenges/develop/active/?technologies=Java&pageIndex=1