AJAX reporting – challenges and solutions with Flex

Check out this article to see how two swf components (both written in Flex) can help AJAX folks with processing SOAP Web Services and incorporating professional looking reports into HTML/JavaScript pages. Now our Web reporter ClearBI can get the data from any JavaScript array, from Web Services, from POJO using open sourced openAMF, and, of course from LiveCycle Data Services ES.

Rails is an amazing teacher, but what else?

In Summer of 2006, I ‘ve interviewed Bruce Tate. We were discussing Ruby and Ruby on Rails. Bruce went over specific features of the language, and at the end of the interview, I ‘ve asked him if he could give me a pragmatic reason to switch to Ruby. I really like this Bruce ‘s phrase: “Whether or not it is Ruby, I teach all of my students to learn another language. The effort will make you a better programmer. ‘ Absolutely!

Derek Sivers, creator of the Web site cdbaby.com also states, “Rails was an amazing teacher. I loved it “s “do exactly as I say rdquo; paint-by-numbers framework that taught me some great guidelines.I love Ruby for making me really understand OOP. God, Ruby is so beautiful. I love you, Ruby.

But the main reason that any programmer learning any new language thinks the new language is SO much better than the old one is because he “s a better programmer now! ”

But being a good teacher seem to be the only compliment that Derek can give to Rails. His blog is called “7 reasons I switched back to PHP after 2 years on Rails “. Derek spent two years with an excellent Rails developer re-writing 100K lines of PHP code and then abandoned this idea and returned back to PHP.

Rails is build on an excellent idea of convention over configuration, it allows you to create a working prototype of a CRUD application in minutes, map the code to the database tables that are named in a special way to simplify Rail ‘s job of objects ‘ persistence. But when the prototyping phase is over, and you need to program a commercial application, do you still enjoy the benefits of using Rails for development of this application?

Ruby has excellent language constructs, but the real world commercial applications require a language or a framework that can be grasped by a regular programmer, it should have good development tools, it should be secure, and completed applications have to perform well. Otherwise, you ‘ll get yet another great language like Smalltalk, which is used by a small group of loyal (and smart!) developers.

Derek lists seven reasons why he switched back from Rails to PHP. His last reason is this: “PROGRAMMING LANGUAGES ARE LIKE GIRLFRIENDS: THE NEW ONE IS BETTER BECAUSE *YOU* ARE BETTER “. I do not agree with this statement – the new girlfriend in rarely better than the old one. And Derek also went to a new one, learned some new positions, got familiar with this new lingerie , but then returned to his tried and true girlfriend called PHP. She does not wear Prada, but apparently, she knows how to do stuff.

It ‘s October of 2007, and my question remains the same, “What ‘s the main reason to use RoR for development of the real world enterprise applications? “

Can you hire a good Russian programmer in India

I “ve received an email from an American software company that operates from India. They found my old blog on Russian programmers and thought that I could offer them an advice. Here “s an excerpt from that email,

“We have been trying to hire a Tech Lead in India for quite a while unsuccessfully. It has occurred to us that we might be able to hire a software guy from Russia who would be willing to move to India. Is this tough to do? How does one find Russian talent? rdquo;

First, I “d like to make it clear that Russia as well as many other countries have programmers with good, mediocre and bad problem solving skills. But if you take a 33 thousand feet look at Russia and India you may see the following:

India

Pros: They speak English. They are very mobile and are ready to start a new project tomorrow anywhere in the world. There is a large pool of people with programming skills.

Cons: they have castes, which make people unequal. Programming is perceived as a way to quickly move up and get richer regardless of who are your parents rather than a working in an interesting field. There is a large pool of people with poor programming skills, which makes it very difficult to weed out good programmers.

Russia

Pros: One of the good parts of the communist regime was that having a college degree was available to everyone, and programming was just one of the respectful professions and not a way to get rich quick. Having good problem-solving skills is encouraged staring from the elementary school.

Cons: They are not mobile. Programmers in major cities like Moscow or St. Petersburg often earn three-four times more than programmers living in small cities. The latter simply complain about it instead of relocating. Spoken English is still a problem there.

Both India and Russia have large pools of excellent PhD-grade computer scientists that do not play this outsourcing game.

