IonCube loaders are NOT AVAILABLE on this server. Please contact your hosting provider for assistance.

Object Oriented Software Engineer

Object Oriented Software Engineer

Object Oriented Software Engineer

Job Description

Position Summary:

Our client is seeking to hire software engineers interested in working in a collaborative environment where they will write well-factored, object-oriented code to contribute to the mission of the Intelligence Community. The software engineer will have experience with, and can describe, a Scrum, XP or Kanban software process. The software engineer will have production experience with a dynamic, functional or declarative language. The software engineer will can develop in some non-java, environment, such as Ruby, Scala, Erlang or Clojure and is willing to teach others how to program in their preferred language.? This position is located at our Annapolis Junction, MD offices.


Duties & Responsibilities:

General Software Engineer

Should be able to:

  • Write well-factored, object-oriented code.
  • Refactor existing code to improve its design.
  • Read and understand a stack trace.
  • Create a new project in Subversion or Git.
  • Create and manage branches in Subversion or Git.
  • Use breakpoints, watches, and stepping in a debugger.
  • Create a suite of automated unit, integration, and functional tests.
  • Diagnose a broken continuous integration build in Bamboo or Hudson.
  • Know the tradeoffs between composition vs. inheritance and when to use each one.
  • Write Bash scripts, cron jobs, and manage filesystem permissions on Red Hat Enterprise Linux.



Should be able to:

  • Explain when to use an interface and when to use an abstract class.
  • Describe the collections interfaces and implementations in java.util and their uses (e.g., the difference between Map and List).
  • Describe the trade-offs between abstract classes and interfaces.
  • Create a JAR file.
  • Write an Ant script.
  • Write unit and integration tests in JUnit.
  • Describe the differences between Java 1.4 and Java 1.5.
  • Explain the synchronized keyword.
  • Setup and configure Tomcat and Jetty.
  • Deploy a WAR.
  • Write functional tests in HTTPUnit or Selenium.
  • Use a modular programming system like OSGi.



Should be able to:

  • Create UI using JSP and servlets.
  • Use JDBC to interact with a database.
  • Listen to and send JMS messages.
  • Create a database schema and write SQL.
  • Create Spring beans.
  • Configure JNDI for resource lookups.
  • Generate a PKI, keystore, and trust store and configure Java to use them.
  • Design a RESTful or SOAP web service API following standard conventions.
  • Configure object-relational mapping using JPA or Hibernate.
  • Configure an application server.


Web Development Operations

Should be able to:

  • Implement the Yahoo! performance guidelines to optimize website performance.
  • Instrument and performance-profile a web application server.
  • Find and optimize long-running and redundant database queries.
  • Set up a continuous deployment system and an associated quality bar and risk mitigation strategy.
  • Configure Apache as a web application load-balancer.
  • Analyze a network diagram for its performance impacts.
  • Advise teams on distributed application architecture and failover strategies.
  • Perform capacity and storage planning.


Should be able to:

  • Create a suite of automated unit, integration, and functional tests.
  • Be comfortable planning smaller sets of functionality more frequently rather than large sets up front.
  • Work with developers to add an automated test suite to a legacy application.
  • Test-drive code.
  • Find bugs using exploratory testing.
  • Work with product owners and stakeholders to develop clear, testable acceptance criteria.
  • Create executable test specifications using FitNesse or Selenium.



  • Experience developing and deploying with the J2EE stack, in technologies such as Grails, Spring, Hibernate, JUnit, JMS, Jetty and Tomcat.
  • Experience working on Unix or Linux operating systems. RHEL is preferred.
  • Demonstrate knowledge developing AJAX driven user interfaces, in technologies such as jQuery and Ext. Experience with GWT may translate.
  • Experience using version control systems, such as Git or Subversion. Experience with distributed version control systems, such as Git or Mercurial, is preferred.
  • Experience using and/or configuring continuous integration tools (Hudson, Jenkins, CruiseControl, etc.) is preferred.
  • Experience with Oracle 10g+, particularly in performance tuning is beneficial, but not required.
  • Experience with Cloudbase/HBase or another NOSQL, Big Table style database is beneficial but not required.




Speak Your Mind