Definition: A technical role focused on maintaining and improving the company's software infrastructure, which includes the servers, databases, and networks required for application deployment and performance.
Responsibilities
- Setting up, managing and maintaining AWS infrastructure
- Setting up and maintaining 3rd party services (Rollbar, Datadog, payment processors, GTM, others)
- Ensuring website and server stability (on-call responsibilities)
- Performing critical background tasks (database backups, cron jobs, database reindexing, exporting databases for dev environments)
- Integration with delivery services such as FedEx
- Continuous Integration and Continuous Deployment (CICD)
- Slack integration for alerting and version deployment notifications
Challenges
- As this role primarily operates behind the scenes, work done here often goes unnoticed unless something goes wrong. Could take up 40-50% of Seb's work.
Definition: A technical role involved in the server-side of application development, focusing on managing and manipulating data for the user interface.
Responsibilities
- Data storage and retrieval
- API calls management for inventory, order, and other data operations
- Payment provider integration
- Label creation and printing functionality
- Connecting frontend actions from ScanApp to Treeadmin
- Creation of command line tools to assist in development
- Import and export to Google Sheets
- Backend codebase cleanup: transforming it from Seb’s current implementation into something more modern, robust, and flexible
Challenges
- This position requires a deep understanding of codebase and how it has been developed over the years to handle its complexity.
Definition: The aspect of software engineering that focuses on the user interface and user experience, including the design and layout of the application.
Responsibilities
- Implementing designs in React
- WordPress theme development
- Designing forms, sidebars, tables for Treeadmin
- Matching Figma design with the utilized component system
- Set up streamlined designer feedback mechanisms
- Some UX design tasks
- Maintenance of frontend separation from the backend
Challenges
- This role requires cooperation with designers and maintaining the balance between frontend needs and backend capabilities.
Definition: A technical role that encompasses both frontend and backend development, requiring skills in UI/UX design, databases, servers, and systems engineering.
Responsibilities
- Integration of new payment providers into the frontend
- Static site generation for category view, filter pages, PDF rendering
- Ad and tracking integration, bridging backend, some infrastructure, data analysis, and frontend work
- Working with WordPress and understanding how to integrate various services
Challenges
- Requires broad knowledge and skill due to the overlapping nature of the position. Balancing responsibilities between frontend and backend can be challenging.
Definition: This role focuses on planning, executing and overseeing projects to ensure they are completed in a timely manner and within budget.
Responsibilities
- Scoping out new features
- Prioritizing projects
- Transforming business needs into technical designs
- Creating and managing Github tickets
- Facilitating dialogues between various stakeholders (on the farm, inventory logs inspectors, etc.)
- Overseeing implementation and rollout of major features (like the search engine)
Challenges
- The role requires deep technical understanding to produce viable designs, coupled with excellent interpersonal skills for dealing with a variety of stakeholders.
Definition: This role includes performing routine qualitative and quantitative data analysis, data cleaning, and transforming raw data into valuable business insights.
Responsibilities
- Working with data across different sources
- Creating and maintaining reports
- Cleaning the data lake
- Understanding and managing backend queries
- Understanding and reconciling differences between different external data sources
- Setting up appropriate data feeds
Challenges
- The role requires an exceptional eye for detail and a strong understanding of data and statistics.
Definition: A strategic role that combines business insight and technical knowledge to help guide the overall technical direction of the organization.
Responsibilities and Projects
-
Architectural Decision-Making:
- Oversee major long-term technological decisions and implementations
- Design new architectures to support the proactive development of the tech stack
- Constructs a roadmap for strategic initiatives to guide the evolution of the tech stack
-
Refactoring and Optimization:
- Refactor the codebase to streamline operations, improve performance, and enhance its maintainability
- Identify areas within the codebase that need refactoring
- Oversee the implementation of changes to ensure minimal disruption to services
-
Tech Stack Evolution:
- Evaluate emerging technologies and assess their potential value for the company (React, Chromatic, AWS, Docker, dbt etc.)
- Pilot the integration of beneficial new technologies with the current tech stack
- Lead the implementation of these technologies within the organization
-
Strategic Planning:
- Create long-term strategic plans for the technical team to align with the overall company goals
- Regularly review the tech strategy to ensure it's providing the expected outcomes and adjust it as necessary
- Provide input into business strategy from a tech perspective
-
People Management:
- Delegate tasks effectively to individual developers based on their skill sets
- Mentor and coach the development team
- Foster a culture of continuous learning within the team
-
Problem-Solving:
- Provide short-term solutions for problems such as order splitting or moving to a new shipment provider
- Innovate solutions to align the technologies used across the TTC, GEC, and Plantbase to avoid three separate tech stacks
- Create robust systems to prevent future issues
Challenges
- This role requires thorough technical knowledge, strategic foresight, and leadership skills.
- Balancing short-term needs with long-term goals
- Apart from the technicalities, understanding the individual thought processes of the developers is crucial for efficient delegation.
- Keeping pace with the ever-transforming tech scene to incorporate the best and latest for the benefit of the organization.
Projects
Here is a list of concrete projects that involved technical leadership:
- Moving infrastructure to AWS
- Designing and implementing the data lake
- Designing and building the reporting system
- Planning and executing the move to React for filters
- Overseeing gradual refactoring of the backend codebase
- Designing proper indexing jobs and scripts for the search engine
- Finding short term solutions for order splitting issues
- Transitioning to a new shipment provider without disrupting historical data
- Exploring integration of TTC, GEC, and Plantbase systems
- Introducing and integrating new technologies like React, Chromatic, AWS, Docker, dbt, etc.
- Mapping business problems to potential technology solutions
- Architecting the separation of the frontend and backend
- Overseeing the buildout of the CI/CD pipelines
- Planning the move to standardized frontend stack (React, Chromatic, Figma)
- Designing and executing technical improvements to the search engine
- Improving application performance through strategic optimizations
- Mentoring other developers and fostering a culture of learning
Definition: A technical role focused on developing software applications for mobile platforms, such as smartphones and tablets.
Responsibilities
- Development of ScanApp in React