When computer programming will die out as a trade in the USA?

Several years ago I went to a toy store with my 7 year old son. He picked up a toy and noticed a stamp: “Made in the USA rdquo;. He was really surprised and asked, “Daddy, I thought all toys were made in China rdquo;. I “m sure twenty years from now most people will expect to see “Made in India rdquo; on every software box. And the sad thing is that posts like “The perils of Java Schools rdquo; help this to happen even sooner. Joel states that the Java language is too simple to be used as a tool for weeding out mediocre programmers.

IMHO, we need an easier college program that would quickly prepare junior computer programmers. These days at least 95% of programmers do not do anything more complicated than writing “if rdquo; and SQL statements to populate a form with some data from a DBMS. And this is exactly what our friends in India do. They train people with ANY engineering degree to quickly become programmers. And this is smart. At the same time some USA nerds are complaining that they miss pointers, because it helps working with Linux Kernel. Just give me a break! I do not deny, we need CS college programs for people who would like to work on OS-level software or on complex mathematical modeling, but this has to be THEIR CHOICE. Currently, colleges do not offer business-oriented IT undergrad programs. We need specialized degrees like “Computer programmer for Finance “, “Computer programmer for Telecommunications “, and the like.

If ones goal is to make $50-60K a year by working as business application developers, they should have a simplified curriculum that will help them to learn the basics required in businesses and find a job. The Bubble Sort algorithm has to be the most difficult topic in such courses. On the other hand, this program has to have at least half of the subjects teaching software engineering.

In USA, people are already scared to death of CS major. Let “s not make things worse. Do you know how most of the kids pick their majors? They listen to their parents’ advice. Do you know why parents do not advise their kids to pick CS or CIS as the major? Because they hear these horror stories about how difficult it is to survive in such colleges and then it “s even harder to find the first job because of outsourcing. Why not create a simple program that would allow faster (yes, not fundamental) baking of computer programmers for businesses? After a while, some of such graduates will decide to enroll in more fundamental CS programs, which is fine, but let them make this decision.

Five years ago a mother of the CS freshmen of the state college called me asking to tutor her son in Java. This 18-year old guy told me, that the goal of the first semester “s program was to have most of the students leave the CS major. It did not sound right to me, but when he showed me his first Java project I realized that he was telling the truth.

Anyway, I helped him and he survived the first semester and after the second one he quit the college, found the job as a computer programmer, and later on slowly completed his CS degree part time. My point is that he was able to work as a business computer programmer without being a computer scientist (let’s not confuse the two).

So how long does it take to prepare a junior computer programmer with a set of skills required in most of the IT departments? 18 months or less. I can do this in 6-9 months, if the students are highly motivated. Let “s learn from India, and succeed.

I can speak about the situation in the USA only, and if we want to have people learn computer programming they should have a choice of easier industry-oriented majors. JavaLobby has an interesting discussion on the same subject and some people suggest similar solutions.

If the academia will not make required changes in the curriculums, pretty soon most of the programming jobs will be outsourced to developing countries, and this will happen not because they charge less for the job, but because you won “t be able to find any programmers in our country. Actually, I “m wrong. We “ll still have several thousands of really cool programmers who will be able to explain how the OS Kernel works hellip; if they’ll find anyone willing to listen.

Open Source: the Circle of Life

I like free software, especially if it “s legally free. When a bunch of programmers-enthusiasts gather in a basement ( a.k.a. sourceforge.net ) to write some tools for fun, it “s a real open source. Meanwhile, up in the sky a bunch of hawks (a.k.a. venture capitalists) are slowly sailing over the sourceforge ready to dive… Then a tool xyz is getting popular and 50000 people have downloaded it. Creators of xyz start thinking, “Can xyz make us some money? rdquo;. At the same time the hawk dives upon the download counter used as bait…

