We are looking for a Senior Programmer Analyst to join our team of students, faculty and post-docs in building software infrastructure for big data neurocience. NeuroData's goal is to work together with neuroexperimentalists to discover fundamental principles governing the relationship between mind and brain, via building and deploying open source data-driven tools that run at scale on open access data. This includes analytics, databases, cloud computing, and Web-services applied to both big neuroimages and big neurographs. We aim for our code to be open source and services freely accessible. For more information, please visit our website: http://neurodata.io/
The individual will be responsible for the creation, implementation, maintenance, performance, production support and documentation of various departmental and enterprise-wide application systems. This includes but is not limited to the installation, modification, and testing of new and/or upgraded applications (packages or home grown), operating systems, file structures, hardware, communication devices, and productivity tools. Applies analysis techniques and procedures to gather and then translate business requirements into functional/technical specifications and designs. Using functional specifications and designs, produces all or part of the deliverables. Maintains databases and application system code.
Job Scope/Complexity: Under limited guidance, responsible for full life-cycle of small to medium sized moderately complex projects. Demonstrates strong ability in technology and/or strong understanding of the business/clinical/education process. Builds and maintains client relationships through positive interactions.
Job Responsibilities: The Senior Programmer Analyst is responsible for development and maintenance of NeuroData's software infrastructure running in the cloud. The focus of this position will be more on back-end, ranging from meta-data management to efficient storage and retrieval of petabyte datasets.
ANALYSIS AND REQUIREMENTS GATHERING
Work on a variety of projects which may land at all levels of the stack, from front-end user interfaces to low-level data storage. Projects will be chosen based on skillset, interest, and need.
Define moderately complex research problems by meeting with clients to observe and understand current processes and the issues related to those processes. Provide written documentation of findings to share with the client and other colleagues.
Gather moderately complex system requirements by working closely with the team and researching existing technology to understand the business requirements and possible solutions for new applications while ensuring cohesive software infrastructure.
DESIGN AND DEVELOPMENT
Develop detailed tasks and project plans by analyzing project scope and milestones for moderately complex projects in order to ensure product is delivered in a timely fashion according to software lifecycle standards.
Write functional/technical specifications by taking the provided moderately complex system requirements and putting them into functional and technical descriptions for use by programmers and business analysts to develop technical solutions.
Develop/change data input, files/database structures, data transformation, algorithms, and data output by using appropriate computer language/tools to provide technical solutions for moderately complex application development tasks.
Document code and associated processes by adhering to development methodologies, adding code comments and appropriate documentation to various knowledge-base system(s) to simplify code maintenance and to improve support.
TESTING AND DOCUMENTATION
Create and document moderately complex test scenarios using the appropriate testing tools to validate and verify application functionality.
Test all changes by using the appropriate moderately complex test scenarios to ensure all delivered solutions work as expected and errors are handling in a meaningful way.
Author and maintain documentation by writing audience-appropriate materials to serve as technical and/or end-user references.
IMPLEMENTATION AND MAINTENANCE
Implement changes by adhering to the change management policies and procedures for any given project to communicate to all parties the nature, significance, and risk factors of the solution.
Monitor changes and resolve moderately complex problems by responding as they occur, by reviewing all processing and output of the newly implemented solution, and by proactively ensuring the solution works successfully in order to satisfy the customer requirements and to provide a smooth transition to the new solution.
Provide support by triaging and resolving moderately complex issues to ensure prompt, effective service.
Continuously learn and improve skills.
Required Education: Bachelor's degree required. Additional experience may be substituted for education. Master's degree in Computer Science preferred. Fluency in python and at least one other programming language.
Experience or strong interest in working in an interdisciplinary environment.
Required Experience:Three years of related work experience with computer systems and applications. Additional education may substitute for experience. JHU Equivalency Formula: 18 graduate degree credits may substitute for one year of experience. For jobs where equivalency is permitted, up to two years of non-related college course work may be applied towards the total minimum education/experience required for the respective job.
Knowledge, Skills, & Abilities (KSA's):
Must possess all requisite knowledge, skills, and abilities as posted in the supplemental section.
Must demonstrate strong critical thinking and analytical reasoning skills.
Ability to work on multiple priorities effectively.
Ability to prioritize conflicting demands.
Ability to execute assigned project tasks within established schedule.
Ability to work collaboratively in a team environment.
Ability to communicate effectively in the service of users and colleagues.
Writes and communicates clearly and concisely.
Possesses sound documentation skills.
Ability to maintain confidentiality.
Must demonstrate exemplary customer service skills
PhD in Computer Science or related field
Knowledge in the assigned application as well as the platform on which it runs.
Experience with building web applications (e.g. django or ruby on rails), including the design of RESTful interfaces
Familiarity with SQL (e.g. mysql or PostgreSQL) and/or NoSQL (e.g. Redis or Mongo) databases
Experience with running services in the cloud (e.g. Amazon, Google or Azure)
Familiarity with virtualization or container tools (e.g. Docker)
Comfortable working with new programming languages and tools
Excellent debugging and problem solving skills
Experience with contributing to open source projects
Ability to take initiative, prioritize tasks, use good judgment and monitor completion of assigned duties
Johns Hopkins University remains committed to its founding principle, that education for all students should be grounded in exploration and discovery. Hopkins students are challenged not just to learn but also to advance learning itself. Critical thinking, problem solving, creativity, and entrepreneurship are all encouraged and nourished in this unique educational environment. After more than 130... years, Johns Hopkins remains a world leader in both teaching and research. Faculty members and their research colleagues at the university's Applied Physics Laboratory have each year since 1979 won Johns Hopkins more federal research and development funding than any other university. The university has nine academic divisions and campuses throughout the Baltimore-Washington area. The Krieger School of Arts and Sciences, the Whiting School of Engineering, the School of Education and the Carey Business School are based at the Homewood campus in northern Baltimore. The schools of Medicine, Public Health, and Nursing share a campus in east Baltimore with The Johns Hopkins Hospital. The Peabody Institute, a leading professional school of music, is located on Mount Vernon Place in downtown Baltimore. The Paul H. Nitze School of Advanced International Studies is located in Washington's Dupont Circle area.