Yes, Russia has plenty of talented programmers, but finding a talent there is very difficult. I now this first hand because I speak the language, know people there and our company has developers working in several former Soviet Union republics. We cherry pick developers by finding references through people we know, and then carefully watching them. We have bad experience in hiring teams and prefer working with individuals.

Large Russian cities offer very expensive programmers as the cost of living is high there. That “s why we are looking for people in Ukraine and other republics.

But if I “d be running a company in India, I ‘d rather hire Indian programmers than trying to relocate someone from Russia.

The author of this email continues,

“There are a few reasons why we ‘re thinking that someone from an Eastern-block country would be a good match:

1. As a group they are paid much lower than Americans/Europeans

2. In pay they are probably on par with Indians, but are probably more

talented

3. We suspect that they would have much better problem-solving skills than typical Indians do (Americans tend to have good problem-solving skills, but getting an American to move to India gets very expensive.)

4. The candidate would have the opportunity to work with a team in India and a team in the USA; both locations are great for a resume ”

If a good programmer from Russia decides to work abroad, s/he can find

better places to live than India and with better pay. India has people with different skills, and some of the programmers there are brilliant. I suspect that this particular firm is fishing in the low-end market, where people with beginners skills are willing to work for less pay, hence the quality is lower as well.

In this particular case, I “d rather offer a compensation that pays 20% more than prevailing wage for this kind of leadership position, which would bring more experienced local candidates. Yes, it “d cost more, but who said that the quality should be cheap?

Why we do not give away our software for free

When a bus pulls out the bus stop, a person who “s running to catch this bus and the person who is already in the bus see things differently. On the same note, people who use the free software and people who develop it look at giving away the software for free differently. I had a chance to be in both camps hellip;

Besides offering professional services, our company, Farata Systems, creates software components and plugins . When we “ve released our first component DAOFlex and saw a couple of thousand downloads, we “ve decided to invest our own money and created a number of productivity plugins that would save time of professional software developers. Unless you work for a large firm, there is a huge difference between creating an open source and commercial software. With open source components, availability of any product documentation is perceived as an extra bonus. With the for-profit software, a well written documentation is expected, or else hellip;

In the open source software, having bugs is a norm of life, but if you charge for it, any Joe-Shmo who paid $19.95 for this software, expects to have quick bug fixes and an expert-level production support provided by an engineer who “s paid at least $30 per hour.

OK, you want to sell your software ndash; how much? The answer depends on who are your customers. If you sell to lots of individual consumers, preferred price is $19.95 or less and it does not really matter how much money did you invest into producing this software. For many people, twenty dollars is some kind of a magic number, and if an item costs more, people just do not buy it. If you are selling software for enterprises, THE SAME software has to cost at least a couple of thousand bucks, come with a salesman in a blue suit and 24×7 production support, otherwise big guys won “t take you seriously and won “t purchase it.

There is this joke about filthy rich “new Russians “, when one guy meets another who wears a nice yellow silk tie by Armani.

The first one asks, “How much did you pay for it? ”

“$100! ”

“You are plain stupid. Two blocks from here there is a place that sells the same exact ties for $200 a piece! ”

The same principle works with enterprises ndash; the higher the price, the easier to sell.

Getting back to our products hellip; We “ve invested our own time and money and developed a number of productivity plugins that save tremendous amount of time to any professionals like ourselves who work on Adobe Flex and Java projects for a living. Most of our components are priced from $99 to $399 dollars a license. After selling a number of copies we broke even, our R amp;D expenses were covered, and since we mainly sell Flex consulting, we started to talk about either giving these components away for free or cutting the prices since these components are not our main source of income anyway. But after a quick discussion, we “ve decided not to do give them away for free for several reasons:

1. If we make them free, a lot more people may start asking for support, and we do not have a dedicated person to answer such requests. Rejecting these requests is not an option either because people will start badmouthing us in the Web.

2. Our target customers are professional developers who value their time. They could easily do the math and appreciate the savings that these couple of hundred dollars would bring them.

3. As of today, these components give our consultants an edge while working on the projects for our clients. Btw, our clients get these components (except ClearBI) for free. If we “d give them away for free, we “d lose this competitive edge. Want to have an edge too? Spend a couple of hundred bucks while other people enjoy free software.

4. Giving components away for free while selling support is not an option for us, because these components just work and do not need much support especially for those who found the time to read the fine manuals (a.k.a. RTFM) that come with the products.

