Sunday 25 July 2010

We will build electronics "MADE IN JORDAN"

We have brains, we have knowledge, what else do we need to build our own electronic systems? The will!

Please Jordanian engineers read carefully to design and implement, please Jordanian business men read carefully to finance, please Jordanian teachers and instructors in schools and universities read carefully to encourage, please Jordanian government men read carefully to legislate ... PLEASE, say: possible, say: we can, because it's possible and we definitely can.

FOR ANYONE WHO DOESN'T KNOW ME, I AM A FRESH GRADUATE COMPUTER ENGINEER, SO I KNOW WHAT I AM TALKING ABOUT HERE.

We want to build a system that controls a house. There are one million ideas that come on mind, I will try to mention some. If the house is empty turn off all lights to save energy. You are free to think in an extra security option here: when the house is empty, randomly turn on one or two lights, after a while, turn them off and turn on some other lights. You may think more than that ... when you light these light, choose the lights that consume less energy!! When someone enters the house, the lights turn on, the coffee machine works, the ACs work, windows open, and anything that may come to your mind.

JORDAN IS SUNNY... When the sensor says that there is enough sun light, turn you light on using this energy and stop wasting electricity. Auto-switch to the solar heater, if your partner is a chemical engineer, ask him to design some large batteries to store this electricity in.

If your customers are rich, make everything automated, and sell them your product. Doors open automatically, food is cooked automatically when needed, every thing in your home may send you an sms to tell you something. Imagine you are at work and your son has just eaten the last cheese piece in the refrigerator. The refrigerator sends you an sms "Dear owner, I am the refrigerator 1, cheese has just been finished, :)". So you buy cheese when you are going home afternoon. Or this message reaches the supermarket that sends cheese to your home immediately.

FORGET ABOUT HOUSE SYSTEMS
Why don't mechanical engineers build cars MADE IN JORDAN??? Forget that, why don't we build the large control systems that control our factories in Jordan??

Why don't we build a machine that takes some empty cups and some sugar and coffee and tea and nescafe and it has a console that takes whatever the person wants and fills the cups ... etc. It's a COFFEE MACHINE!! just think, and add some extra features (falsafaat) to make it different that these Chinese ones!! Make a machine that chops meat and chicken and mloo5iyye and onion.

I am sorry people, but we have brains and enough knowledge. We need the right MENTALITY that makes people look at there nation's interest. I don't care if America or the UK gave me more money to build great electronic systems for them, I HATE IT when I hear people say (this country no one can live in) or (We cannot do it) or (who cares) or any of these SELFISH and FRUSTRATING phrases.

So, tell me people, positively, what do you think?? each from his position.

Thursday 15 July 2010

Computer Science Degree (VS) Programmer

While browsing stackoverflow.com I passed by a computer science fresh graduate complaint. "Basically I'm graduating with a Computer Science degree but I don't feel like I've learned how to program", he said. I was not surprised because this is the case with most computer science graduates! As a consequence, he cannot find a job, "I'm struggling to find work and am starting to get really frustrated". Then he shows more of his problem when saying: "I've worked hard but don't have the confidence to go out on my own and write my own app". This summarizes his long question. I will discuss his complaint and will light some of the useful comments submitted there. The question and the answers can be found here.

What are the reasons behind that? One of the posts summarizes the fact, it says: "The trouble with school [university] is that the most complicated thing you did there was a project that took 15 weeks to a year and involved a couple other people. The problem domain was well-understood (your professor didn't give you any tasks that didn't fit neatly into your semester). This is not a luxury the real world affords". I believe that I agree with him, I will say it another way: Universities don't throw students between unfamiliar problems leaving them alone to deal with them. Homeworks are always from the last couple of lessons and are similar to something explained inside the lecture. Course projects are not too involved in new things, most of them are within the specific narrow field that the course talks about. Many simple graduation projects pass, and teachers are usually available to solve problems that face students. This is really: "not a luxury the real world affords".

The best solution is what most of the experienced developers suggested to this questioner. It involves two parts: (1) Build your own project and (2) keep learning all the time. Let me light on these two spots now.

(1) Build your own project
Build your own project in your free time. Build it alone because this project aims at developing YOUR own programming skills. When I say "alone" I don't mean that you shouldn't ask, but even when you ask, try to ask non-human resources more, go to the documentations, books, datasheets, the internet ... etc at first, then ask humans.

An important question arises here, what is the best project that I can do? It depends on your current position. If you are a student then most probably you will be asked to build some projects in your courses. These projects are very very very good fields to develop your programming skills. Choose at least one project per semester and do it much more bigger than your teacher wants. Think of any possible extra features and implement them in your project. When you want to add something to your project think of something that you don't feel you know, something new and somehow hard. DON'T forget to make a backup of the well-done project before adding these features so if this extra feature doesn't work, you simply have something to give the teacher.

If you have already graduated then you can either build on one of the projects that you have already done at university time, or start a new challenging project in which you might not know where to start.

(2) Keep learning all the time
I may talk about this in another post later, now this one is long enough :)

To conclude, the university doesn't FORCE you to be a programmer, but it NEVER PREVENTS you from that! Your time is your property and you can develop yourself at home with the help of the internet. Many teachers will encourage you when you boost your course projects. Some teachers are frustrating but you never work for their interest, you work for yourself, so don't be frustrated! If don't work hard to be a programmer, your computer science (or engineering) degree will not hire you as a programmer.