Showing posts with label Delphi Education. Show all posts
Showing posts with label Delphi Education. Show all posts

Wednesday, November 11, 2009

How not to teach Delphi

Your reviewer, DelphiHater was looking at some syllabus or course overview for teaching software development 101.

Computer Sciences 101

Computer programming starts off with learning basic concepts, such as 2^ compliments, what AND, OR, NOT, NAND, NOR, XOR can be easily taught without learning programming language. What hexadecimal, octal, binary, decimal is, what signed and unsigned binary coded digits are, 2^s complement addition, subtraction, division and multiplication are to create digital circuits (such as using your 4001, 4002 chips). timers (the traditional 555 timer), capacitors and resistors.

Computer studies students should also be expected to learn basic statistics and calculus, along with either healthy dose of principles of accounting or business (human resources).

then, learning about Windows, DOS, how to use Access*, Word, PowerPoint and Excel.

(used to be DBase before Borland brought Ashton-Tate and trashed DBase)

Wearing the Computer Science Lecturer's Hat

In order to learn about software development, you have to pick a language to learn. As the computer science lecturer, you would need to pick 2GL, 3GL, 4GL language.

2GL

For 2GL language, it would be basic assembly knowledge. Since Delphi only does Win32 assembly, more suitable language such as Microsoft Assembler with reference to Ralf Brown's Interrupt list.

Explain why using serial port under real-mode / or protected mode assembly is important in embedded systems development.

Do you consider a smart telephone as an embedded system with TI (Texas Instrument) DSP (Digital Sound processor), DTMF pad (Dial Tone Modulation Frequencies) a specialized computer?

Make students interested in why assembly is important to learn. For example, making those cool gameboy games, Sony PSP portable requires deep knowledge of assembly.

(While your reviewer has seen Free Pascal Gameboy compiler, I doubt Nintendo would allow unlicensed materials into their Gameboy system. Did anyone see Action 52, the unlicensed NES game?)

3GL - Choices

For 3GL, there is choice of Basic, C++ and... Pascal.

While some people are quick to dismiss Basic (the Delphi people call it Visual Bullshit), there is Free Basic, which seems to be better than Free Pascal, DarkBasic, which makes Kickass games (show me one good Delphi Game SDK), Real Basic which seems to do Linux better, PowerBasic the step-child of TurboPascal abandoned by Borland.

