Monday, April 11, 2016

Challenge yourself, get some experience as a bonus.

Having done more than a bit in the way of setting up a development environment and teaching yourself some java and selenium webdriver, it is time to get your hands dirty on more Java.
As it turns out, Selenium Webdriver itself is not so very difficult, it is the Java surrounding it that makes it hard to work on, to work with. Sometimes you need to check if something already exists and if not, create it. You will need to work with variables, with loops, arrays and all other kinds of seemingly basic stuff that you somehow still need to know.

In my last post, I explained how to gain the basic knowledge on Java and teach yourself all this. But now what? Having been doing other things / stuff for a decade means I am nowhere good enough to consider myself a valuable part of a team of developers after three months of self-study on java. I need practice, it needs to be somewhat of a learning curve and it needs to be somewhat anonymous so nobody can laugh at my pathetic attempts on coding.

Lucky for us, there are a ton of websites to aid us and I want to dive a bit deeper into a few of them. In the java post I already mentioned a few and I'll repeat them here:

Kattis. This is a collection of coding challenges, going from not so complex to really frigging hard. You gain points which is fun as you can pass others. I am currently hovering around rank 1000 and my code is getting sloppier every time I try something. This is most often because I have no idea how to approach a problem which can be caused by having a lack of knowledge on Java. You can use other languages as well, the interface is very useful and they have a ton of problems you can solve. Go here if you want to race others for imaginary internet points.

Hackerrank is similar to Kattis in some ways, such as points and ranks but with a few very nice additions and some things lacking. The idea is similar, but it is split up in domains that allow you to earn points each instead of one problem to solve in the language of your choice. Nice if you want to focus on other things than just math problems and Kattis has many of those.

Project Euler is very obviously not designed but it is well written and has another 545 problems you can work on.

Topcoder seems nice but has a hard time actually offering beginner challenges. This is nice if you have more experience and want to know how good you are compared to others.

These are websites that allow you to upload your solution, some snippet of code, after which you are a bit better at writing short bits of code for a very specific purpose.

Looking at the goal of all this is to land a job doing something we like to do and doing it for money in such a way that we still like what we are doing. A job you enjoy will leave you energized at the end of the day which in turn will make you happier which in turn will make your family happier which will make this world a better place. Just try to enjoy your job, if not for yourself, do it for the puppies.
To get that job that we expect to enjoy we need to prove to a prospective employers that:
  • We know what we are talking about
  • We can work as a developer in a team
  • We have some real experience
While currently there is a huge global shortage of technical IT people, developers and testers alike, you still need to have some merit to land a job doing this. 
The best way to gain experience is write actual code for an actual project and there are several ways to go at that. Let's get the first one out of the way:
  • Land a job as a very junior developer at a company willing to hire a mid career guy with no experience. Yeah, not likely unless you are happy to work for free which is fine if you have a ton of savings and no family to support.
  • Do all the challenges mentioned above and open up your repo on Github. This will help a bit but you still have to prove you can work in a dev team writing useful software.
  • Contribute to open source projects. There are guides here and here and a website called CodeTriage here. 

Because we are learning Java with test automation as the goal, it should not be to hard to start somewhere. In fact, I am building a testset for an open source project myself, you can find the repo here on Github. It needs work, feel free to contribute :-)


No comments:

Post a Comment