Digital Library Software Engineer
Stanford University — Stanford
0 other recent jobs
Created: April 27, 2015
This is a 2 year, fixed-term position in the library’s Digital Library Systems and Services group, with the possibility for renewal.
Stanford University Libraries is seeking an enthusiastic and talented software engineer to support infrastructure and services as part of its digital library, an internationally recognized technology program developing innovative solutions to advance teaching, learning and research at one of the world’s leading universities. We are a mission-driven organization that emphasizes open, collaborative work and community engagement within Stanford and with partner institutions around the world.
This position will be instrumental in building out the archival and preservation capabilities of the Stanford Digital Repository (SDR). As part of this effort, the incumbent will be a key contributor to the Digital Preservation Network (DPN), an ambitious, nationwide digital preservation effort in which SDR serves as one of the peer nodes of multiple large scale collaborative preservation repositories.
Duties and Responsibilities
Software Engineering for the SDR; Work as part of a dedicated infrastructure team on Stanford Digital Library’s cyber-infrastructure, principally Ruby on Rails-based middleware and services that support adaptable and reusable technology solutions for the Stanford Digital Repository. As part of an agile team, take responsibility for engineering the repository’s preservation environment, including object ingest, online and archival storage, fixity and audit processes, backups, replication, retrieval and reporting.
DPN Development and Operation; Lead the development and integration of Stanford’s DPN instance (local code for communication, content transfer, DPN-specific auditing and reporting) with the SDR’s preservation core, ensuring compatibility and use of Stanford Libraries overall cyber-infrastructure, security and devOps practices. Help coordinate the development and testing of DPN for pilots and operation; oversee the smooth operation, maintenance and enhancements of DPN from Stanford’s node, working with SDR operations staff.
DPN Technical Engagement; Serve as Stanford’s focused technical expert on DPN for the specification, design, engineering and testing of the Network. Represent Stanford in architectural, security, and operational considerations in discussions with other Nodes and DPN staff. Help ensure the development of a Stanford-compatible DPN protocol for transfer, packaging, replication, and versioning.
Conceptualize design, implement, and develop solutions for complex system/programs independently with a focus on the Stanford Digital Repository.
Work with a variety of users to gain information, and develop intra-system tradeoffs between different users, as necessary; interact with a diverse client base and outside vendor contacts.
Document system builds and application configurations; maintain and update documentation as needed.
Provide technical analysis, design, development, conversion, and implementation work.
Work as a project leader, as needed, for projects of moderate complexity.
Serve as a technical resource for applications.
Compare, evaluate, and implement new features and technologies, and integrate them into the computing environment.
Follow team software development methodology.
Mentor lower level software developers.
Education & Experience:
- Bachelor's degree and five years of relevant experience, or a combination of education and relevant experience.
- Expertise in designing, developing, testing, and deploying applications.
- Proficiency with application design and data modeling.
- Ability to define and solve logical problems for highly technical applications.
- Strong communication skills with both technical and non-technical clients.
- Ability to lead activities on structured team development projects.
- Ability to select, adapt, and effectively use a variety of programming methods.
- Knowledge of application domain.
- Demonstrated knowledge of a data-driven, service based architecture for an object-based infrastructure that includes hierarchical encapsulation and reuse from low level program classes to high level web-services operations.
- Demonstrated experience in the development and delivery of software that meets requirements for quality, scale, and robustness in a large-scale production environment, incorporating heterogeneous hardware (storage, network, servers), dealing with issues of persistence, caching, bandwidth, I/O, load balancing, etc. at a large scale (high volume, large files, many instances).
- Working knowledge of or ability to adopt and apply agile software development practices and test driven development principles. Ability to understand best practices for software development, and an ability to introduce and reinforce application of those practices in a team environment.
- Demonstrated experience with, or capacity to learn, Ruby on Rails for application development and for engineering in an enhanced framework, including plug-ins, engines and gems.
- Prior experience in development support tools used in our environment is a plus: Git, Puppet, Tomcat, Capistrano, Hudson, JIRA, etc.
- Prior success in working in an academic environment; experience in the digital library community is a plus.
- Familiarity with digital asset management and repository-related applications.
- Experience contributing to community-based open source projects, including but not limited to those relevant to the Stanford Libraries’ digital library architecture.
- Knowledge of IT infrastructure and current standards, including designing and integrating multi-tiered system architectures; database design, performance, security and scalability principles; familiarity with data models and modeling techniques; enterprise service buses; web-services and service oriented architectures; federated network service; federated messaging models, object- and procedural-oriented programming languages and concepts, (including Java as a minimum requirement); familiarity with Unix and other host-based server environments; XML, XSLT, and SAML.
- Experience contributing to the successful development and operation of enterprise-scale information systems as reliable infrastructure, including hardware, software, middleware, and supporting human processes.
- Knowledge of server and storage architectures, systems and industry development. Expertise with current storage technologies and directions, including CIFS, NFS, DASD, NAS, AFS, and TSM.
- Knowledge of network architectures and protocols; experience in operating and integrating components of a multi-protocol data network, including remote-access services. Demonstrated ability in network design, including DNS, VLANs, and firewalls.
- Experience in information security concepts, issues and technique, and an advanced understanding in key management, certificates, encryption, cryptographic techniques, TLS, and SSH.
- Detail oriented, with a passion for good metadata.
Job: Information Technology Services
Location: University Libraries
Classification Level: J
Published: Monday, April 27, 2015 18:09 UTC
Last updated: Tuesday, February 28, 2017 23:42 UTC