To be fair, ask any Delphi developer to make good game using Delphi, or Linux application, or MacOSX application. Two things will happen - the person will just quit (maybe I'll hire someone else instead) or lame around the Borland newsgroup asking for answers.

None of the Delphi developers can ever put up with the Basic, but yet, if you look closely, do you see close-minded individuals unable to learn more than just Delphi? At least some people started "getting ideas" that other languages were much better and make more money.

C/C++

While Delphi people hate C++, your reviewer will cover why it is important to learn C++.

Other than the curly braces issue, semantic (begin/end), newsgroup wars, there is scripted C (Python), interpreted C (Java, C#, NET), native-compiler (Visual C++, GNU C++).

The common denominator is the amount of money you make from C/C++. Let's take for example, an average Visual C++ job and Delphi Job.

The most stunning examples is in mobile, embedded and financial markets. The latest iPhone apps are written in Objective C, which seem to produce 100,000 independent applications for the iPhone, yet Borland/CodeGear/Embcardero could not, over the years, bother with Windows Mobile or Palm.

In embedded market, the value is in the hardware and software combination. While most Delphi programmers will moan about a dongle or USB copy-protection, what about hardware-based MP3 players, USB peripherals, cartridge-based games? Then the Delphi programmer who tried to make a basic Windows-MP3 player, or connect his app to USB, or make a ROM-based Win32 application would probably earn US$0 (zero) dollars.

[Okay, to be fair, show me one good Win32-based Media Player made in Delphi, and I will show you 10 Media Players written in C++, let's not even talk about hardware based devices (e.g., MP3 players selling for US$200 a pop) and 64-bit compatible Media players]

For cartridges, ROM-based applications, your reviewer played some good games, such as Mario, Sonic, Wario, etc. Those still make money.

[Show me one good gaming SDK to make gameboy games using FreePascal, you can google around for plenty of GameBoy-compatible, PSP-compatible C/C++ SDKs around]

Back to the review

The usual tirade of computer concepts - stacks, queues, trees, graphs, inverted tables, indexes.

[While your reviewer thinks Julian Bucknall would be fond of them, sadly, few people buy his book.]

Coming to books. Which book would be suitable for students to learn Delphi? with this Delphi book economy-collapse, it would be much wiser to teach C/C++, Java, or even PHP.

4GL would be SAP/ABAP (if your school is a certified SAP/R3 school), SQL, Mathematica.

Delphi as a teaching choice

Let's say for example, your reviewer selects to teach Delphi to students.

The first obstacle is licensing. Your reviewer had very negative experiences with former Borlanders:

- Suppose you want to tell your students to post to the internet, and then to learn how to use UseNet, then google around, and then find old 1980's usenet personal flame wars and stupid insults posted against your lecturer. How would the lecturer feel? Yet, this flaming and insults continues to this very day.

- How do you tell students that Borland newsgroup is mostly not moderated and any stupid post with student's name becomes an embarrassing part of their education?

- How do you tell students not to confront such person nicknamed Troll or Schmuck
who feels Delphi is superior to all languages, yet few jobs exists?

- How to tell to "ignore" anti-islamic posts frequently posted which are inflammatory to Muslims? (See Off-topic)

They are no easy answers.

Book Choices

Your reviewer looked at several books, but sadly, most are out of print. Most publishers will not even publish Delphi books anymore, because they are unprofitable.

Career Choices

Your reviewer does not wish for others to repeat the same poor career choices to his students. Once is enough.

Suitability

Your reviewer, looking at Delphi, wonders if the same concepts that are in C/C++ can be taught.

Someone on certain forum said it nicely:

----------------------
Quoted:
Obviously you are one of the guys programming an image editor like this:

1. Drop a FileLoader component on your form
2. Drop a PhotoShop component on your form
3. Drop a DevExpress multi mega component on your form
4. Drop a FileSaver component on your form
5. Tell your client the project is finished.

Wake up man, real life doesn't work that way ...
----------------------

The danger is when you wake up, you don't learn anything. The students will be forever dependent on "others" for parts of their work and end result is wanna-be work with little or no value-adding.

Conclusions

Your reviewer, wearing the Computer Science Lecturer hat, took hard look at Delphi and wonders...

If your reviewer teaches Delphi to students, my students will be doomed to the same bad career, poor work, get fired, and all sorts of things education was supposed to prevent.

Don't take my word for it. Those who don't learn from the mistakes of the past are destined to repeat them.

Sunday, September 27, 2009

Fan Mail: Delphi Job Market

Your reviewer got some emails about jobs, jobs and jobs...

Delphi Job Search
http://delphizine.com/opinion/2002/10/di200210fn_o/di200210fn_o.asp
They used to have nice job discussion, but sadly, it now goes to a cyber-squatter site.

Personal Delphi Agents
www.personaldelphiagents.com
The website is now missing in action Or maybe their IntraWeb website is off-line :)

Advanced Systems Jobs
http://www.advdelphisys.com/jobs/..%5Cjobs.html
The website shows no jobs. Most of site not working.

Richey's Delphi Jobs
http://www.inner-smile.com/delphij1.phtml
No jobs since 2006.

DelphiWorld
http://www.delphiworld.com/
Hosting Account Expired. In the former days, this website would show 10 Delphi jobs a month, but for some reason, they dropped until 0 jobs.

Borland.Public.Delphi.Jobs
Better known as Borland.Public.Delphi.Insult.Employers

Many years ago, when Borland was renamed to Imprise and then renamed to Borland, the Delphi Jobs had lots and lots of discussions, like: which Delphi Jobs paid the most, or prospective employees asking embarrassing questions.

Nearly every job had a discussion, be it, asking about H1B visas, and the anti-H1B visa people, or the people asking for higher salaries (when the job posted a low salary), or someone wanting to take revenge on the employer. Arun* the Delphi developer living in India would ask around about H1B visa and sponsorship, and John* the American Delphi programmer would post "employ me instead" post. then it would go into long-winded insulting argument, the Russian Outsourcing company would post that team so-and-so is looking for remote jobs, and Joe would post asking about prices, and then there would be discussion about wages, which eventually went postings discrediting the Russian company.

[* not real name, but close enough]

Eventually, someone complained and then TeamB had to step-in and constantly delete the tide of messages on the Jobs newsgroup.

Ever seen the message from TeamB: , your message is canceled. The jobs newsgroup is only for job postings and nothing else. If you want to discuss the job, please email the person directly (or something like that).

If you read the newsgroups often and get chance to read the messages before they get deleted, some posting had hateful or insulting message to employers and HR agencies.

Example
One Delphi vendor offers to hire at US$600.
[the 2nd, 3rd, 4th post canceled was insulting, the 5th post, TeamB person asks to reply directly]
https://forums.embarcadero.com/thread.jspa?messageID=100063

With US$600 a month, you can buy many things and live good life!!

:)

Friday, September 25, 2009

Fan Mail: Exercise for younger developers

This blog got mentioned on several college and university (private) forums, so your reviewer decided to write some helpful notices to young software developers.

Exercise 1 - Books
Go to your regular bookstore. Look at the books, "computer section". Which languages do you see? Take a pen and paper and write down:

Count each books of the same book as "1". That way, if there are 20 books about C# from 5 different authors, count as "5".

Go to bookstore _____
Number of Different C# Books ____
Number of Different Delphi books ____
Number of Different PHP Books ____
Number of Different Ruby Books ____
Number of Different Java Books _____
Number of Different JavaScript Books _____
Number of Different C++ Books _____

Do this for 2 or 3 bookstores in your place. Since bookstores sell only "profitable" books, which books do have demand and which books don't have demand? If there are 0 Delphi books, why don't they stock Delphi books? what are the answers?

Bonus:
How do you order a Delphi book, since most bookstores don't keep these?

Exercise 2 - Looking for a job
There are various ways to find jobs. Buy your local newspaper daily for 30 days and look at the classified sections, computer jobs.

Count each different advertisement as "1". That way, if there are 50 advertisements from the same company (who advertised it), count it as "1".

Helpful tips:
take down the phone number / or email address or address so you can match it the next day (or next week).

Newspaper _____ from date to date (take average 1 month)
Number of Different C# Jobs ____ near to my house
Number of Different Delphi Jobs ____ near to my house
Number of Different PHP Jobs ____ near to my house
Number of Different Ruby Jobs ____ near to my house
Number of Different Java Jobs _____ near to my house
Number of Different JavaScript Jobs _____ near to my house
Number of Different C++ Jobs _____ near to my house

Number of Different C# Jobs ____ far away/ or require long travel time
Number of Different Delphi Jobs ____ far away/ or require long travel time
Number of Different PHP Jobs ____ far away/ or require long travel time
Number of Different Ruby Jobs ____ far away/ or require long travel time
Number of Different Java Jobs _____ far away/ or require long travel time
Number of Different JavaScript Jobs _____ far away/ or require long travel time
Number of Different C++ Jobs _____ far away/ or require long travel time

Take various newspaper or on-line sites and tally them up:
- Buy 2 or 3 local newspaper and look-up various job sites daily.
- There are also free newspapers that have only jobs on them.

If you are curious, you could call them up and ask for salary information. or what the expected job would be like:

Average salary for C# Job ____
Average salary for Delphi Jobs ____
Average salary for PHP Jobs ____
Average salary for Ruby Jobs ____
Average salary for Java Jobs _____
Average salary for JavaScript Jobs _____
Average salary for C++ Jobs _____

High/Lowest salary for C# Job ____
High/Lowest salary for Delphi Jobs ____
High/Lowest salary for PHP Jobs ____
High/Lowest salary for Ruby Jobs ____
High/Lowest salary for Java Jobs _____
High/Lowest salary for JavaScript Jobs _____
High/Lowest salary for C++ Jobs _____

After 30 days, you can report your findings to the whole class, or maybe keep it for yourself. (It is also a useful exercise for people who keep saying they cannot find a job).

Since young people are most likely to get fooled, ask:

Newspaper _____ from date to date (take average 1 month)
Number of Different C# Jobs ____ for fresh graduates
Number of Different Delphi Jobs ____ for fresh graduates
Number of Different PHP Jobs ____ for fresh graduates
Number of Different Ruby Jobs ____ for fresh graduates
Number of Different Java Jobs _____ for fresh graduates
Number of Different JavaScript Jobs _____ for fresh graduates
Number of Different C++ Jobs _____ for fresh graduates

Number of jobs for >= 5 years experience:
Newspaper _____ from date to date (take average 1 month)
Number of Different C# Jobs ____
Number of Different Delphi Jobs ____
Number of Different PHP Jobs ____
Number of Different Ruby Jobs ____
Number of Different Java Jobs _____
Number of Different JavaScript Jobs _____
Number of Different C++ Jobs _____

Ideas to do during job interview:

- ask whether there is someone to guide you. Hopefully, you are not the "only" person there :)

