Reporting to the Director of Online Learning and Collaboration Services (OLCS), the person filling this position will act as a member of our development team, working on several systems, such as Scholar (our Course Management System based upon Sakai), our SPOT survey system (also Sakai based), our ePortfolio tools (also Sakai based) and our FDI system (home grown). The person in this position designs, develops, and implements web-based Java applications. Additionally, he or she will be responsible for all phases of application development, including integration with other applications and with existing enterprise systems. Position works directly with supervisor, members of a development team, and other teams within Learning Technologies (ePortfolio Initiatives, QA, support) to meet project goals with an emphasis on usability and end user satisfaction. At times works directly with end users (faculty, staff, and students) to determine needs for application development and documents these needs. Works to develop and design prototypes of proposed software solutions. Core Responsibilities: - Participates in development of global open source projects (such as Sakai) and develops high quality, documented code that can be contributed back to the project. - Works collaboratively with other teams within Learning Technologies (support, quality assurance, usability) to meet project goals and organizational objectives. - Uses best practices as defined by standards organizations in all Learning Technologies application development to insure compatibility. - Develops applications or application enhancements to enterprise systems using programming interfaces (APIs). - Works and communicates with Virginia Tech IT developers in an effort to share information and establish common knowledge across departments. - Works with the LT Systems Integration team to put development projects into pilot and production stages. - Develops code from requirements and/or high level design documents. - Provides maintenance code changes for developed production applications. - Provides customizations to integrate, enhance, and maintain vendor software and enterprise systems based on end user needs. - Provides fully documented code and system level documentation. - Performs unit testing on all work products.
Required Qualifications - Bachelor's degree in computer science, engineering, or similar field - Experience in developing, maintaining, and troubleshooting complex, distributed web applications - Proficiency in multiple programming languages - Basic understanding of relational databases, SQL, and data abstraction methodologies - Solid understanding of object-oriented design principles
Preferred Qualifications - Professional programming experience - Programming experience in Java, PHP, Perl, Bash, and/or Ruby - Familiarity with Java development tools and libraries, such as Maven, Eclipse, Hibernate, JSF, and Spring - Proficiency with source control systems such as Subversion or Git - Experience working in a Linux command line environment - Familiarity with XML-related standards including XSD and XSLT - Understanding of protocols related to network applications, such as HTTP, SSL, SMTP, LDAP, and SOAP - Experience with open source development - Experience with designing and implementing mobile applications