HomeAboutSolutionsTechnologyCareersNews & EventsContact Us
Why Work at ITA Software

Search for Jobs:  
 

Reporting Architect MySQL, Perl

A unique opportunity for a Reporting Architect to design and implement a new reporting system. The Reporting Architect will revamp the current reporting system by designing, implementing and maintaining data warehouse and reporting tool to support the reporting needs for ITA's internal and external customers. The ideal candidate is expected to have strong Perl, database, and SQL skills, data warehousing background and experience with front-end reporting applications.

The Reporting Architect will be involved in design of extracting, gathering and distributing data; serve as a contact for data validation and interpretation; develop, maintain and administer databases to support reporting and informational needs as well as archiving, recovery and implementation; monitor database performance, write SQL code for data retrieval; and managing security for reporting databases.

The position will provide functional and technical leadership for the Reporting team, including solution architecting, and identification and implementation of future reporting strategies. This will require close work with Billing/Accounting, Account Managers, System Integration Engineers and developers in the overall solution design.

Responsibilities:

  • Gather requirements that will meet the reporting needs of users.
  • Design and lead the implementation of data warehouse and reporting solution.
  • Accurately estimate the size and scope of the development effort as measured.
  • Provide complete documentation in the form of commented code, problem status information, and design documents.
  • Define the functional specification of program modules ensuring functionality, quality and ease of maintainability.
  • Perform thorough testing as required to provide a quality product.
  • Perform thorough problem analysis that results in resolution of problems according to standards.
  • Complete code and other deliverables on schedule.
  • Other duties are required.

Qualifications:

  • 8+ years experience in full lifecycle design and development of relational database and applications
  • 6+ years experience architecting data warehouse and reporting solutions

Knowledge and Skills:

  • Perl skills to be able to extract necessary information to put into database
  • Ability to clearly identify a project’s scope, objectives, and implementation strategy.
  • Ability administer and tune SQL databases, and write SQL code
  • Excellent customer service and communication skills.

How to Apply
If you are interested in this position, please fill out an application/resume form. Then solve one of the puzzles below and send your solution to us via this link.


Puzzles:

Please select and solve one of the puzzles below to give us an idea of your problem-solving ability and coding style. Unless otherwise specified, you may use any freely-available language you like. Puzzles submitted in C++, Lisp, Python, Java or Perl will be reviewed most promptly, because those are the languages we use every day; if you choose another language, it may take us longer. No pseudo-code, please!

In your submission email, please include:

  • The title of the position that interests you
  • Your source code
  • Your program's final answer
  • A brief (1-2 paragraph) description of your approach
  • Any trade-offs you made (say, for generality, speed, or ease of implementation)
  • Instructions on how to test your program  

To ensure that your puzzle solution does not get caught in our mail filters, you should zip the source code file(s) and name the archive "Programming_Puzzle_Submission-NameofthePuzzleyouSolved" e.g. "Programming_Puzzle_Submission-RollYourOwnChatServer.zip".

 

 Roll Your Own Chat Server

Implement a simple standalone TCP-based chat server, using the following protocol:

The server responds to all commands with either:
    OK<CRLF>
or, when an error occurred, with:
    ERROR <reason><CRLF>

<CRLF> indicates the bytes '\r\n'.

Upon connecting to the server, the client sends:
    LOGIN <username><CRLF>
Clients can create new chatrooms or join existing chatrooms (chatrooms begin with the character '#') by doing:
    JOIN #<chatroom><CRLF>
Clients can leave chatrooms by sending:
    PART #<chatroom><CRLF>
Clients can be in multiple chatrooms at once.

Clients can send a message to a chatroom:

    MSG #<chatroom> <message-text><CRLF>

Clients can send a message to another user:
    MSG <username> <message-text><CRLF>
When a message is sent to a chatroom the user is in, the server sends to the appropriate client:
    GOTROOMMSG <sender> #<chatroom> <message-text><CRLF>








or if the message is sent directly from one user to another:
    GOTUSERMSG <sender> <message-text><CRLF>
Finally, the client can log off by sending:
    LOGOUT<CRLF>
Here's a transcript of a sample session where a user named "alice" joins a chatroom called #news after connecting. C indicates the line was sent by the client, S indicates it was sent by the server (end of line indicates CRLF was sent):
    C: LOGIN alice 
S: OK
C: JOIN #news
S: OK
C: MSG #news hi everyone
S: GOTROOMMSG bob #news nothing much happened after that
S: OK
S: GOTROOMMSG alice #news hi everyone
S: GOTUSERMSG carol hi alice, where've you been?
C: MSG carol on vacation
S: OK
C: LOGOUT
<server closes connection>
When implementing the server, aim for scalability and robustness. (Many submissions fail due to lack of robustness!) Your submission should include a description of the steps you took towards those two goals. Keep in mind that the client may be buggy, or even malicious. For example, if a client connects to the server and sends an infinite stream of the byte 'X' with no line break, the server should deal with this case gracefully. Please do not use an existing networking framework (e.g., Twisted or asyncore for Python, ACE for C++, etc.) to implement the server. The server should support running on Linux.


 

Don't see the perfect job for you?  Sign up for our RSS feed.

 

 

 

 

 
  Contact Us


See all jobs