We are currently recruiting for a number of different positions at Talis, amongst these are several openings to join our development teams. Rob has already discussed the Web Application Technical Lead role, and I’ll like to mention that we are also looking for Senior Developers to join both our Platform and Education divisions.
Senior Software Developer Education
It is the vision of our Education Division to connect faculties, students and educators together using technology, with the aim of creating joined up learning environments and providing seamless access to education resources and pedagogical expertise. We are currently working on delivering Talis Aspire into a number of Higher Education institutions here in the UK and abroad. Aspire is built entirely upon our semantic web platform, and is one of the few truly native linked data applications. Whilst the underlying technology is important, we have to balance this with an excellent user experience. If you are interested in being an early part of publishing large amounts of data on the semantic web? And building truly compelling software that provides an excellent user experience for millions of users, then you might be interested in applying. The job spec provides more details, we only ask that when applying you try to answer two of three questions below:
- Discuss the different types of automated testing that are needed to maintain high quality
software. What kinds of programming language are best suited to each type of testing? What
automated techniques could be used to test web based applications and user interfaces? And
how can code design and refactoring be affected by choice of language?
- When working with data that you do not own, there are no guarantees about the cardinality of
fields or the presence of data you might want to consider mandatory. Traditional approaches to
working with data from elsewhere have relied on cleaning, validating and then importing data
into an application’s own database. The Semantic Web allows data to be shared at runtime.
What techniques or strategies could be employed within an application to handle unreliable or
unexpected data when sharing databases with other applications at runtime?
- Web applications are often composed of multiple interoperating systems, connected by APIs or
other endpoints, and deployed across multiple environments. As usage patterns change, the
application may need to scale rapidly, whilst maintaining performance and reliability levels.
How can applications be designed to allow for such scaling?
Senior Platform Developer
Our Platform division is always looking for experienced developers to join the team. The job spec for this role provides far more details but when applying we ask that you try and answer at least two of the following three questions:
- The Web can be modelled as a network of nodes labelled with URLs and connected by directed arcs. Suppose we want to find all the URLs linked to and from any given URL, and all the URLs that are linked from any two given URLs. What kind of data structures might be suitable for representing and querying a network with 10^8 nodes each having between 10 and 50 arcs?
- Discuss the different types of automated testing that are needed to maintain high quality software. What kinds of programming language are best suited to each type of testing? What techniques could be used for testing asynchronous processes and for processes that operate over large volumes of data? Are there any situations that you wouldn’t test?
- Large-scale systems composed of many cooperating application servers often need to share and cache configuration. Suppose any server can initiate changes that need to be reflected in real time to the other application servers in the cluster. What strategies could you use for coordinating this kind of behaviour and how are they tolerant to various failure conditions?
Finally I think Rob summed it up best when he said: All in all though, we’re looking for great people to come and help us do great stuff. Get in touch!