Software Engineer I
Federal Home Loan Bank of New York
New Jersey

About $92,000 - $120,000 a year

Support the development, implementation and on-going maintenance of the Bank’s application software and/or infrastructure.

Education –

Bachelor’s degree in Computer Science or other related business area preferred. Prior experience will be considered in lieu of a degree.


Management, Leadership, and Personal Skills

Communicates clearly and concisely.
Establishes and maintains effective working relationships at all levels.
Strong passion for software engineering.
Ability to prioritize various tasks and operate with minimum guidance.
Ability to motivate project team members on adopting good practices from the industry.
Technical Skills

Full Stack JAVA Development or
Highly skilled in PowerBuilder or equivalent client/server development tool(s).

Knowledge of software programming at the level indicated
Proficient in Java/J2EE development.
Good working knowledge of Application servers like JBoss EAP with special focus on
Administering JBoss EAP
EJB 3.0
Good working knowledge of SOA platforms such as JBoss SOA-P with special focus on
Administering JBoss SOA-P
JBoss rules
Strong understanding of Software engineering principles.
SOA, Design Patterns and Frameworks
Proficient in developing reusable components around commonly available frameworks.
Strong in performance engineering and trouble shooting

Working knowledge of the following DBMS:
Oracle and Microsoft SQL Server
Proficient in gathering and analyzing data and drawing logical conclusions.
Good understanding of other application servers in the market such as Websphere or Weblogic.
Good working knowledge of the UNIX and Windows operating systems.
Familiar with project management techniques and one or more Systems Development Life Cycle methodologies.
Familiar with the evaluation, recommendation and implementation of vendor supplied solutions.

A minimum of:
5 years of software engineering experience resulting in at least 8 of the above technical skills at the level indicated
Knowledge of current technological trends in the software development industry.
Good working knowledge of system integration issues between diverse platforms (PCs, UNIX, and Windows).

Support the development, implementation and on-going maintenance of the Bank’s application software and/or infrastructure.

Implement software and infrastructures that support current and future state architectures as approved by the Senior Application Architect and IT Management. Ensure compliance with this through adherence to guidelines and procedures that support these four principles:

Design for leverage: Seek to improve application / infrastructure quality, consistency and performance by promoting, adopting, and adhering to the use of standards, a focus on interoperability and share ability, robust security, and design best practices as adopted by the Bank.
Highly skilled in core Java, Java based web frameworks such as Spring, ANGULAR JS or SEAM or STRUTS, JAVA based OR mapping frameworks such as Hibernate or EJB3.
Highly skilled in DBMS technologies such as SQL Server, Oracle, Sybase – Stored procedures, Triggers, Data Modelling.
Highly skilled in Data processing using tools such as Schedulers (TIDAL), ETL (Business Objects), ESB (Camel) and reporting (Crystal).
Design for evolvability and sustainability: Ensure that solutions follow a sound migration path, as approved by the Senior Application Architect and IT Management, in moving reusable components / infrastructures from the current to future versions of software architectures / infrastructures, and reusable components.
Design for simplicity: Ensure software components and infrastructure, contributions to the Bank’s architecture, allow less-skilled developers to create and maintain application solutions, improve productivity, and facilitate the speed of architectural and design changes to application solutions.
Design for flexibility: Ensure that reusable components / infrastructures and architectural contributions facilitate known flexibility needs, but also strive to enable emergence of innovation that is yet unknown.

Essential Duties:
Provide the necessary level of project management and control to keep all assigned projects on schedule.
Manage the infrastructure components supporting the enterprise application server environment.
Conduct business area analysis, requirements definition, logical and detailed design, coding, testing, and implementation for all assigned development projects, according to departmental policies and procedures. Must be able to successfully complete medium-sized development projects in a timely and cost effective manner with minimal supervision.
Effectively manage and / mitigate the risks, trade-offs, costs, or conflicts that may emerge between short-term project needs and end-state architecture / infrastructure goals when designing solutions.
Provide the domain knowledge of the infrastructure and employ best practices when participating in the management and development of design patterns, infrastructure components, etc.
Participate as a member of the overall BTD contributing and helping to move the team toward the goal of better fulfillment of business needs, cost savings, easier system integration, faster application deliver, improved system performance, lower maintenance effort, and greater resilience and adaptability to change.
Assist the Architect by participating in the management of the infrastructure and architecture, recommending, planning, and documenting for the transition of it from current state technology to future state technology.
Assist in the active management of the infrastructure components. Innovate and provide suggestions, planning, and development of new components as part of this active management and / or during the course of project assignments.
Assist the Architect in the proper planning (communication, standards, education) in support of the successful transition from current state development tools, objects, infrastructures, and architectures to future state development tools, objects, infrastructures, and architectures.
Provide full support for all assigned Bank application systems and/or application infrastructure. System support includes, but is not limited to: problem resolution (business and non-business hours), user support, and system maintenance.
Design, prototype and develop components to be used in the development of the Banks software solutions.
Assist Application architect and end users in identifying and recommending automated solutions to business problems.
Accurately track and record hours worked on assigned projects/maintenance.