How looks process of finding job as software developer part 9 : HOMEWORK (Tests, Task ,etc.)

 

WARNINGS:

 

This is a NOT a professional advice.It based on my personal experience only and resources that I read on the internet.It will contain many grammar mistakes.Please drink double espresso and energy drink as an article is long and boring.

 

Homework (Tests, Task,etc.)

 Quite often in IT sector, you will ask to do:
  • on-line test
  • on-line task
  • off-line task

ONLINE TEST

Some companies doing online tests to check your knowledge and it is pointless as most of them are copied and pasted from the internet. I had few interviews, where questions were the same and it very similar …order. After a quick research, I found few websites, that provide answers to questions. Maybe they check how quick you can find the answer on StackOverflow.com)? Usually, these questions ask about basics of language and framework and few ‘tricky’ questions.

Easy to pass, usually and pointless.

OFFLINE TASK

The good news is that tasks are more interesting to do. Especially, if you like programming.

They are usually not too hard BUT make sure that you do 1 task at the time and 1-2 per day. Why? If you will have many tests over and over again then you will more tired you are a focus on finish task rather than finish refactor and polish. It gets harder when you currently working.

If You just graduated, you need to make sure that you learn and practice following basics:

  • Know all funky stuff about Java (read many tricky questions about Java ) or your main language.
  • If you struggle with reasonable Code style follow well known open source projects code style like this:
  • Design Pattern (Head First book is the best for start or Gang of Four if you are orthodox programmer;) )
  • TDD (Good way to practice and learn to test with JUnit.).
  • Knows basics command in Windows and Linux.
  • Knows shortcuts in IDE.
  • Ensure you write README.md (or README.txt ) with how to run program and tests

What is important about the task:

  • Should use right solution for the task. For example do not use list, where map is better (i like using lists and made this mistake) or don’t use bubble sort for sorting (I have done it too 😉 )
  • The project should have a reasonable structure.
  • Code must be formatted.
  • The code should be simple.
  • Code style should be consistent. Remember! There are lots of randomises in what person who checks your code likes. There are only two things which you can do:
    • Check if the company has an open source project on GitHub, BitBucket and etc. if yes, download and follow it their code format and style.
    • Ask for what you should focus on and ask how looks they code style.
  • Create Readme.txt to explain how to run the code.
  • Prepare ‘template’ for new projects.
  • Try to apply patterns in right cases.

Your process should look less like that:

  • Prepare Energy drink, coffees, beers or other beverages. Prepare some snacks .(energy bar or breakfast bar are the best).
  • Read question.
  • If you don’t understand anything. Ask for clarification.
  • Design your application.
  • Write tests that will answer questions and tasks.
  • Write a program that passes all tests.
  • Double check it.
  • Write readme how to run a program.
  • Check if your instruction in readme works.
  • Send it.

ON-LINE TASK

(hackerrank.com and so on)

It is a great idea but very troublesome in practice. They similar to an offline task but they are few extra points:

  • You need practice on that site because writing in the online editor is full of quirky problems.
  • Ensure you are in place where internet connection is stable。
  • I prefer to write in IDE and then copy to the online editor.
  • They can be time-based so be careful. I forgot once about it and let’s face it my result wasn’t impressive.

CONCLUSIONS

  • Limit numbers of test to one at the time and 1-2 per day.
  • Read question few times. If you don’t understand anything, ask for clarification.
  • Prepare your process (my process is above, but treat this as an example, not something that you should follow blindly) and follow it.
  • Make code simple, well formatted, sensible structured.
  • Don’t be surprised, if 2 companies will have opposite opinion about your code.
  • Always ask politely for feedback.
  • Always upload your result even if you think rubbish. Always add a comment, if you believe that something could be improved.
  • if You find any company’s source code, follow their code style.