This post will start as Q&A and will work its way to the original post with time. I'm sorry but i really can't invest too much time altering the original content for now.
I'll try to be as brief as i can.
Q & A
--
Question by rahmu : Are there any job opportunities for low-level programmers? Maybe embedded systems or OS developers or something like this? I have a friend skilled in ASM and VHDL, does he have a chance in Lebanon? --
I'm not aware of any company in Lebanon hiring such positions. Embedded systems jobs are very rare and scarce and not advertised. The same goes for operating systems development. Your friend will not be able to *easily* locate a suitable job in Lebanon, however he might nail a job in an academic firm in Lebanon.
This question is open for suggestions and answers.
--
Question by arithma:Is it saying that web development is the most common thing we're developing here? --
Web development is a big hit in Lebanon, though so is native applications (specifically windows). You'll find alot of local companies that use .NET or PowerBuilder in order to build business applications. You'll also find that quite a few are recently adopting SharePoint. If we were to summarize, we can say that you're more likely to work on native applications for a company targeting Lebanon, and you're more likely to be working on something web related when it comes to an offshore company.
--
Question by arithma:Can we enumerate what type of projects companies are undertaking? --
Local companies target the business world, you'll find numerous companies building software that deal with stock, time, report, accounting, hr management, business process management. You'll also find a lot of banking and finance applications being built. Real-estate management software, Patient management software and a whole lot of website development.
--
Question by arithma:What libraries and frameworks are used the most? --
The .NET framework is by far the leading framework adopted in most companies in Lebanon. The reason for this is quite obvious.
99.99% of the companies have windows as their employee's operating system.
Thus targeting the Microsoft platform is the safest choice for a company. When the company is using Windows XP as a client and Windows Server as the server, they will expect that the application they are buying, will run on those machines.
In terms of language popularity you'll find the following to be reasonably true:
1- VB.NET
2- C# (VERY CLOSE to VB.NET)
3- PHP
4- Java (VERY CLOSE to PHP)
5- ...
If you're wondering about Python and Ruby, you'll find them at the very bottom (even behind VB, Pascal and Delphi)
In terms of libraries, web frameworks and the lot you'll find the following to be reasonably true:
PHP -> PLAIN
Java -> EE ( as a combination of (Plain web container, Struts, Spring or a full blown EE compatible application server))
.NET -> ASP.NET/ASP.NET MVC/WCF/WSS/WinForms (WPF is currently very rarely adopted)
--
Question by arithma:What types of programmers are usually found working on a single project? What are the roles of each, are there redundancies? --
On a similar note: You'll find that most web development companies that build bulk websites always have 1 or at most 2 developers per website. In terms of website development, the market is rather stale. When you intend to build a website, you really need a competitive price. Years ago, you could charge quite a lot for a simple static website and i believe some of the experienced web developers here can vouch for this. However, with the amount of web development companies that are available and are opening, you'll find that the prices have dropped drastically leaving only the popular companies with bids on large projects for large sums of money.
Back to the original question: Let's first separate the positions in Lebanon; the most common positions that you'll find in companies are Trainee, Junior Developer, Developer, Senior Developer, Team Leader, Project Manager. Clearly there are cases where there's more, or cases where there are less but this is one of the most common group of positions in Lebanon I've witnessed. I'll leave the Project Manager description aside simply because every company has a different approach to PM.
In terms of roles and responsibilities, here's a summary of each:
1- Trainee - If you're a trainee you're most probably either doing an internship or you're currently on probation. The training period usually takes one to six months at which point you'll either be taught the application at hand, expected to develop very simple tasks or are testing the application only.
2- Junior Developer - The bottom of the food chain, you're the brick that the company is hanging on. You're the one that's doing all the work. You'll be doing pretty much everything and this is common to most companies. There are occasions where you'll find decent roles such as (UI Developer, Components Developer, Tester, Deployer and the lot) but this is very rare
3- Senior Developer - An employee that 1) either has been in the company for too long that he's way too experienced in the project at hand or 2) and experienced developer that has been brought on board for his experience. Responsibilities range from, task allocation, application design, research and development to development.
4- Team Leader - An experienced employee that gets to have the final decision concerning design, approach and technologies that are to be used. He's rarely involved in the development yet he supervises all the aspects of the project cycle and makes sure that all the efforts are being maintained. (Parts of the Senior Developer's responsibilities also apply here, such as task allocation)
--
Question by arithma:Is it better to be generalist or a specialist when it comes to companies? What do companies look for the most: language skills? Previous projects? For experience team-size wise? --
An extremely important question. One that is rarely ever taken into consideration as a programmer. Let's start with the first one.
Is it better to be generalist or a specialist when it comes to companies?
As someone occupying the initial three roles described in the previous question, it is by far much better to be specialized in a certain technology/language than to have a broad range of knowledge at a medium level. Simply because your knowledge, as much as it had broaden your prospects, it'll do you no good when you're bashing your head day and night doing robotic work in a certain project. Furthermore, companies will not care much about your knowledge in python if they're looking for a C# programmer. Being a generalist or a specialist will have the same compensation if you're not applying for a consulting job or as an R&Der.
An important thing to note, and this is based on my own experience. You have to be careful when hopping between languages or technologies or frameworks. You have to be careful when you even take a tiny peek. Consider that you're driving a BMW, which to you and a number of other people is a fantastic car; it's performant; it looks great; it's comfortable; it's classy and the lot. Then for some reason your friend lets you drive his Tuned Subaru STI. Once you're done driving, your BMW is still as fast as it originally was but you'll always have that itch and you'll somewhat lose respect for it. It's a strange analogy but hey, it works!
I was originally a hardcore java developer though as soon as i peeked into .NET and saw the extra features it provided i couldn't write a single line of java code ever again. This might be quite extreme, but that's just me.
What do companies look for the most: language skills? Previous projects? For experience team-size wise?
All of the above are important, however if i were to rate the importance i'd have to say:
Language Skills - 10
Previous Projects - 10
Team Spirit - 10
Communication Skills - 10
Team-size experience wise - 5
--
Question by arithma:Are there people in Lebanon that are actually taking it the further step and can compete on a world level? --
You'll be surprised how many projects have originated from Lebanon and are currently internationally well known in their own domain. I know for a fact that the Lebanese people are very cunning, smart and hard workers that they are able to innovate.
On a similar note: It is imperative that when you have an idea that you believe is worthwhile, do NOT let it linger else you'll think back and say "I thought about it first, but they did before me". Act upon it and build it, what do you have to lose? If nothing, you gained more experience!
Update 16/3/2011 - Provided by DG
Two Lebanese students (Lebanese American University graduates) created Woopra: a revolutionary Web analytics tool.
More info:
http://www.woopra.com/about-woopra/.
Update 16/3/2011 - Provided by ZeRaW
- Claude Comair: (
http://en.wikipedia.org/wiki/Claude_Comair)
- Was Chairman of the Board of Nintendo of America (NST) until he stepped down.
- Owner of Digipen Institute of Tehcnology (
www.digipen.edu).
- Samir Abou Samra:
- was developer on original Bionic Commando (game boy).
- developer on original Wave Racer (Nintendo64)
- Currently chief of technology @ Digipen.
--
Question by arithma:Do we have famous programmers here that have legend status? --
We have you!
On a slightly similar note concerning famous programmers, check this link and laugh your asses off:
http://meta.stackoverflow.com/questions/9134/jon-skeet-facts
--
Question by kareem_naser:I would like to know where does BMIS come in this?(taken the case of Lebanon and countries in the gulf only) Like OOP, networking, web, C++? --
I'm not entirely sure i understand the question correctly. Please elaborate.
If this makes perfect sense to anyone, kindly provide the answer and i'll include it.
[ Questions are now open for submission ]