The corporate world ignores xyz for some time, until xyz becomes a household name. It “s a really difficult task for any software to be approved for use in production environment. Meanwhile, up in the sky a bunch of hawks (a.k.a. open source service providers) are slowly sailing over the corporation ready to dive. The corporation wind up with a free software and expensive service, training and support. At the end of the day, production deployment of the open source software is far from being free, but the total cost of ownership is still cheaper comparing to a similar commercial product.

So is this bad? Absolutely not. It “s a win-win situation:

a) for hawks (they make money)

b) for corporations (they save money)

c) for creators of the open source software (they become celebrities, which is exactly why they “ve gathered in the basement in the

first place)

d) for regular developers like you and me (we can download free versions not only of the open source products, but legally

free developer “s formerly trial versions of commercial software: the vendors have to package give away free version of their software to compete with the open source products ).

Who is the loser then? The short term loser is the software vendor who “s producing the tool competing with xyz. No worries. First of, they “ve earned enough money in the past reselling the written-once software. Second, instead of selling their software, they “ll make it free and will charge premium for service and support. So they are not losers either.

Next morning, in one of the basements two smart college kids will come up with a new idea (i.e. to make a better and faster search engine)… While kids are working on their engine, the hawks are thinking of the proper business model for this tool…. The president of the corporation N keeps sleeping well …for another couple of months…

Competition rules! Open source rules!

Peeking into December of 2006

In a week, 2005 will become history, and I tried to guess what will change in the software development a year from now.

1. Enterprises will finally start using Java 5. The sooner 5.1 version will be released the better.

2. AJAX hype will calm down. AJAX is an interesting technology, and will become one of many techniques used in Web applications development. Nothing more.

3. Fat clients will be more widely used in distributed enterprise applications . Java still has a chance to be used in this area, if someone will create an IDE with an easy to use and powerful Swing GUI designer. JDeveloper and NetBeans have one of the best Swing designers. Macromedia tools will become more and more popular.

4. Smart development managers will start creating mixed open-source/commercial environments. For example, you can use open source J2EE servers in Dev and QA and their commercial counterparts in Prod and Contingency environment. The same is applicable to DBMS, messaging et al. Some open source vendors are already moving in this direction by creating products that are 100% compatible with particular commercial tools.

5. A new software architecture for small and mid-size businesses should arise. IMHO a good candidate is what I call Client-Server Message Bus (CSMB). A set of client server applications can talk to each other using open source messaging and an enterprise service bus. Note: client-server applications can have more than two tiers, i.e. RMI client, RMI Server and DBMS.

6. Programming will become a trade of a young generation. Mid-age programmers will be leaving the coding arena and moving to business analysis and management. You can’t beat a 25-year-old Indian programmer who’s ready to join any project tomorrow (in any place on Earth) sharing a room in so called guest apartment. The code quality of such a programmer may not be as good as was expected by the employer, but this will be a little secret for some time, and smart kids will have enough time to learn how to program on the job.

7. A number of CIOs will come out of the closets and publicly admit that the real cost of the outsourced projects is high, because for every two young Indian programmers you need a local business analyst who will write super detailed functional specifications and validate their work. But outsourcing is here to stay (at least in the USA) and not because overseas programmers charge less, but because just finding local programmers will become a difficult task.

8. Yahoo will come up with some new innovative Web products that will be able to compete with Google’s software. If not Yahoo, who else?

9. By the end of the year the broadband Internet will give DSL and cable Internet a run for the money. The wireless companies just need to cut the prices of their broadband service, and masses will be leaving their “traditional ” ISPs.

10. Java use will steadily increase despite the fact that various replacements are being offered. Java is more than an excellent object-oriented language enriched by tons of productivity libraries (networking, multi-threading, security et al). It’s a mature and proven platform for development of all kinds of applications for all kinds of hardware. Java in programming plays the same role as English in the real world. No one says that Italian language will replace English any time soon. On the other hand, songs in Italian sound great.

In a year we’ll see which of these predictions will hold true.

Happy New Year!

Transit Unions must be banned

