· Define and communicate technical and design requirements · Develop, test, and maintain functional features · Build high quality reusable code · Be involved and participate in the overall application lifecycle · Troubleshoot and debug applications · Collaborate with team members · Stay up to date with best practices