About hiring new people Erik, 06 Apr 2011
One of our partners today pointed out this blog post as good indication of what younger people on the job market look for in a prospective employer.
I initially wanted to reply to the email from where I got the link to continue the discussion but then I thought I would put my comments here.
Emphasis and usage of Unix
I was really glad to read about this as we mostly use Ubuntu here at Codeborne. (There is one Windows machine and one Mac Mini as well.) I would be extremely happy if the Estonian CS majors would also say: "we tend to steep ourselves in Unix and its philosophies". However this seems not to be the case. The majority is very Windows-centric and the ones who use a Mac do it mostly for aesthetic reasons. I haven't heard that Estonian universities teach how "Unix encapsulates, and indeed was built on, many core principles of good software design". This is sad.
Regarding the interviewing process
I have done my fair share of screening and interviewing possible candidates at my previous employer. While it is good to have a chat with the person face-to-face, I still believe that code is the king. We asked all the candidates whose CV looked even slightly promising, to write a solution to a relatively simple problem as a homework. And believe me - most of the candidates were rejected based on this homework. The problem wasn't that they didn't know how to use a specific API. Rather they didn't have a clue about good design, clean code or the basics of unit testing. So while it is nice to have a discussion about some hot framework or technology, if you cannot write good code - I won't hire you.
And some of the younger ones who made it through to an actual technical interview had a relatively good understanding how to write a web application while needed a lot of help trying to figure out how many bytes a 32-bit integer takes up.
Being up-to-date with technology
While memcached, nginx, node.js, jQuery, varnish, CDN, and Amazon Web Services make a good discussion topic, the majority of good applications written today do very well without most of these technologies/frameworks. I remember the times when CORBA, RMI or SOAP were hot topics. But most of the applications that were written around that time and are still working today are not using these technologies.
So while there is absolutely a place for new things and it is a good sign if you know about them, I am not sure I would like to hire a kid fresh-out-of-school who is eager to use all the buzzword technologies on the first project he is assigned to.The homework assignment that I mentioned earlier specifically stated that you cannot use any external libraries (besides JUnit). We put this requirement in place so that we could understand if you can use the basic building blocks which in many cases are just enough.
Jarmo Pertman 2011-04-06T18:29:46.825Z
Good post! I have no tunnel-vision about Windows being any better than other OS-es while working most of the time on Windows. I might even consider to start using some other OS in the future. Maybe. I just can't make up my mind, which one to choose. I can't fully agree that Unix and software developed for it represent always good software design.
Take Git for an example. If it's such a good piece of software then how come it cannot deal with CRLF/LF line endings properly without having to configure anything on any platform? You may also take my post "Is Linux As Secure As You Think?" (/2011/03/04/is-linux-as-secure-as-you-think.html) as an example of a bad software design. There are many more examples.Of course there are also good things coming from Unix.
Best of all would be the shell and tools in it.But it's relatively easy to get most of these things working on Windows too by using unxutils or cygwin. I can even install Vim on Windows (it's best there is, of course :P). Yes, there's still a lack of a good shell. If you're a proficient Ubuntu Linux user then you have probably switched your default shell from bash to zsh too. At least i would have done that :)
And on top of that Ubuntu is just plain ugly aesthetically (you may compare it to OS X or Windows and you will get the same result either way - that is if you're not totally blind). That's one of the reasons why OS X is currently very popular in the hearts of many well-known start-ups. Beautiful environment just allows you to create more beautiful things. This is totally true. But Xcode just went from free to paid. That's not good news for developers.
Yes, starting development on Windows might need more work compared to Ubuntu/OS X due not having most of the needed things already pre-installed.I can still set up my full stack Ruby development environment in Windows in less than a 30 minutes.Still, i wouldn't say that any of the OS-es are better in every aspect than other - they all have their quirks. I might be wrong, of course.And when it comes to these homeworks Erik mentioned, then the most interesting thing is that it is possible to create so complex solutions to so simple problems that it just blows me away. Unfortunately it doesn't matter if Unix or Windows is taught in school in these circumstances.
Knowing new technologies is always a big plus, also for fresh-out-of-school kids, since it shows that this kid has interest into topics beside of topics teached at schools. Unfortunately majority of schools (at least in Estonia) doesn't teach anything about current high-tech tools.