Today is a third day of the transit workers strike in New York. Their union moron-leaders say, “Dear New Yorkers, we apologize for the inconvenience “. It’s similar to a situation when a maniac killer tells to his victim, “Sorry, but I have to kill you, otherwise I’ll feel depressed “.

These criminals do not care that because of them hundreds of small businesses will go bankrupt. Many of them are surviving day in and day out relying on the cash flow from their customers. But their customers can not get to these businesses. Sorry guys, we have to put you out of business , because we’d like to improve our pensions…

MTA workers complain that they have to work overtime to earn $50-60K a year. I have a suggestion for you how to make $50K a year working from 9 to 6. Just get your lazy ass to school for four years, get $50K worth of students loans, study hard and after going through all these hassles become a computer programmer with a $50K annual salary. Most likely though, you will not enjoy the same benefits as you have now, but I’m sure you’ll fix it by going on strike! Start with threatening your manager that you’ll stop writing if-statements first. If this does not help, stop using loops and iterators. If your manager still does not want to bend, stop instantiating any objects.

Now the union leaders are trying to play dirty, “This billionaire mayor does not understand the needs of working people “. These welfare products do not see that this mayor helped to reduce the city deficit from $4B to $1.5B after the damage caused by 9/11.

They go even further, “our workers are predominantly black and Latinos, that’s why our needs are not addressed “. Yeah, right! Thank you, OJ!

If I was a mayor, I’d start training people to drive buses. And I’d do it today. It’s not too late, we’ll adjust to the new way of commuting to work, and in a week the busses can start moving people. Lots of computer programmers who lost their jobs will be happy to drive city buses. Mayor Bloomberg, do not negotiate with criminals. Play hard!

Java Failure can Lead to Death

Next time you ‘ll be getting rid of your old technical documents, spend a moment and browse them. You may find some interesting perls there.

I ‘m reading the document called “End-User License Agreement for Microsoft Desktop Operating Systems ” (Windows NT Workstation version 4.0 in particular). The clause number 7 is called “Note on Java Support “, and it states the following (I did not change a single word):

“The software product may contain support for programs written in Java. Java technology is not fault tolerant and is not designed, manufactured, or intended for use or resale as on-line control equipment in hazardous environments requiring fail-safe performance, such as in the operation of nuclear facilities, aircraft navigation or communication systems, air traffic control, direct life support machines , or weapon systems, in which the failure of Java technology could lead directly to death, personal injury, or severe physical or environmental damage “.

I realize that this masterpiece was created by Microsoft lawyers, but I have a question: can misuse of Visual Basic in exactly the same environment lead directly to death? I guess not, because this document did not have similar clauses for any other programming languages but Java.

This NT 4.0 document was pretty old, but here ‘s the newer one on Microsoft Exchange Server that has the same clause. Way to go, Microsoft!

Apple also writes the same thing (read the last paragraph over here )

Tesing the broadband wireless connection

Yesterday I’ve subscribed to a broadband wireless connection. This means that you just insert a card

in your laptop and you’re online. I decided to try this service because I spend two hours a day riding a bus.

I had two major concerns:

1. What will be the speed of the connection

2. Will connection be stable without any interruptions.

I type this blog sitting in the bus that moves with the speed of 70 miles per hour.

I’m listening to a streaming internet radio and browsing the internet.

Internet radio works fine.

Then I tried to watch the streaming Flash videos and they were choppy. At this point I’m not sure if

this is an issue with the streaming servers or this internet connection is chocking up.

As to regular Web browsing, it works at least as good as my home cable connection,

but the service was disconnected once and it took me less than a minute to reconnect.

Sure enough, the speed of connection depends on proximity to major metropolitan areas

