Jobs
All programmers are playwrights and all computers are lousy actors
-- unknown --
As outlined on "Anti-Software" page, we do not select our development team members purely based on their skill-set or experience (these are helpful, but are not the most significant factor). This means that if your lifetime ambition is to do programming in x86 assembler, but your career to date has not presented you with the opportunity of doing so, we would still be keen to hear from you. In most cases our main criteria for selecting a team member are very straightforward. If you:
- Want to make a difference, and agree with at least some of the concepts outlined on our "Mission Statement" and "Anti-Software" pages;
- Feel that you are smart enough for the job described
- Are enthusiastic about the position, and about doing this type of work
- Can work full-time remotely, without the need for constant supervision
- Have sufficient English skills to understand this website
- Have an Internet connection which is fast enough to send/receive e-mails and work with SVN (though for some positions an Internet connection capable of controlling remote servers is desirable).
Please send us your resume (to resume@bluewhalesoftware.com, in txt, rtf, or pdf formats for attachments), including a covering letter detailing the reasons for your interest in the advertised position(s) (if applying for two openings at the same time, please include descriptions for both). Please note that we have a policy of responding to all applications, so if you do not hear from us within a week, you should re-send your message. Should we be interested in discussing your application further, we will schedule one or more phone interviews, and if we are mutually satisfied with results, we will make arrangements for you to begin working for us as soon as possible.
Your location and country of residence is immaterial, provided that you can work as a contractor for a foreign company and receive wire transfers from abroad. However, whatever your location, a working knowledge of English remains a requirement.
Blue Whale Software is committed to equal opportunities and, as such, the race, gender, religion etc. of our candidates will not influence their application in any way.
All our team members work from home, via the Internet. We offer competitive rates, and the level of taxation etc in the country of a worker's residence is taken into account when discussing pay; however, local taxes etc ultimately remain the responsibility of the team member (who operates as an independent contractor).
Where our work-ethic is concerned, we strongly believe in "star teams" (see our "Anti-Software" page), in which every team member is not just a "cog in the machine" but an individual with his/her own likes/dislikes and strengths/weaknesses. It is the responsibility of all team members to understand how the team is made up, and act accordingly. The same is true for management and architects, and even if you are forced to do something you don't like (which is inevitable from time to time) there will always be the opportunity to express dissatisfaction, and in most cases receive explanation and clarification on the reasons behind a decision.
Last but not least, we can guarantee beyond any reasonable doubt that your job won't be boring. It may be many things: demanding, difficult, even occasionally frustrating, but it is extremely unlikely to be dull!

Current Job Openings
You have to sing like you don't need the money
Love like you'll never get hurt
You gotta dance like nobody's watching
Its got to come from the heart if you want it to work
-- Kathy Mattea, "Come From The Heart" --
- Algorithm Developer for the Anti-Database project (multiple positions)
This job will include working on the internals of the Anti-Database project. Although we're already working on this intensively, lots of algorithms still need to be taken care of, including such things as optimized B+-trees, our own custom indexes, optimized mechanisms of page and intra-page allocation and so on. There is a great deal of work to be done; and whilst we are not yet in a position to specify which parts of the task will be allocated to which employee, rest assured that the number of interesting algorithms to develop will be great enough to keep you occupied for a long while. The programming language is C++, though an in-depth C++ knowledge is not a requirement (this knowledge may be a useful addition, but for this job questions like the meaning of a+++b or issues like partial template specialization won't be important). Creativity is of primary importance for this position (in algorithm development, not in writing for Obfuscated C Contest
),
along with possessing a desire to develop software which is substantially better than existing versions.
x86 Optimization Developer for Anti-Database project[FILLED]Integration Developer for Anti-Database project[FILLED]SQL Optimizer Algorithms Designer[FILLED]- C+- Developer
C+- is a semi-research project, which, if successful, may lead to a huge improvement in the performance of very different programming areas. The idea is not to create just yet another language, which attempts to be all things to all people, but we instead want to provide a way for the project to create its own language from a given baseline, with minimal effort. We are now well on the way towards developing a language (we name it "C+-"), which would have very basic functionality (with syntax close to "C with classes"), and which would allow the creation of "language extensions" on top of it to suit specific requirements of specific projects or subprojects. As for code generation, we prefer to compile it into already existing generic programming languages (as a side benefit, we plan that with some extensions C+- will compile into all of the C/C++/Java/C#, it would obviously be helpful for developers to greatly extend the list of supported platforms). To the untrained eye, this task might look too easy - or indeed too difficult (if you fail to take into account that a full standard-compliant compiler like the famous cfront is not necessary, because we are only dealing with a subset of C++, and can define what is allowed within that subset; in particular, it seems that we have managed to restrict C+- to Yacc-able LALR(1) grammar, and no, it does not need a lexical analyzer to know about type names during lexical parse). In any case, the job is highly likely to involve lots of work with LALR parsers like yacc. For applicants to this specific job, the 'enthusiasm' requirement is particularly important!