Free software plus premium for services works for creators of JBoss, Hibernate, Spring, Ruby on Rails, and AJAX frameworks because all of the developers that use these packages benefit from having an expert in the respective product handy. Our components are automated and can be used as is.

In the USA, a minimal price is being enforced on some grocery products, and stores are not allowed to set the price lower. Why? To keep the small convenience stores running. Without this regulation large supermarkets would start selling milk at 20 cents a gallon. They “d lose money on milk, but it would not really matter because after entering the store, the customer would purchase lots of other products at a substantial markup. But such a low price on milk would have killed all small stores in the area.

On the same note, the big guys give away software for free. Sun Microsystems made Java and NetBeans free. Tibco has open-sourced GI, their AJAX tool. Eclipse IDE is an open source project (let “s pretend that we do not know that it has started with a $40M worth of code donated by IBM). The big guys are killing small independent software vendors, who understand that they won “t be able to compete with a price tag of 20 cents even if their “milk rdquo; will taste a little better.

So why do we even develop these components? Because we can, and it “s fun. Do these components help us in finding consulting jobs? Absolutely! Seasoned hiring managers understand that if we were capable of creating this software the chances are high that we “ll succeed in working on their projects as well. And to be completely honest, somewhere in the back of our minds there is this little thought that may be one day some big firm will decide to acquire our small company because of our products.

Sincerely as usual,

Yakov Fain

Congratulations! India is outsourcing jobs to the USA.

You have arrived to your destination. Wipro, a large IT firm from India is planning to hire people in Atlanta , GA.

I follow the outsourcing trends very closely, and this sounds very logical to me. First, about ten years ago, someone has found a golden mine: there was a place on Earth where people were willing to write software for $1 an hour. Some smart entrepreneurs made a fortune by charging modest (by American standards) hourly rates and delivering OK jobs. Since Indian programmers were dirt cheap, some body shops started entertain “nine women=a baby in one month rdquo; strategy. They were giving the same assignment to 9 different programmers, and at the combined expense of $9 an hour someone would definitely get the job done.

Because of poor planning done by mediocre management, enterprise America required more and more software applications to be developed. Ninety percent of this software would wind up in a waste paper basket, but that “s OK ndash; highly profitable corporations did not even notice this.

Smart Indians quickly figured out that filthy rich America needs help and this was a chance for them to get out of poverty. Especially for those who were not lucky to be born in a high caste family. Hotel, motel, Patel. Engineers and people with no degree went to vocational schools in India. Armed with the knowledge of programming basics and trained to win in a “technical interview rdquo; game they did not have serious difficulties in getting job offers. The H1B visa became a typical way for Indian programmers to get into the country. Then the green card process followed by American citizenship for those who wanted it.

But since there is a limit to the number of programmers America lets into the country, a mass production of programmers in India caught attention of American management and the outsourcing of software development slowly became a norm of life. Americans got scared, and decided that IT career is not for them. Enrollment in CS and IS is at its lowest levels.

If outsourcing has started because of lower hourly rates offered by the offshore companies, now it “s flourishing because of the fact that you simply can “t find a programmer in America. The salaries in India are getting higher and higher, and apparently, they are already high enough to be offered to people in Atlanta, GA, USA.

Now watch carefully what Indians will do while American smarty pants in Academia are discussing curriculums of the Computer Science majors. No,no,no,no,no, Indians will not participate in these discussion clubs. They will quietly repeat what they did in India. They will open vocational schools, and will train low-income local citizens of Georgia, Utah, Montana to give them basic skills to handle if-statements, which is pretty much all that “s needed for 50% of today “s enterprise projects. Talking about a cookie-cutter effect hellip;

Everyone will be happy now: a manager of a Fortune 500 firm is outsourcing the project to Bangalore, which offers them teams staffed with native English speakers, the fellow citizens. Do not expect another Google coming out of these teams, but they will get by. Enterprise managers will be able to deliver mediocre quality products according to mediocre quality project plans, which will let them to achieve their ultimate goal: career advancement. t “ll take another three years till America will accept the notion that India is THE place to develop enterprise applications, but a large portion of this work is outsourced to the USA.

What “s next? Do not be surprised if you “ll be offered relocation to Bangalore, or else hellip;