- look at the surroundings when you are at the job interview. hopefully, there are not old computers and the place is well maintained.

- ask whether they use latest versions of products. (maybe they use something since 10 years ago, like Delphi 6 :))

- ask what are work timings are, whether you have to come back on Sat/Sun/ or maybe the job is freelance (no payment until finished) or contract (no job after 6 months).

- what are advancement opportunities. For example, if the company is only 3 or 4 people and you are there for 5 years, will the company still be 3 or 4 people? or the job is dead-end?

Exercise 3 - Looking at schools and tests

Since advanced programming techniques are thought by experts, so, there should be some experts who are good enough to pass the Microsoft-certified Trainer (MCT) or Oracle Certified Trainer tests.

What courses can you sign-up for C# ____________
What courses can you sign-up for Java ____________
What courses can you sign-up for C++ ____________
What courses can you sign-up for Delphi ____________
What courses can you sign-up for Ruby ____________
What courses can you sign-up for (whatever) ____________

What are the costs of attending such courses? Is the school accredited, that means, they are licensed to teach such courses or a diploma mill that churns out worthless certificates?

Good examples:
- You go overseas or apply for high-ranking job later in future. Which diploma or degree or training courses or certificates can you show or put in your resume/CV?

- You lose that piece of paper and want a replacement. What do you do?

