Programmer/Analyst
Position Description:
The Programmer/Analyst will work as part of the development team that oversees the full software development lifecycle, database management, and systems administration for NYNHP. Team members work together to ensure that NYNHP's systems are secure and up to date; to provide technical support to NYNHP staff; and to work with staff to meet the organization's growing information technology needs. Each team member contributes to all technical areas. This position offers opportunities to learn new skills in full-stack software development and systems administration while working with enthusiastic colleagues dedicated to conserving our native biodiversity.
NYNHP uses Django, Python, R, PostgreSQL with PostGIS, MS Access, Linux, Shiny Apps, ArcGIS and other software, and has developed in-house applications for field data collection on Android devices. NYNHP uses a Debian/Python/Django/Postgresql/Nginx/uWSGI tech stack on a hosted web server for web applications such as the NYNHP website and Natural Heritage Conservation Guides, and a legacy Drupal/LAMP tech stack.
Duties:
Full-Stack Software Development
- Front-End Development: Build responsive and accessible user interfaces using JavaScript, HTML, HTMX, and CSS.
- Back-End Development: Back-End: Design and maintain secure and scalable backend systems including APIs using Python and Django to support data-heavy applications and services.
- Database Administration: Develop, maintain, and back up databases including PostgreSQL, MySQL, ArcGIS Online (AGOL) and MS Access, ensuring optimal performance, data integrity, and scalability. Implement ETL processes.
- Data Reporting and Analysis: Design database queries and scripts to generate reports, extract data, and deliver timely and accurate information, using Python, SQL, and R.
- Employ automated testing and Git in all software development. Document all development steps.
- Assist in the migration from legacy systems to current tech stacks.
- Ensure seamless integration of mobile app data collection and of ArcGIS tools (Survey123, Field Maps) with existing systems.
Systems Administration
- Administer Debian Linux servers, ensuring security, performance, and uptime for applications hosted on cloud infrastructure (DigitalOcean and HostGator). Manage server backups. Perform regular system updates and patches.
- Configure, deploy and manage web applications using Nginx and uWSGI.
- Write shell scripts and cron jobs to automate routine system tasks.
- Secure network communications by implementing and managing security protocols such as firewall configurations, data encryption, user access controls (including SSH keys), TCP/IP protocols and Unix domain sockets.
Technical Support
- Provide technical support, troubleshooting, and training to staff.
- Coordinate the setup of computers and tablets, including software and driver installation, often in collaboration with the New York State Division of Information Technology Services.
- Utilize a Helpdesk ticketing system for managing staff requests and issues.
- Oversee legacy systems that require manual data processing and uploading.
Project Management
- Assist in managing projects, including needs assessment, defining project scope, setting goals and objectives, managing timelines and stakeholder communications, and overseeing deployment and maintenance.
- Participate in code review.
Requirements:
Required Qualifications:
- Associate degree or higher. The education requirement may be satisfied by an equivalent combination of education and experience.
- At least one year of experience in software development, systems administration, or information technology.
Preferred Qualifications:
- Experience with back-end technologies such as Django or Flask.
- Experience with front end technologies such as HTML, CSS, JavaScript, React, Typescript, Bootstrap, or HTMX; and with UX/UI design.
- Experience in database design and management, and with PostgreSQL or MySQL.
- Experience with performing data mining, extraction, and reporting.
- Experience with Python and/or SQL
- Experience with cloud web services such as DigitalOcean or AWS.
- Experience with managing Linux systems via command line interface.
- Experience with automating routine system tasks and streamline administrative processes using shell scripts and/or cron jobs.
- Experience with securing network communications with firewall configurations, TCP/IP protocols, data encryption, and user access controls.
- Experience with Git version control and code review.
- Experience with geospatial technologies (GIS), especially ESRI products.
- Experience in reverse-engineering legacy systems.
- Experience with project planning and gathering user needs.
- Strong analytical and problem-solving skills for debugging technical issues.
- Effective communication that enables collaboration with technical and non-technical staff, including providing technical support.
- Ability to learn, document, and teach new technologies.
- Experience in managing multiple projects; time management and task prioritization skills.
- Some familiarity with and interest in biology, ecology, and conservation helpful, and/or. familiarity with Natural Heritage Programs and their methodology helpful.