Once again, being an employee or a consultant?

This is a response to Jim McGovern “s blog titled “Are you a consultant ” . Just for the reference, Jim is employed as an enterprise architect by a major insurance firm. In the past, we “ve co-authored a book together, and I can assure you that he definitely knows what “s happening in the real enterprise world and his insights are often interesting and thought provocative.

Working as an employee or a consultant is an interesting subject and I “m planning to cover it in details in my upcoming book “This life of an enterprise programmer “. But in this blog, I “ll just take Jim “s observations about consultants and will try to see how they apply to employees. I “ll keep quotes from Jim “s blog about consultants in italics.

You work very odd hours. It ‘s difficult to maintain a relationship or a family. You are paid a lot of money to keep your client happy. You are paid well but your pimp gets most of the money. You spend a majority of your time in a hotel room.

You work very odd hours without being paid for all these endless evenings you spent in the office to keep your manager happy. You salary is OK, but you “ve been brain washed that your total compensation package is twice as big, because you are getting extra perks like 401K plan with no or minimum contribution from your employer, free car wash, laundry on premises, gym that you do not use and discounted tickets to the Broadway shows that you do not like. You spend majority of your time at work.

You charge by the hour but your time can be extended for the right price. You are not proud of what you do. Creating fantasies for your clients is rewarded. You have no job satisfaction. If a client beats you up, the pimp just sends you to another client. People ask you, “What do you do? ” and you can ‘t explain it.

You do not charge by the hour, hence it “s assumed that your time does not worth anything. By the way, Joe, can you join the meeting at 6AM tomorrow so our offshore partners won ‘t need to stay late? If you do not like what you are doing, you are pretty much stuck, cause even if in theory you can ask for a transfer within the same organization, you “d better plan to spent the rest of your employment with your current manager. Your only hope is that your manager will get a raise and will be transferred somewhere else. But will the new manager be better?

Your client pays for your hotel room plus your hourly rate. Your client always wants to know how much you charge and what they get for the money.

Your manager knows exactly how much you make, and wants to make sure that he gets as much as possible for the money. He also knows that one can “t get blood from a stone, but given your modest salary, he can live with it.

You know the pimp is charging more than you are worth but if the client is foolish enough to pay it ‘s not your problem. When you leave to go see a client, you look great, but return looking like hell (compare your appearance on Monday AM to Friday PM).

You believe that you are underpaid and it bothers you all the time. You do not think that it “s fair to work your ass off as you do day in and day out. Compare your appearance on Monday AM and Friday PM. Actually, you may get a call on a weekend too.

You are rated on your “performance ” in an excruciating ordeal. Even though you get paid the big bucks, it ‘s the client who walks away smiling. The client always thinks your “cut ” of your billing rate is higher than it actually is, and in turn, expects miracles from you.

You are rated based on the stupid rules invented by someone in the HR department. All year you are earning points for good behavior. The highest points are earned if you fill and submit your timesheets with detailed description of your work on time. If your group will actively participate in one of the firm-wide social initiatives, they “ll allow you to come on Wednesday wearing jeans. Your manager does not expect miracles from you, but is pleasantly surprised when you deliver one. Hint: save your miracles till October/November when the raise and promotion decisions will be made.

When you deduct your “take ” from your billing rate, you constantly wonder if you could get a better deal with another pimp. Everyday you wake up and tell yourself, “I ‘m not going to be doing this stuff the rest of my life. ”

When they deduct your taxes from your gross income, you constantly wonder if you could get a better deal with another employer. Once in a while a crazy thought strikes you, “May be I should try to become a consultant myself? rdquo; But then you arrive to your comfy cube, see all familiar faces hellip; and then say to yourself, “No big deal. I have only 15 years to my retirement. If I control my emotions and maintain good relations with my boss, I “ll spend these years without major cataclysms.

So, are you a consultant or a prostitute?

I “m not going to ask you this question. You know the answer: we all are prostitutes to some degree.

Giving career advices to friends: now and then

Last week, at the private party one programmer I know for years approached me and said, “I “m planning to enroll in your class at NYU next month rdquo;. I was surprised and asked, “Why? rdquo; This guy is a well rounded programmer employed by a large firm for years.

“I need more money rdquo;, he said.

