writing code in one or more programming or scripting languages, such as PHP or JavaScript; planning and prototyping new applications; designing the architecture of the components of an application; deciding on the best technologies and languages for the project; testing sites and applications in different browsers and environments; problem solving; fixing bugs in existing projects; testing new features thoroughly to ensure they perform the correct task in all cases; running performance benchmarking tests; reviewing colleagues' code; building and testing Application Program Interfaces (APIs) for applications to exchange data; researching, incorporating and contributing to Open Source projects; meeting designers, developers and project staff for progress updates; gathering requirements from clients and users; learning and testing new technologies, frameworks and languages; staying up to date with new trends and advancements in web development; building and maintaining databases; refactoring and optimising existing code; documenting code so other developers can understand and contribute to it; attending and speaking at web development conferences and workshops; designing information architecture within an application or website.