(this is were the wireless provider build the most of their relay stations.

Here’s the speed connection test results I ran using an independent speed test provider while being 45 miles away from the New York City:

Speed: 326.6 kilobits per second

Communications 326.6 kilobits per second

Storage 39.9 kilobytes per second

1MB file download: 25.7 seconds

Subjective rating: Not bad

Date amp; time Monday, December 19, 7:13AM

Connection type Wireless: 3G

Region New Jersey

Data size 1024KB

Avg. speed: 0.31 Mbits/sec

T-1 speed: max. 1.54 Mbits/sec

And this test I ran right across the river from NYC:

462.3 kilobits per second

Communications 462.3 kilobits per second

Storage 56.4 kilobytes per second

1MB file download 18.1 seconds

Subjective rating Not bad

Date amp; time Monday, December 19, 8:21AM*

Test type IDT4 Free

Connection type Wireless: 3G

Region New Jersey

Data size 1024KB

My provider’s statistics tool shows me the following data (it also fluctuates as my bus moves):

Max transmit rate (Kbps): from 40 to 55

Max receive rate (KBS): from 300 to 750

Oops, the bus is entering the tunnel that goes under the Hudson River… Believe it or not, I’m still Googling!

This test I ran inSpringfield, MA

Communications 109.4 kilobits per second

Storage 13.4 kilobytes per second

1MB file download 1.3 minutes

Subjective rating Mediocre=

Date amp; time Friday, December 23, 8:36PM*

All this feels great, but if I’ll keep this service, I’ll lose these couple of hours a day when I was disconnected from the net. Is this a good thing? I really do not know.

The City of New York

The City of New York is in stable economical condition

I “ve been listening to the radio and the talk host said that the New York City is in “stable economical condition and is heading in the right direction. Its budget deficit will drop from $4B to $1.5B rdquo;. This does not mean much for many people, but just go 4 years back. These 19 animals killed thousands of people, destroyed the Twins, and seriously damaged the city “s economy. Many people predicted that New Yorkers will be leaving the City, the real estate prices would drop, the tourists would avoid New York, people would stay out of job, yada-yada-yada. Guess what, none of this have happened! The real estate prices in Manhattan are skyrocketing (about a $1000 a square foot), the hotels and the restaurants are full of tourists and locals, and there are plenty of jobs (for those who is willing to work).

The Mayor Bloomberg does not have as much charisma as the former Mayor Giuliani, but he knows his shit. Sure enough, there are these Unions, that are like the splinters in a healthy middle finger, and as I write this, I “m not sure if I “ll have a ride home: they are threatening to go on strike today hellip; But what you “re going to do hellip; The world is not perfect.

I “m on the bus now and am sort of restricted in actions: all I can access is my laptop and this lady sleeping next to me. But if you can, grab a can of beer, a glass of wine, or a shot of vodka and drink it to the City of New York!

A cup of AJAX? Nay, just regular Java please.

These days everyone is talking about AJAX. It’s supposed to be a cool way of creating Web applications.

The idea is noble: instead of rendering an entire HTML page on each little change on the page, it “s much better to send an asynchronous request that will get the data for you and refresh only the relevant portion of the screen. Every author writing on AJAX is giving the same (the only? ) examples where this technology is being used: Google maps and email. (BTW, I “m a little sick of these examples). Since I “m not going to be helping Google in improving their maps, I “d like to see some real-world examples implementing this technology. Ajax proponents will immediately come with this exciting example of how great it is to refresh some screen info as the user enters character in a text field. And here’s a sample conversation that might have happened between an imaginary AJAX supporter and myself.

See, I “m just typing the letters of the person “s name, and as I type it prompts me with all potential candidates like in Microsoft Outlook
Wow! I like it hellip; as long as you do not have to be a rocket scientist to program this functionality. But wait a minute, do not you think that any entry level Visual Basic/PowerBuilder/Java programmer can do the same thing easily? AJAX applications have to rely on JavaScript, assume the expert knowledge of this not-so-interesting language, different Web browsers may give you different serious issues, may not even always report the problems in communication between you browser and the server, yada-yada-yada..
Yeah, but we want this functionality under the Web browser.
But what about using Java Web Start (JWS) to launch the full-fledged Swing clients? They can easily process events, work the same way under each operational system?
Yeah, but what if your users do not have the JVM?
But JWS can download it automatically for you.
Yeah, but what if you are Google, Amazon or EBay and want to have a very thin client.

OK, now we “re talking. I can agree that big Internet guys can and should invest some serious dough into supporting screen-refresh-on-mouse-move in HTML-based screens. But when it comes to a regular Intranet business application, when the users/browsers/platforms are known and when the cost of the project development matters, I “d stay with a fat client written in Java, or (if you like a fancy GUI) Macromedia “s Flash or Flex.

Many vendors are happy to offer you a tool to simplify AJAX development, because it “s the right momentum to do so. But development is just the beginning. What about production support? I have a gut feeling that starting an Ajax project is like one way street: it won’t be easy to go back. The users will be more and more demanding, and you’ll be spending most of your time on adding more bells and whistles to the GUI instead of solving business problems.

Today’s Business Week has published a surprisingly shallow article called “Java? It’s so Nineties “. First, a former Sun’s employee explains that LAMP is the way to go. After that, they say that the number of published books in Java is 4% off this year while sales of AJAX books is up 68%. Sure, if last year there was just one AJAX book and now there are three of those, we can even talk about 200% increase. I guess, it’s hard to write about programming just by putting together several search results from Google without having the real-world indusrty experience.

Having said all this, I have to admit taht I also include the talks on AJAX in my Weekend With Experts seminars, because it “s a buzzword and people want to hear about it, but as of today, I “m not going to invest my time in mastering this technology. I “m staying with the good old Java.

Gently starting converting programmers to Java

There are two major indicators of a health of a Java job market: calls from recruiters and training enrollment.

Last year, every Java developer started receiving calls from recruiters, which was not the case from 2001 to 2003. This was the first sign that Java market is recovering. But I was waiting for people “s emails asking about enrollment to my Java training classes. Back in the nineties I “ve converted many PB/VB/Cobol programmers to Java, but in 2001 I had to stop: there was no demand. Now I “m getting training requests again. People are finally convinced that it “s time to wake up, do some studying and make a career move in Java direction.

I “m planning to start by forming a small group of motivated people having a couple of years of the real-world experience developing business applications in other languages. Here “s another pre-requisite: the knowledge of basic Java elements covered in my first 17 lessons. This training will be about designing and developing server side Java applications. This weekend-only program will be custom-made for each group. Classes will take place in

Central Jersey. This training will be targeted to one goal: finding a job as Java developer. Having said all that, I neither promise nor guarantee employment. I’ll just to help my students in getting the skills that are in demand today.

After the first meeting of the Prinecton JUG

Yesterday, We “ve had our first meeting which went really well. More than fifty people have already subscribed to our group mailing list and a couple of dozens Java developers actually attended the meeting. There was an abundance of pizzas, book raffles, a technical presentation, and most importantly, people spent some time talking to each other before and after the presentation. It “s all about networking, isn “t it?

These are some comments/questions/suggestions that people made yesterday :

– What can I get for myself from such gatherings?

Five minutes after asking this question, this person won a free book 🙂

– I equally hate Java and C#

No comment

– We had a similar JUG in North Jersey, but we did not have enough speakers so it ended.

These people had to drive for an hour and a half to come to our meeting yesterday. You do not have to have well known speakers to run a JUG. If a couple of people can prepare a 30 minutes presentation each on something that they “ve learned and researched, you can call a JUG meeting.

– What Steve Benfield is doing these days? Is he still with SilverStream?

No he “s not. He “s into AJAX now.

– We “d like to learn more about the software that is available out there. Especially open source tool. What “s their recommended usage and how to bring them together in the same project?

This is a topic that interests many developers. I started some informal discussion of the subject in my series of Gas Station articles, and will plan some review session next year in our JUG.

But here’s the question I liked the most:

– How can I help you?

I’ll ask this person to create a Web site for our JUG

Anyway, it was a great start and I “ll be happy to see more people in the future sessions of the Princeton JUG. The next one will take place at the end of January 0f 2006.