Well, lots of people need more money, but only a small group of people is actually doing something about it…

A guy comes to a rabbi saying, “Our family is so poor, I dream of winning in the lottery. Can you ask God to gelp me? ”

The rabbi say, “OK, I ‘l ask God ”

In a month, the guy comes back to the rabbi and says, “Nothing changed, I ‘m still poor. Have you talked to God about me? ”

“I did, but have you bought a lottery ticket? ”

Anyway, this programmer has already earned my respect just for thinking about going back to school (not the same as going to school).

I answered, “Sure, will be happy to see you in class rdquo;. I “ll start teaching my fourth (already!) Adobe Flex evening class at NYU in October. But then I thought to myself, “Will my class help this person to achieve his goal? rdquo; The answer is, “I do not know rdquo;.

Now let “s go 10 years back in time. In the ninetieth, I was teaching PowerBuilder and Java and was absolutely sure that everyone has to be a programmer. Programming was super hot ten years ago. Just think about it, my students with absolutely different backgrounds (engineers, musicians, hairdressers) where often getting 2-3 offers after studying programming for six months.

I had a friend who was working in a restaurant, one block from home. He started washing dishes there, then became a waiter, then a cook and then a bartender. This was the time when I was giving the same advice to everyone, “Go to school and become a programmer. It “s a no brainer! rdquo; When I gave this advice to my cooking friend, he simply said, “Why? I work three days a week, one block from home, no pressure, and free food. Why should I become a programmer? rdquo;

He was the first guy that asked my “Why? rdquo; After that day I stopped suggesting programmer “s career to everything that moves. Just for the record, one year later my cooking friend came to my class and works as a programmer as we speak.

But it “s 2007, and the situation with employment is different for several reasons:

1. Ten years ago some smart people invented the Y2K problem. They made a career for themselves by spreading FUD and hiring like crazy huge teams (30-40 mainframe programmers on a projects was a norm) to save the mankind from the Y2K disaster.

2. Internet and dot com were flourishing and investors would pour the money into any startup that was able to present a business plan without spelling errors. Java ruled back then.

3. Outsourcing to India was not a major trend.

4. Americans just started to being afraid of going into software muddy waters. In some enterprises you could have seen teams with as many as 50% of programmers who were born in the USA. No kidding.

5.My past students were happy to stat their career with a $50K annual salary.

6. Knowledge of one (!) programming language and one(!) DBMS and playing a nice guy during the job interview was enough to get a job.

But the person who is about to enroll in my class next month is about to enter a lot more competitive world.

1. He needs a six figure income while hitting the ground running.

2. He needs to know about 10 programming languages and tools to secure a good job today.

3. He already has stable programming job, so motivation is kinda low.

4. I don “t know if this person will be able to find an extra four hours a day for studying.

5. On the positive note, outsourcing does not affect the six figure market that much. No excuses there

I just do not want to take any responsibility and promise success to anyone anymore. Yes, I still know how to teach well. Yes, I still can give an advice about what “s important to learn and what “s not. Yes, I still know how to prepare a person to a job interview. But I do not want to promise anything anyone any longer.

I “ll do my best, but you are on your own, my friend. If you won “t succeed in this career move, look in the mirror and say, “This is not the end of the world. I still have a job rdquo;. But if three years from now you “ll decide to try to make a move again, you know where to find me. I do not know what “s going to be hot three years from now, but I “ll master the next big thing in advance. Trust me on this one and welcome to the class.

Vibrator Dilemma

I “m not too shy when it comes to use analogies while writing about software. But this blog makes my writings look as if they “re written by a kindergarten boy. Comparing using code generators with vibrators is very fresh and original idea.

In the essence, the blog author is right ndash; people quickly become addicted to code generators and frameworks and can quickly forget how to write code when they are on their own. Recently we “ve demoed our code generator to a perspective client, and they “ve said, “We are very impressed with your code generator. Creating a CRUD rich Internet application in 5-10 minutes? Wow! But what if you guys are not around? We “ll get used to your code generator and what if something goes wrong? rdquo;

Isn “t it a vibrator situation? But this does not mean that you should not be using frameworks and generators. But use them smartly without forgetting about the hand job if you know what I mean. You can find my blog about new breed of framework coders over here . What a boring reading isn ‘t it?

