Assistant Research Engineer, Centre for Computational Law
- Bachelor Degree
- Closing On 27 Jun 2020
Singapore Management University is a place where high-level professionalism blends together with a healthy informality. The 'family-like' atmosphere among the SMU community fosters a culture where employees work, plan, organise and play together – building a strong collegiality and morale within the university.
Our commitment to attract and retain talent is ongoing. We offer attractive benefits and welfare, competitive compensation packages, and generous professional development opportunities – all to meet the work-life needs of our staff. No wonder, then, that SMU continues to be given numerous awards and recognition for its human resource excellence.
Help us build open-source tools and technologies that do for legal and qualitative reasoning what the spreadsheet has done for quantitative reasoning.
At SMU's research programme in Computational Law, researchers develop open-source languages and libraries to be shared on Github and used by a future generation of web and mobile apps. We have three to five years to accomplish this goal.
As a member of the team, you will have the opportunity to participate in software projects. This involves
- learning foundational areas of computer science, including data structures, algorithms, programming language theory, and logic;
- learning how to use third party tools, including editors, IDEs, databases, business process modelling software, programming languages, specification languages; and libraries;
- evaluating competing software systems for suitability;
- building infrastructure to enable application development;
- managing yourself, and managing fellow team members;
- engaging in product, project, and program management as needed;
- reading books and consuming such other media forms about software development;
- writing documentation such as user/developer-facing manuals, tutorials;
- delivering community support to users and customers;
- preparing presentations to represent the project before external audiences; and
- writing user-facing applications throughout the "full stack".
Success metrics: You can measure your (external) success in this job by the number and quality of contributions accepted into the research programme's Github repositories. Numerous software development assignments will be available. You can measure (internal) success by how frequently you find yourself in a flow state; by how many new ways of thinking you have mastered; and by how well you can get computers to help you and other people achieve important goals.
Self-taught programmers and holders of non-CS qualifications are welcome to apply.
The following qualifications are an advantage:
- You have developed at least one piece of software that somebody else has used.
- You are comfortable using the Unix shell or Windows Terminal with WSL.
- You are able to independently learn technology from books and online courses (though you will be supported when you get stuck if you “ask questions the smart way”, as Eric Raymond and Eric Moen put it.)
- You have previously asked, or answered, a question on a technical community support forum.
- You have an account on Github or Gitlab.
- Other people turn to you for help with technology, and I mean people besides family.
- You possess the “5 Personality Traits Every New Programmer Should Have”, according to learntocodewith.me: Patience, Courage, Passion, Creativity, Logic.
- You also possess the “Three Great Virtues of a Programmer”, according to threevirtues.com: Laziness, Impatience, and Hubris.
During your time with us, you will be exposed to areas of computing that lie beyond web/mobile app development, data science, and machine learning. You will learn to see the world as a computer scientist does – in terms of logics, languages, and libraries – and acquire, on the job, many of the skills on Matt Might’s list of “what every computer science major should know”. Working with other junior and senior researchers, you will learn technologies and skills which will be valued across a range of future careers.
Open-Source Software & Open-Standard Infrastructure Engineering: Internet infrastructure · Unix · Raspberry Pi · TCP/IP · HTTP(S) · XML · JSON · Schemas · YAML · Git · Github · REST APIs · RFCs · IETF · StackOverflow · Hacker News · Technical Writing · Developer Relations and Evangelism
Software Development: Test-Driven Development · Continuous Integration · Software Project Management · Agile / XP / Scrum · Pair Programming · Literate Programming · Unit Testing · Amazon Web Services · Docker · Full-Stack Development
Documentation: ReStructuredText · LaTeX · Jekyll · Markdown · Org-Mode
Parsers, Compilers, and Programming Language Theory: Lex/YACC · alex/happy · Bison · CFGs · EBNF · BNFC