Maybe inappropriate methods of recruiting software engineers

 

After reading Who is hiring thread every month, I summarize some maybe not good methods of recruiting software engineers:

(1) No words, just a Data Structure/Algorithm quiz.

I am not arguing whether Data Structure/Algorithm quiz is a suitable method since there is already a lot of debate on this topic. What I think may be bad is after you submit your CV, you receive a link which requires you register, and complete a Data Structure/Algorithm quiz in a limited time. You don’t know if you CV is really screened or not. Then after you spend some hours to finish the test, maybe there is not any message at all. You can think the quiz grade isn’t good enough, or your skills in resume doesn’t touch them, but all in all, no one tells your answer. The whole process is over even you don’t say one word to the recruiter!

Both recruiter and applicant are equal in recruiting process, so a general discussion is better than just throwing a quiz link. Applicant also needs to know about what the job is and whether it is worthy for him/her to continue the whole process. BTW, I think this comment really makes sense.

(2) No any response after sending application.

By default, if you doesn’t receive any response after submitting job application, you are rejected. Sometimes, the company employee’s mail address is in the recruit information with friendly words such as “Let us have a talk if you are interested …”. But when you really send query to employee’s mail address, there is the possibility that the employee won’t answer you. Personally, I think it is a good etiquette to send a refuse notification to applicants even if it is a auto-generated mail. Are you really so busy that can’t respond a mail?

BTW, there is another scenario that after some rounds of interviews, there is no any message from the company. You can refer this comment.

IMHO, the companies can gain a good fame if they pay attention to above points. Trust me!

Be cautious of upper/lower case letters about function in Haskell

As a layman of Haskell, I find being cautious of upper/lower case letters help me a lot to get understanding of functions:

(1) Function name doesn’t begin upper case: it can be lower case (e.g., sqrt) or special characters (e.g., +).

(2) Function has type. Let’s define a new function, incInt:

incInt :: Integer -> Integer
incInt a = a + 1

The above identifies incInt‘s type is “Integer -> Integer“: Integer is type in Haskell, and types begin with upper case. Check another built-in functionsqrt:

Prelude> :t sqrt
sqrt :: Floating a => a -> a

The “Floating a” which is in the left of => is called type constraint: Floating is typeclass, and its values are types which satisfy this typeclass (Floatingtypeclass contains both Float and Double types); a is a type variable which can be any type which belongs to Floating typeclass.

Takeaway:
a) Function name can’t begin with upper case letters.
b) Type, typeclass, type variable occur in function type definition. Type and typeclass begin with upper case letters, and type variable need to begin with lower case letters.

Set up Haskell development environment on Arch Linux

Follow this post, install stack first:

# pacman -S stack
resolving dependencies...
looking for conflicting packages...
......

At the end of installation, it prompts following words:

You need to either 1) install latest stable ghc package from [extra] or 2) install ncurses5compat-libs from AUR for the prebuilt binaries installed by stack to work.

So install ghc further:

# pacman -S ghc
resolving dependencies...
looking for conflicting packages...

Now that the environment is ready, you should modify your own ~/.stack/config.yaml file:

# This file contains default non-project-specific settings for 'stack', used
# in all projects.  For more information about stack's configuration, see
# http://docs.haskellstack.org/en/stable/yaml_configuration/

# The following parameters are used by "stack new" to automatically fill fields
# in the cabal config. We recommend uncommenting them and filling them out if
# you intend to use 'stack new'.
# See https://docs.haskellstack.org/en/stable/yaml_configuration/#templates
templates:
  params:
#    author-name:
#    author-email:
#    copyright:
#    github-username:

For example, add name, email etc.

Then follow this link to create a simple program:

# stack new hello
# cd hello
# stack setup
# stack build
# stack exec hello-exe

You will see “someFunc” is outputted.

BTW, you can also use ghc compiler directly. E.g., write a “Hello world” program (Reference is here):

# cat hello.hs
main :: IO ()
main = putStrLn "Hello World!"
# ghc -dynamic hello.hs
# ./hello
Hello World!

That’s all!