Senior Java Developer
We are searching for Java developers to fill a critical role in new application development. This is a rare opportunity for true artists to compose elegant solutions to new and complex data management challenges. This is your chance to do it right the first time, a place to apply all the lessons you have learned during your years as a developer in a company that knows how to appreciate developer talent.
Responsibilities
Design
You must be able to produce simple, maintainable, and expandable application designs using object oriented practices and standard design patterns. You will be expected to research open source software options and make recommendations according to our product requirements. You are expected to understand that specifications evolve and feature-creep is an unavoidable reality, and will be relied upon to design solutions that can be expanded and maintained without impacting earlier work too severely.
Documentation
You will be responsible for documenting your design solutions in our online Wiki. We use a “drill down” documentation approach to keep our documentation as concise and readable as possible. A typical documentation cycle starts with the program manager stubbing document sections after design review, and then continues with you composing a process outline and uploading any appropriate flowcharts. The documentation is finished during and after development as the developer implements the design and makes any necessary notes and revisions.
Implementation
You are expected to personally implement your design solutions up to and including the interface definition level. After this, your level of involvement with implementation (writing code) will vary according to our workload and your own preference. There will be times when you will be asked to delegate implementation details to other developers so you can move on to the next project, and other times when you may be asked to pitch in with implementation and code review on high priority projects.
Mentoring
You may be responsible for training and supervising one or two entry level developers. If you would enjoy passing on your wisdom to the next generation of developers and have the managerial and teaching skills to be a good mentor we would love to give you that opportunity. You will be involved in every step of this process, from recruitment to evaluation to developing a career path for your apprentice.
Requirements
You must have a strong understanding of object oriented principles and design patterns. You must also be willing and able to learn and adopt new languages and technologies rapidly and efficiently. Please provide a portfolio of programming and/or documentation samples demonstrating your skill at application design and knowledge of design patterns.
Education
You will need a Bachelor’s degree or better in Computer Science or a related discipline. An extra two years of applicable experience will be considered in lieu of this requirement.
Experience
You must have at least five years experience as a full-time object oriented software developer. Java experience is obviously desired, but experience in other object oriented languages will also be considered. Experience working with a service-oriented architecture is useful, as well as any experience you have working with relational databases and data access technologies. You are expected to have a working knowledge of SQL and XML.