Do you want your child to be a programmer? Part 2.

I do. Earlier this year I ‘ve blogged on this subject , but this subject conserns me a lot and and this is a version 2.0 of that blog.

I had this conversation with my colleague who is one of the top IT professionals I ‘ve ever met. He does not want his kids to become programmers.

When my older son Yuri was senior in high school, he said that he want to study classical animation in college. What would you say? My wife (she “s also a programmer), and I said, rdquo;OK, not everyone has to be a programmer. We already have two in our family rdquo;.

Now he “s graduated with bachelor degree in Fine Arts majoring in classic animation. Now he draws cartoons for various TV shows and creates animations for commercial Web sites using hand-drawing and Adobe Flash.

Things could have been so much easier if he ‘d chosen the IT career ndash; I could have helped him with every step he “d make. I know the IT industry inside out, I know the rules of the game, I could have taught him how to write a resume and prepare for the technical job interview, I know how to set work priorities while working on a software development project… But he ‘s a talented kid, who “s not interested in learning all this, and we decided to let him do what he likes.

Once in a while I approach Yuri asking if he “d like me to re-train him to be a programmer so he could have doubled his income. He rejects. I respect this as long as he pays his bills.

My younger son is an eighth grader, and I hope that he “ll decide to become a programmer.

My colleague ‘s argument was that 10 years from now all programming will be done in India anyway, and there is no reason to send your kid to a CS school. I absolutely do not agree with this. Animation industry does not have these outsourcing issues yet, but my older son had really tough times finding his first job. His friends, who have graduated with CS degrees, did not have any problems finding well paid jobs right off the college.

In terms of return on investments, I do not think that there are too many professions that would pay annual salary of $50K to fresh graduates of a second-tier college. And if you hold BS in Computer Science from one of the well known schools, your first salary will be $70K or more.

No, the low cost labor from India will not change the IT landscape in ten years. In many cases low cost means low quality.

“Yakov, come on, we are paying only $30K for a team lead in Bangalore! rdquo;

“Mary, I “d love to check the damage to your budget by the end of the project. Most likely, it “ll run a lot longer than expected, and the cost will be A LOT higher than was expected. rdquo;

The real cost of the outsourced projects is the best kept secret. Good programmers in India are already demanding higher rates, and this trend will continue. We “ll talk about outsourcing a bit later in this book.

I won ‘t push my younger son into software engineering, but will be happy if he decides to become an IT professional.

Sony plus Vista equals Catch-22

When I ordered my Sony VAIO laptop back in January, its spec listed Windows XP as an OS. The box arrived on Feb 1 with Microsoft Vista. This new OS looked nice from the GUI perspective, and I decided to keep it, which was a mistake in the first place. Pretty quickly I “ve installed lots of software, and started to experience compatibility issues with various third-party programs. Vista was too young and the vendors were not in a hurry with updating their software for this new OS.

More importantly, Vista consumes lots of system resources, and its transparent and cool graphics hurts the performance of your system. I knew that I “d be better of replacing Vista with Windows XP, but just did not want to spend a day reconfiguring drivers and reinstalling software.

About a month ago I said to myself, “Enough is enough. I do not see any compelling reason to have Vista, let me get rid of it. rdquo; I “ve formatted hard disk, installed XP, went to Sony “s Web site, found all the names of the drivers, googled them up and installed them.

Boy, I was happy! Windows XP is much fasted on the same hardware than Vista. I did not know that there was a time bomb there hellip; Yesterday, I went to a client to make some presentation. When I “ve attached the projector, it did not recognize my laptop ndash; no signal. Pressing Fn-F7 did not help. They brought another projector ndash; did not work either. Tried another laptop ndash; projector worked just fine.

Now I “m having issues with some hot keys (Fn-F7) that do not work. I called Sony Tech support, and they answered, “This laptop was build for Vista, and we do not have any utilities to make your hot keys work with XP. Reinstall Vista, and we “ll be happy to support you as per the warranty. rdquo;

“But I did not order Vista in the first place, your VAIO just came with it! rdquo;

“You should have returned it back to us rdquo;

End of story.

Lesson learned:

1. Never ever use Vista ndash; it just not worth it.

2. You lose your Sony warranty the minute you install another OS

3. If you are professional software developer, do not purchase Sony Vaio.