Archive for the ‘ Opinions ’ Category
“Elegance is not a dispensable luxury but a factor that decides between success and failure.” Edsger Dijkstra
We had a discussion today in a meeting and we had an strong insight: we don’t try to create/sell just another RAD framework but we are trying to sell: an environment that will enforce code discipline,an architecture that respects the experience of the industry (like MDA), best practices.
Really! We even decided to sacrifice from the programmer’s immediate convenience in order to deliver what we promise: reduced maintenance costs for the final applications. That could annoy some users if we fail to communicate what we are really selling: DISCIPLINE in PROGRAMMING with MVC, good practices and environment that will inhibit programmers to do clever tricks. Only at the end we should say that we sell a simpler programming framework! Sure, we are also targeting Excel users (at least the most sophisticated ones and only for simple things like CRUDs,simple forms) but it just happens that doing a “visual editor for MVC” led us near possible alternatives to spreadsheets space of tools. It is risky,very risky for a business to educate his customers but we are trying our best to do it in a easy and rewarding way.
Yes, a good education is required to appreciate elegance but usually the most elegant solution is the one that is more simple and efficient (almost by definition of the elegance) and we are thriving to achieve just that!
By best practices we mean things like:
- loose object coupling 
- real MVC architecture (and as simple as possible)
- don’t mix many technologies and APIs in the same place (or like mixing view with controller as in many pseudo MVC frameworks)
- Don’t re-invent the wheel  (we have reinvented it for you )
- Keep things as simple as possible but not simpler. 
- Learn from others mistakes, not your own. 
- Begin with an end in mind 
- If it’s not broken, don’t fix it. 
Reading this post: http://ravimohan.blogspot.com/2006/07/but-martin-enterprise-software-is.html I’ve remembered that basically I have the same beliefs. Doing a framework for enterprise software is not boring at all. Of course we all know that. Doing one to be successful is hard. I’m trying for the 3th time to create a real maintenance cost killer framework for Enterprise software and finally I’m happy with the results (Quark 2.0 is just awesome!!!)
It is almost common sense that a business idea should be a little boring in order to be a good businesses idea (and i’m a little afraid that the work for the framework was not boring enough ).
Our business strategy:
- create a technology to reduce creation/maintenance costs for enterprise software (with real programmers in mind,even if we are oriented even towards beginners or more business oriented people). Yes, you have Spring,Rails that are OK for programmers with medium experience but we can do much more for “Excel programmers” but also for programmers with various skills and interests!
- looking for a way to replace Excel :we are not creating a spreadsheet clone but we want a tool with a similar learning curve as Excel for nontechnical users
- flood the market with good quality software for SMBs (open source and commercial)
Given that, I don’t think Enterprise Software is boring for everybody (is boring only for some hackers) . There are enough people (actually many many people) that have business orientation and skills to use modern programming tools for the creation of new, beautiful and useful software for companies without even asking themselves if it is boring or not.
We depend so much on our tools. Yesterday my Flash Builder(Eclipse based) stopped helping me with code assist functionalities (auto completion mainly) and I had a real problem producing something useful. I spent a few hours finding a solution and I was very happy when I got it solved. (It was one more Eclipse madness, after reinstalling all,creating new workspaces,etc etc, I realized that i was importing Flex projects as existing Maven project not as existing Eclipse projects. Right: silly,silly silly bug in Maven plugin probably )
Are we as programmers becoming too dependent on our tools? The answer is “yes” . But there is no other choice. As humans, after the first stone we started using, we remained very dependent on our tools but that it is what makes us so successful.
Actually, here at Axiologic, we bet our money and time on creating a new generation of RAD programming tools (for programmers, consultants and middle management) so apparently we should try to behave like drug dealers for geeks (unrelated but a funny link http://archive.silliness.org/drugsvsgeeks.html)
We work hard to make our software your next drug! (we have even auto completion for writing code fast ;) but we bet on intelligent tools and architecture to minimize the code that should be written)
I’ve recently received an email with this content:
i am BLaCkViRuS
Your program Security is Very Low < ..link to a rapidshare download page>
If you want we can work together and I have anti-cracking programs that you can do
Have a Nice Day !
He was talking about a program we sell at www.obfusc.com. It was not about security but about how strong the licensing is. That link was to a .exe file that was patching obfusc.exe and removed the licensing checks. Nice and friendly email,isn’t it?
In our backlog we have this sprint a story about introducing licensing for of our new product (SensErp based on Quark Framework) and it is a good moment to express my opinion on licensing and cracking:
- I don’t think that anybody in this world can create the perfect anti-cracking and 100% protection system for a code that will run on a computer where he doesn’t have full control (not having hardware under control)
- Having people creating cracks for your software it means that your software is good and you have market for it and there are people that love what are you are doing. I have received many e-mails from customers pleased by using Obfusc Php and that makes me proud and happy (and I make money also, not the salary of a senior programmer or a software manager but enough to consider Obfusc like a decent investment). Obfusc is a good piece of software but the market where it competes is too small for making me a millionaire :)
- I don’t think that the licensing system for a software should be very strong. It is better for me if somebody really desperate(out of money,etc) find a way to solve a problem using my software and not using other software or not solving their problem at all.
- I don’t think that people using such cracks do such a big business damage to a software producer. Somebody is very desperate if will run dubious .exe cracks on his computers at a risk of contacting viruses or other malicious piece of software on his computer. It is like having unprotected sex with a prostitute… some people will do it but they are not very smart if they take such risks.
- Some people are greedy,yes,but it is not my problem to solve this issue. Even God looks to have a difficult problem with greedy people We will survive and flourish even if some people are unfairly using our software.
- People that are creating cracks for software and especially for software created by small companies (like Axiologic) are smart and highly skilled but are not decent persons: they don’t have any morale or ethical justifications for such actions. They will probably pay for it as other people will notice how they behave. They will probably loose opportunities for cooperation and they will not even notice that.
What was my answear to BLaCkViRuS ? Just that: Your offer to help is not acceptable.
While thinking this weekend on what we are doing with our startup (Axiologic SaaS) I have just realized a surprising fact: having better tools and technologies will mean that the value of code will drop as the code will be cheaper to produce. What it the meaning for businesses? But for professional programmers?
Obviously, source code, like anything else, is worth exactly what one person is willing to pay for it but the first signs of a new reality are already here: a lot of code for enterprise software is available for free ( open source). It is true that lot of current open source code is quite hard to digest,costly to understand and maintain,etc etc. and that is drastically reduce the value of such code ( but it is not my main point for this post )
For big software providers,already is true that the value is not in their source code but in their brand,selling capacity, business models and huge amounts of capital that is rolling apparently forever. Also,I’m not talking in this post about the value of platform’s source code (like Windows, Flash Player,iOS,etc) or about the source code of the tools, I’m talking about software dedicated to companies (CRMs,ERPs,etc).
When we started our startup we looked carefully towards open source solutions that we could offer to our customers at a reasonable price. We found some open source software with value but it is not all roses. There are some document management solutions there are good,some open source CRMs relatively decent (but too complex and hard to sell and deploy,train), some open source ERPs that could work but the cost and risks of adapting such solutions is very high for an self-booting startup. We already had some experience trying to build RAD frameworks and we have decided to invest our money and effort for create better technologies that should dramatically decrease the overall costs of creating and maintaining enterprise source code. Huge and very risky step, but hey, so is life itself:).
In enterprise application we can found at least 4 types of code:
- database schema modeling code (code in a DDL)
- business logic code (in rule engines,workflows or OOP code)
- user interface code
- platform/framework code (generic code that doesn’t address directly the end users needs)
My believe is that lows of physics will demand that in the end all applications that require indefinite level of customization in order to get real and consistent business value will be based on a very strong and customizable platform and a set of open source code (or anyway low value source code) that will act like configuration for the platform.
The industry is already going in this direction by putting efforts toward MDA or DDD (I’ve already mentioned in a previous post). Big ERPs and CRMs names from Microsoft or SAP have such kind of architecture that put some customization in business rules or workflows but these solutions are not even trying to walk on the highest possible peaks. And it makes probably sense for big companies and their customers but puts walls for small and medium companies that should get the best software for their needs at a reasonable cost. Many managers or owners of small and medium companies already have skills to create Excel spreadsheets to create some proto-application for their needs. We are working for a platform to replace those poor quality applications with fully working, professionally looking and fully customizable business applications at a fraction from current software developmental costs (hopefully almost the same costs like creation of a few spreadsheets).
In the end, a nice picture with one of the highest peaks in Oriental Carpathian mountains (a peak I have just visited this weekend)
Nothing is wrong! MVC is the most famous design pattern after singleton but people have very diverse opinions and there are quite a lot of misunderstandings about this powerful design pattern.
MVC design pattern is illustrated by this figure (from wikipedia  ):
Even if those dashed and solid lines are looking a bit dubious, in many existing MVC implementations the reality is even more complex than this, look at the next image from :
Simple? No? Necessarly complex? There is no final answer yet, but in Quark 2.0 we have a simpler and elegant communication paradigm between Models,View and Controllers.
In Quark, the controller is controlling the model and the view is strictly rendering the Model while triggering the controller when the user is asking for something. Also, as you can see in the picture, we are fans of fat models  , skinny controllers and dummy,auto-generated views like in Naked Objects , MDA,DDD  .
We know that some programmers do not have the capacity to understand that a “Model” is not just a wrapper of a database table but our approach that we call “Quark Schema” should make things easier for anybody: advanced programmer or clueless user. Even non professional programmers could do the right things without worrying much about philosophical and technical details of MVC. Our goal is to make a tool and a programming framework that will look and be simple like doing things in Excel but resulting in nicely growed Organic Programs.
 MVC in Wikipedia: http://en.wikipedia.org/wiki/Model–view–controller
 Pure MVC page on Wikipedia http://en.wikipedia.org/wiki/PureMVC
 Links about Fat and skinny Models and controllers, anemic domain model,etc
 Naked Objects, About MDA and DDD : http://en.wikipedia.org/wiki/Naked_objects