- If you put some fake credentials on your resume/CV (like a fake diploma or course run by a diploma mill), it will look bad on your resume/CV. Think about it.

Exercise 4 - Getting things done
Key to learning is having your personal software you can use.

Nearly everyone has PHP, Java, Express Microsoft C++.

What are costs of licensed PHP _____________ (IDE / or libraries) ?
What are costs of Java _____________ (IDE / or libraries) ?
What are costs of licensed C++ _____________ (IDE / or libraries) ?
What is cost of licensed Delphi _____________ (IDE / or libraries) ?
What is cost of licensed Ruby _____________ (IDE / or libraries) ?
What is cost of licensed JavaScript _____________ (IDE / or libraries) ?

Ask around what professionals use, like your lecturers, or your professors. Also helpful, is job advertisements. They normally specify requirements, so you can get idea whether that product is popular or not.

Rule of the thumb:
If it costs too much, it would be out of reach for many people, and hence, will not have so many jobs.

If it costs too much, and there is some exclusiveness, that also means jobs are hard to come by.

If the costs are low, then there should be plenty of jobs. E.g., PHP, Java jobs.

Exercise 5 - the website
Since most companies have websites, there is an extension called "php", or "do", or "asp" or "aspx".

Simple sites:
What are costs of hosting C# site _____________ ?
What are costs of hosting Java site _____________ ?
What are costs of hosting C++ site _____________ ?
What are costs of hosting Delphi site _____________ ?
What are costs of hosting Ruby site _____________ ?
What are costs of hosting JavaScript site _____________ ?
What are costs of hosting PHP site _____________ ?

Advanced site:
What are costs of hosting huge C# site _____________ ?
What are costs of hosting huge Java site _____________ ?
What are costs of hosting huge C++ site _____________ ?
What are costs of hosting huge Delphi site _____________ ?
What are costs of hosting huge Ruby site _____________ ?
What are costs of hosting huge JavaScript site _____________ ?
What are costs of hosting huge PHP site _____________ ?

It's quite easy because you look at the same newspaper and go to classified section, Computer section.

Exercise 6 - the Program/Application
This website has a download. It contains programs/application. The programs/application are written in ____

Since you have the number of jobs, number of websites, number of companies, then you can also calculate the number of programs written:

Number of C# site/application _____________ in your city?
Number of Java site/application _____________ in your city?
Number of C++ site/application _____________ in your city?
Number of Delphi site/application _____________ in your city?
Number of Ruby site/application _____________ in your city?
Number of JavaScript site/application _____________ in your city?
Number of PHP site/application _____________ in your city?

Thus, you can then get idea:
There's a job if there's money, right? If there is active development, then they need developers/ or programmers or there are jobs you can find.

Exercise 7 - the Fall from grace
Since this year (2009) is bad year, you can always ask around from people who lost their jobs.

Since most of them will be at, say, places at soup kitchens, or on the street, maybe you can ask them for their experiences, or what went wrong in their life.

You can learn alot from the older people, like those who lost their jobs, or got fired, or laid-off.

Questions you can ask:
Hi _____, do you have 5 minutes to ask some questions?

Are you a former software developer/ or former computer developer/ or used to developer in such and such?

What advice can you give to younger people? What can I learn from you?

What kind of skills should I learn?

What kind of issues did you face?

[You might want to give them some small money in return.]

Exercise 8 - the graduate and job numbers
Suppose there are always young people joining the work-force and older people are present.

Let's say you live in a small city and there are 3 or 4 universities at your location, and maybe 5 or 6 schools.

Given there are 300 people who graduate from IT courses each year.

Say, with 3 or 4 universities, there could be maybe 2,000 people entering the work-force every year, bringing supply to the work-pool.

Now suppose:
there are 100 to 150 C# unique jobs advertised every month, that is:
125 * 12 = 1500 jobs advertised every year. (average)

there are 75 to 100 C# unique jobs advertised every month, that is:
90 * 12 = 1080 jobs advertised. (average)

there are 1 or 2 Delphi unique jobs advertised every month, that is:
2 * 12 = 24 jobs advertised. (average).

There are thousands of people competing for the same job, how lucky are you to get the Delphi job?

Conclusions
Look closely at the numbers and the applications, websites, jobs.

Which language do you want to learn to get good job?
Which language should you not learn? :)