Lukasz Kwiecinski

Developer

Designer

Architect

.NET

Software Engineering

Aspect-oriented

Software development

 

Lukasz Kwiecinski - Software designer/developer - About Me

 

I work as a software designer and developer since 2002. I have worked on projects for production industry. Since 2005 I have led a team of developers in Tot.Net Software Company.

Here I present myself and my point of view on software development and some ideas in this area. You may think of this site like of my portfolio - there are many links to my source code and publications below.

Craftsmanship or Technologies

Programming has been one of my passions since I wrote the first program in Basic for Commodore 64. Although I know many programming languages, I was using mainly C++ during studies at Poznan University of Technology. Object-oriented design and implementation became the center of my interests. And the C++ seemed to be ideal to express it. After I had learnt Java I understood this is the proper way of languages evolution. However I was waiting for my dreamt technology. It appeared to be .NET and C#. Efficiency, high level of abstraction, object-orientation, power of .NET Framework and Visual Studio 2003 are the reasons I have chosen this environment for my work in ProSystem and Tot.Net companies.

Artistry or Ideas

Software Engineering became my great love during the last two years of education at Poznan University of Technology. Now my objective is to build fast self-validating and flexible software. I consider software technology the main power of effective software development. Processes are very important. But what I focus my attention on are development tools, and reusable components. I study and apply agile software development methodologies.

I used to wrestle with well-known technical problems of software development. I am a perfectionist and I believe in power of automation. Here is the list of ideas and solutions considering main problems mentioned above:

  • Object-Relational Impedance Mismatch
    I developed automated O-R .NET persistence layer with inheritance tree to single table mapping, lazy initialization, full support for abstraction, inheritance and polymorphism, compile time validated object queries and many other advanced capabilities. I plan to publish it as Open Source soon. Currently you may look at publication on previous version of my Persistence Layer Library.
  • Too late, runtime validation, exceptions and weak typization
    I encourage everybody to use compile time validation whenever it is possible. I do not like any constructions basing on strings containing magic subcode (like SQL queries or .NET data binding expressions). Usage of Persistence Layer mentioned above allowed me and my colleagues to avoid many runtime traps. I wrote for example Object Queries, which are designed so that Visual Studio intellisense precluded any mistakes discovered at runtime.
  • Cross-cutting concerns
    Transactions, logging, system activity reporting - all the features spread dirty in many places of code. That is why I developed Aspect-oriented .NET library to modularize such features.
  • Software Reuse
    I have never had a large team of developers to achieve my business objectives. I used automated code generation (I wrote several add-ins and many macros for Visual Studio) to enforce code standardization. Strong typization (also assured by automated code generation) supported us in developing well designed, self-documenting and thus reusable code.
  • Efficient remote client-server applications with rich client
    I do not like web user interface. And many customers and end users share my point of view. On the other hand Internet is the area where all future applications will work. The objective is to build rich clients that connect to remote servers using firewall-friendly protocols (e.g. SOAP/HTTP). But the problem is latency. And transfer object pattern with its unkind consequences for development process efficiency. I am currently working on Fetch-Modify-Update use cases automation so that the transfer objects pattern could be walked around. I have developed aspect-oriented Service Layer for .NET application server which automates remote access basing on .NET Remoting with several enhancements. Looks like lightweight EJB. Will be published soon. Here are sources of the current working version.
  • Partially offline applications (smart clients)
    This problem is associated with the one above. The question is how to cut part of object-oriented business domain, send it to remote client like a document, let him work off-line and after some time merge results of his work with application server state. I have several ideas and plan to implement them. Please let me know if you think about the same!
  • Teamwork
    I belive in power of passion. I know that small team of experts will develop better software than large team of adepts. They will do it faster also, provided they have appropriate tools (automated code generation is the basis). I work with such people and I want to meet more of them. Excellent people, good design, agile practices and powerful tools. This is my mission.
  • Lack of standardization and reliability in world of mobile, hand-held devices.
    Everyone who worked with .NET CE knows the problem. I know it too. That is all. Nothing more than hard work can help us in this area. Mobile means future. I am looking forward to better hardware and tools.

 

Valid HTML 4.01 Transitional