And just for fun (and profit for some): About Fat Models
Many people believe that programming is like building of houses and programmers are architects. Others, believe that programming should be more like farming and growing of beings.
A perfect explanation for this thinking is expressed in : “Systems grow and evolve. Often programs die, or succumb to disease. Yet, at the same time, I can feel the pulse of life as information permeates through the network. I no longer seek to claim to be a builder, but one who plants seeds and cultivates the soil. The biological metaphor may sound humble when contrasted to the titles of architect or engineer, yet for a system to bear fruit, it will take cultivation.”
Different approaches (but no one being mainstream) tried to integrate programming with NLP or with multi-agent system, but our current view about Organic Programming can be resumed for a set of simple principles:
- OP should lead to high quality programs,with reduced costs of developing and adapting programs to the needs of the final user.
- following of the best programming practices while hiding complexity for the developer by using advanced frameworks and good UI
- tight integration of the tools used for developing the program with the program itself. These tools can be used at runtime to customise or even to create new features.
- use the right language technology for the right thing. A wider adoption of technologies like rule engines,workflows and well designed domain languages could improve the quality of the programs.
Everybody wants to achieve the good effects of first principle of OP, but few succeeds because they are building programs instead of growing programs. Or at least this is what we believe.
Current mainstream frameworks like Rails or Java framework are not respecting the first principle because they are too focused on code and are using a technology for building frameworks (OOP) for creating programs.
The 3th principles is respected only in some programs, a notable case are spreadsheets and in the next articles we will insist on how our technology called Quark Framework goes towards respecting this fundamental principle of OP. A second version of the Quark framework will be released soon. The first version will be published as open source software next week. At least in the near future we will focus only on organic programming for enterprise software  and not on organic computing .