changeset 169:60cfca94c50a

Do I satisfy recruitment requirements.
author Oleksandr Gavenko <gavenkoa@gmail.com>
date Wed, 14 Nov 2018 00:42:31 +0200
parents 20366629ebd2
children bb63c0acc335
files df99abdf-ce79-44af-8f6a-1044dc3f74ad/index.rst
diffstat 1 files changed, 229 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/df99abdf-ce79-44af-8f6a-1044dc3f74ad/index.rst	Wed Nov 14 00:42:31 2018 +0200
@@ -0,0 +1,229 @@
+=======================================
+ Do I satisfy recruitment requirements
+=======================================
+:created: 2018-11-13 21:05
+:updated: 2018-11-13
+:tags: interview
+
+I watched interesting video of Bryan Cantrill (author of Solaris dtrace) about cloud platforms and
+interested in his other writing. In his blog he brought topic about his interview process. I am
+curious how good I fit his expectation.
+
+Here is Bryan's blog post `Assessing software engineering candidates`__.
+
+__ http://dtrace.org/blogs/bmc/2018/10/05/assessing-software-engineering-candidates/
+
+.. note::
+
+   software engineering is an almost paradoxical juxtaposition of collaboration and isolation:
+   successful software engineers are able to work well with (and understand the needs of!) others,
+   but are also able to focus intensely on their own.
+
+I work on customer satisfaction. I like quiet space.
+
+.. note::
+
+   Aptitude [...] it in fact leads down the primrose path to pop quizzes about algorithms seen
+   primarily in interview questions. (Red-black trees and circular linked list detection: looking at
+   you.)
+
+I had a question about loop detection in a circular linked list and I pointed interviewer to my
+`post about loop detection with some maths behind`__.
+
+__ post-bd51fb68-e005-11e6-8ee5-485b39c42d0f.html
+
+.. note::
+
+   Aptitude [...] These assessments of aptitude are misplaced: software engineering is not, in fact,
+   a spelling bee, and one’s ability to perform during an arbitrary oral exam may or may not
+   correlate to one’s ability to actually develop production software
+
+I quite agree on this. I has been asked to reverse linked list in place in online collaborative
+environment during interview. It took 40 minutes, 30 of them to figure out that I forget to print
+result of swapping::
+
+  reverse(list); // should be list = reverse(list);
+  print(list);
+
+Those lines was off screen, I concentrated all efforts to find bug in implementation. This
+experience is described in `my previous blog post`__.
+
+__ post-ed00c7c3-a71e-4ed2-bfbb-ff2ac918960e.html
+
+.. note::
+
+   As such, candidates should be asked to provide three samples of their works: a code sample, a
+   writing sample, and an analysis sample.
+
+So let's look into this.
+
+.. note::
+
+   Code sample [...] Candidates should be guided to present code that they believe best reflects
+   them as a software engineer. If this seems too broad, it can be easily focused: what is some code
+   that you’re proud of and/or code that took you a while to get working?
+
+I has written `AI for solving 2048 game`__.
+
+__ http://2048.defun.work
+
+GUI, swipe support, heuristics, BFS/DFS, etc are not important in this project. All those are in
+stay of direct naive implementation.
+
+But `board.js`__ contains really production ready efficient code.
+
+__ http://2048.defun.work/board.js
+
+There are several implementations board operations I used to study browser JS performance. Loops are
+unrolled. There are tricks for packing board by bits into words for memory efficient cache and
+function that search for uniformly random empty cell in a board.
+
+I spotted `extremely rare bug in implementation`__ which I caught by running of two implementations
+side by side in wrapped object.
+
+__ http://hg.defun.work/2048-js-ai/rev/c6d9b84d9391
+
+.. note::
+
+   Writing sample [...] Writing good code and writing good prose seem to be found together in the
+   most capable software engineers. That these skills are related is perhaps unsurprising: both
+   types of writing are difficult; both require one to create wholly new material from a blank page;
+   both demand the ability to revise and polish.
+
+You are in my blog. Welcome!
+
+Alternatively take a look to https://stackoverflow.com/users/173149/gavenkoa or to
+https://www.google.com/search?q=%22Oleksandr+Gavenko%22+OR+gavenkoa
+
+.. note::
+
+   Writing sample [...]
+   * A block comment in source code
+   * A blog entry or other long-form post on a technical issue
+   * A technical architectural document, whitepaper or academic paper
+   * A comment on a mailing list or open source issue or other technical comment on social media
+
+Above links should be enough. I don't have academic papers so far ((
+
+.. note::
+
+   Analysis sample [...] Part of the challenge of software engineering is dealing with software when
+   it doesn’t, in fact, work correctly. At this moment, a software engineer must flip their
+   disposition: instead of an artist creating something new, they must become a scientist,
+   attempting to reason about a foreign world.
+
+While I enjoy troubleshooting and this is my most strong skill at current position I always worry
+that it takes too long and finding something deep inside framework after several hours of debugging
+is not rewarding.
+
+I like to notice that something sucks or people are morons. Maven sucks (too verbose, too
+restrictive) & Gradle sucks (too complicated, I found myself in Gradle internals several times). You
+know that.
+
+I'd probably refuse request to make some "stupid" writing on something for demonstration purpose.
+
+.. note::
+
+   Formal education [...] The completion of a formal education in computer science is much more
+   important than the institution.
+
+Have no one.
+
+.. note::
+
+   Formal education [...] In other cases, it’s even more nuanced: there have been many later-in-life
+   converts to the beauty and joy of software engineering, and such candidates should emphatically
+   not be excluded merely because they discovered software later than others
+
+Not about me either.
+
+.. note::
+
+   Formal education [...] The most important aspect of one’s formal education may not be its
+   substance so much as its completion.
+
+Here it is. I am mathematician by education. Reading about red-black tree and following of
+algorithm proof correctness is just a routine for me ))
+
+.. note::
+
+   Formal education [...] The failure to complete formal education may indicate deeper problems, and
+   should be understood.
+
+I partially agree with that. Nowadays you can get money by developing Web sites without CS degree
+starting from age 8. You just need to remember names for those 2000 fancy icons and buttons in
+current popular framework.
+
+.. note::
+
+   Informal education [...] Learning is a life-long endeavor, and much of one’s education will be
+   informal in nature. Assessing this informal education is less clear, especially because (by its
+   nature) there is little formally to show for it — but candidates should have a track record of
+   being able to learn on their own, even when this self-education is arduous.
+
+May be because of lack of relevant formal education I value more informal education...
+
+I am curious on digital electronics and interfacing and know about high Z state on a bus. That's
+whole new world. I value ability to deep into non-Web buzz stuff as a sign to grasp into completely
+new knowledge domain (beyond GUI buttons).
+
+.. note::
+
+   For many companies, it will be important to find those that are intrinsically motivated — those
+   who do what they do primarily for the value of doing it.
+
+I have concerns about game industry, ads, crawling, spying. Product should bring direct value to the
+public.
+
+I did and do non-profit work but can't stay independent for a long time.
+
+.. note::
+
+   Values [...] What work have you done that you are particularly proud of and why?
+
+It was implementation of GOST hash function in ARM Thumb assembler and it was my first paid task
+assignment.
+
+After entering code with careful reuse of all 16 available CPU register during one day of work I
+found only one mistake (it was a day before New Year, everyone in office was drunk when I finally
+fixed bug and I joined the party).
+
+.. note::
+
+   Values [...] What mistakes have you made that you particularly regret and why?
+
+   Values [...] When have you been unhappiest in your professional career and why?
+
+I had a task to find for a way to generate substitution tables for GOST encryption algorithm.
+
+I spent 2 weeks on impossible task. I wasn't a security expert and table selection involves politics
+and law. At that time corresponding government agency issued list of allowed tables. We found them 2
+years later when was in collaborations with agency. I should stop working on this task after
+spending of one day.
+
+
+.. note::
+
+   Values [...] When have you been happiest in your professional career and why?
+
+A typical situation: my colleague went on vocation and left a bug. It was digital signature
+algorithm over elliptic curves and only final high level function shows problem. After 3 days of
+adding numerous new tests on all levels (GF(2^m) arithmetic, elliptic curve arithmetic) and
+re-reading entire 8000 lines of implementation I opened Emacs next morning and clearly saw mistake
+in one "if". I was shivering ))
+
+BTW It was early in my programming career. With bisect I'll troubleshoot such issue in 5 minutes
+today.
+
+.. note::
+
+   Pre-interview job talk [...] One guideline may be: those with more than seven years of experience
+   are expected to give a talk.
+
+In one company I curated all new employees of our department for their first month, supplying with
+own training materials and teaching tasks, evaluated performance and made final resolution for
+candidate acceptance.
+
+In other I participated in in-site IT school reading 8 hour lectures about POSIX and command line
+(which was pretty irrelevant to my Java-centric job position).
+