About Me

My name is Nicholas Hagen.  I am a Software Engineer with over 11 years of professional experience specializing in web technologies from both an engineering (backend) and user interface (frontend) perspective. Apart from my personal on-the-side projects, I am actively employed by ESPN.

I consider myself an all around developer in order to fully implement a given project by understanding each and every layer.  My particular strengths are usability and designing/architecting systems.  I have experience in the complete product lifecycle from designing a system top to bottom as well as designing and implementing the user interface.  I am very engrossed in usability as I consider it first and foremost the most important piece of software. In my opinion, everything starts at the UI. Unlike most projects, the UI should feed the backend system in terms of requirements, APIs, etc. I have found all too often that user interfaces suffer due to lack of capabilities at the backend layer.

In terms of technology, I am primarily a Java developer specializing in J2EE technologies including EJBs, CDI, JSF, Facelets, Spring, JSP, Servlets, and JPA. I am also very familiar with various templating languages and technologies including Grails and Groovy. I also have experience in a wide array of libraries including hibernate, ehcache, struts, jstl, etc.  I have been both a designer of the backend UI systems based on J2EE as well as the frontend architect for layout, page flow, and design. There is a common misconception that engineers engineer, designers design and programmers program and there is no overlap. I do not accept that and believe very heavily in overlap. As I stated before, UI and usability is my passion and Java is my strength. The two go hand in hand to be able to fully implement and lead a project to successful completion.

I am also an avid PHP developer using the LAMP application stack. I come from a Linux background and grew up on Apache, PHP, and MySQL. I still build many personal sites on PHP when they do not require the complexities of a full J2EE stack. I firmly believe that PHP still has and will continue to have a very strong place in the web today.

In terms of web designing, I am very strong in next generation web technologies (HTML5, CSS2/3, etc) and Javascript. I believe that web 2.0 was just the beginnings of exciting and interactive web sites and that web 3.0 will really show off those capabilities. HTML5 offers some very exciting capabilities and the new advance of native javascript performance will allow more client-rich applications to appear. I have been designing websites for well over 10 years and have always been rich on client-side applications. Several developers believe that Javascript does not have much of a place anymore in the web and applications should live primarily in the server tier. I completely disagree with that. In fact, I am the opposite. I believe business logic should be simple and remain on the server side and user interaction should occur via Javascript on the client. Native client interaction via javascript and advanced HTML5 support will always improve usability rather than relying on long page reloads.

Speaking to non-technology, I consider my main strength analysis. I love to analyze code, solutions, errors, performance, and debugging. There are always 10 different ways to reach the end of the road. However, not all 10 always make sense. Analyzing those different methods to choose the best pattern that makes the most sense from an architecture, performance, and usability standard is my strength. I also pride myself on performance analysis in order to debug, understand, and remedy situations to really optimize systems. My other strength I find vitally important is code comprehension: the ability to read, understand, and maintain code. I have always been surprised in my years of experience how many programmers lack in their ability to really read and understand code or implement code from a set of requirements. One of the reasons I am able to analyze and debug software is my ability to understand it and follow it through. This also allows me to get up to speed on new technologies very quickly or to be able to maintain or add a new feature to existing code. It also helps me to understand the end libraries to know the best practices and methods of implementation. This is precisely the reason I understand so much of the JSF stack and inner workings. Without a full understanding of the library, implementing a sound decision can be difficult.

I also consider myself a leader. In all of my past and current experiences, I have always become a leader due to my high quality of work and understanding. I have also become the mentor often times to help co-workers with a wide array of solutions including web technologies, java, and just overall designs/patterns. I continue to grow myself and exert my skill set everyday as a leader.

The following is a portfolio of some of the projects I have built under my Z|NET Development consulting businesss.

My professional experience includes the following companies.

  • Digi International, Inc (UI Developer [HTML, DHTML, CSS, Javascript, etc] and Software Engineer [C++])
  • Trane, Inc (UI Developer [JSF/Facelets, HTML, DHTML, CSS, Javascript, etc])
  • ESPN.com (Software Engineer [Servlets, J2EE, HTML, CSS, Javascript, Performance, POC])