Learning OOP- Would that make me a Well-Rounded Programmer?

 
I'm strongly considering learning Object Oriented Programming. One reason is to get more out of the next generation of Mql language. My question is, how much like a real programmer does this make me? Could I market myself as a programmer in the real-world if I know OOP? How easily would I be able to transform from Mql to Java or C++? My current opinion on programming is once you know how to code, the best way to learn another language is to Memorize/Be-Aware of All the commands usually by just picking up the Docs and going through that. Would any career programmer consider that a true statement?
 
ubzen:
I'm strongly considering learning Object Oriented Programming. One reason is to get more out of the next generation of Mql language. My question is, how much like a real programmer does this make me? Could I market myself as a programmer in the real-world if I know OOP? How easily would I be able to transform from Mql to Java or C++? My current opinion on programming is once you know how to code, the best way to learn another language is to Memorize/Be-Aware of All the commands usually by just picking up the Docs and going through that. Would any career programmer consider that a true statement?

There's no simple answer to any of these questions. I'll start with one factor which is often overlooked, and which is directly relevant to being a "real programmer". Most estimates say that the majority of programming jobs are working in-house for companies on internal systems. Working for software companies which provide products to customers (e.g. Microsoft, Google) is the public face of the industry but, anecdotally at least, that's not actually where the bulk of the jobs are.

Moving on, there are at least 3 different bodies of knowledge which are typically involved in being (self-)employed as a Java programmer or a C++ programmer or a C# programmer or whatever:

* The syntax of the language. "Knowing OOP" is very transferrable in this area.

* The programming framework, e.g. the .NET framework, or Spring, or whatever. As an analogy: knowing the syntax of the MQL4 language is really quite a small part of writing usable, reliable code for MT4. Or, taking another example, the documentation of MQL5 at https://www.mql5.com/en/docs has 24 bulleted sections, and only the first 1 out of 24 is dealing with the language syntax and OOP. The other 23 sections are dealing with the "framework".

* Familiarity with specific programming tools, e.g. Visual Studio or Eclipse.

Digressing a little, while it's nice to have the OOP features in MQL5, there are good reasons why MQL4 has the feature-set which it has. Personally, I regard it as an extremely elegant trade-off between complexity, power etc. I've previously drawn an analogy with CISC versus RISC (https://www.mql5.com/en/forum/125986). It's a simple language and framework which is well matched with the other things which the MT4 environment makes simple, e.g. atomic placement of an order with an s/l plus t/p (or, at worst, placement in two stages). MQL5 adds language features such as OOP without adding - or even while removing - support for common real-life problems. For example, the last time I looked there were basically three different recommended ways in MT5/MQL5 for an EA to keep track of its own position if there are potentially going to be other EAs trading the same symbol on the same account. Unless I'm missing something, MetaTrader has gone from a position where in version 4 it is much easier than on other platforms to write a system which plays nicely with other automated systems, to a position where it is much harder than on other platforms such as NinjaTrader or FXCM Strategy Trader. (This is one of the reasons - admittedly by no means the largest - why there's no mass commercial market for MT5 EAs.)

 

jjc as always thanks for your insights.

 
ubzen:
I'm strongly considering learning Object Oriented Programming. One reason is to get more out of the next generation of Mql language. My question is, how much like a real programmer does this make me? Could I market myself as a programmer in the real-world if I know OOP? How easily would I be able to transform from Mql to Java or C++? My current opinion on programming is once you know how to code, the best way to learn another language is to Memorize/Be-Aware of All the commands usually by just picking up the Docs and going through that. Would any career programmer consider that a true statement?


I agree with everything jjc said. Let me add a few other points. I work in the US, I work on a commerical product, but I have also worked on in-house applications. You will almost always need some knowledge of Databases. Oracle, DB2 SQL Server or mysql are the most common. You will also need some knowledge of Operating Systems, will you be working on Windows, UNIX, Linux, Mainframes or a combination of these? Even if you only plan on working in a windows environment, many times some basic UNIX\Linux knowledge might be needed. MQL is a good start, MQL5 is a good start into OOP. The size of MQL is pretty small, but it does include most of the basic's of Syntax for most languages, excluding SQL. Java, mysql and Linux are free, I would practice using these. Pick-up a few books and try to write a few apps on your own in Windows and then move onto Linux.

If you are planning on working for a company. Your first job will be the hardest to get. Once you get your first job as a developer you will have real experience, future jobs will be easier get. Getting an interview can be tough, Having a college degree is a pretty basic requirement for most companies, but not all. The key is getting in the door. If I were starting from scratch I would look for Testing or Tech Support positions. Once you are in the door, you can move within the company, say over to dev, much easier then if you were trying to go strait into dev from an interview. This will also give you a heads up on what software you will need to be familar with to move into developement. IMHO, a testing position would be the best way to start. It takes the least experience and you will be working closely with dev. A good tester usually gets noticed by developers.

 

Thanks danjp. Very insightful view of a programmer you've provided. At one point, I contemplated if I should attend college for programming. Then at a turn came the .com bubble-bust. After that, it seemed that with most computer jobs, the employer started requiring tons of stuff IMO. Whenever I look at any IT ads now-a-days, it almost seems like the employer is asking for experience in everything you guys have mentioned above and some. C#, C++, Java,. NET, Oracle, DB2, SQL, Windows, UNIX, Linux, etc...etc. And sometimes they even list some of their Proprietary as a Plus. I look at the ad and wonder who really have all those experiences under their belt and willing to work for 35k. Are they just looking for people vaguely familiar with what those are or what? The shortest time it would take me to get into one of those jobs would be going the tech support route because I have some experience there. So I guess the answer to my previous question is that I need more experience in other areas. But the only reason I've been able to develop some experience in mql4 (without being directly paid) is because Forex interested me. If I were to try learning another Language/DB/OS, I'd really have to search deep for an interesting project.

However, let me switch gears here for a second. How do you guys feel about generating extra income programming forex applications? Either as a programmer for hire or as seller of products you create? My observations of the current trends on Mql5 is the merging of revenue driven integrations. Do you guys feel this has real earning potentials? Recently, I find it interesting the volume of people who Cannot or Will-not pay real money for programming services. Take the jobs section for example, the average job would be around $50 IMO, on the higher end something like $200 for data-intensive jobs. At that rate, the top programmer probably wouldn't make much more than 15k annually.

So I guess in summary, the new question is, has anyone considered earning money with Mql_4/5 outside of Trading (trading's another subject altogether, I'm hoping to avoid). If you have been selling product or programming services, is it something you'd recommend for generating real income? If not, what made you not pursue it?

 
ubzen:

Thanks danjp. Very insightful view of a programmer you've provided. At one point, I contemplated if I should attend college for programming. Then at a turn came the .com bubble-bust. After that, it seemed that with most computer jobs, the employer started requiring tons of stuff IMO. Whenever I look at any IT ads now-a-days, it almost seems like the employer is asking for experience in everything you guys have mentioned above and some. C#, C++, Java,. NET, Oracle, DB2, SQL, Windows, UNIX, Linux, etc...etc. And sometimes they even list some of their Proprietary as a Plus. I look at the ad and wonder who really have all those experiences under their belt and willing to work for 35k. Are they just looking for people vaguely familiar with what those are or what? The shortest time it would take me to get into one of those jobs would be going the tech support route because I have some experience there. So I guess the answer to my previous question is that I need more experience in other areas. But the only reason I've been able to develop some experience in mql4 (without being directly paid) is because Forex interested me. If I were to try learning another Language/DB/OS, I'd really have to search deep for an interesting project.

However, let me switch gears here for a second. How do you guys feel about generating extra income programming forex applications? Either as a programmer for hire or as seller of products you create? My observations of the current trends on Mql5 is the merging of revenue driven integrations. Do you guys feel this has real earning potentials? Recently, I find it interesting the volume of people who Cannot or Will-not pay real money for programming services. Take the jobs section for example, the average job would be around $50 IMO, on the higher end something like $200 for data-intensive jobs. At that rate, the top programmer probably wouldn't make much more than 15k annually.

So I guess in summary, the new question is, has anyone considered earning money with Mql_4/5 outside of Trading (trading's another subject altogether, I'm hoping to avoid). If you have been selling product or programming services, is it something you'd recommend for generating real income? If not, what made you not pursue it?


I never considered earning money from MQL or an FX service, other then my own trading. Personally I just don't want the hassle of supporting something I sold. I took a look at the jobs section for the first time. I would not work for that kind of money, but If I lived in a grass hut eating dirt cookies I would.

If you can create a product or service that can generate money, then go for it. Nothing wrong with making money.

 
ubzen:

So I guess in summary, the new question is, has anyone considered earning money with Mql_4/5 outside of Trading (trading's another subject altogether, I'm hoping to avoid). If you have been selling product or programming services, is it something you'd recommend for generating real income? If not, what made you not pursue it?

I considered that, and i also make good mony trough the programming service. I cannot compete with the prices offered at the job section, i have to pay taxes and i don't sell my ability's under the price. Some of my clients understand that and are happy to pay a bit more in order to have full service afterwards. If they don't it's not a problem, i have another job which makes enough for living. But the programming does generate extra money, and gives me always new ideas/inspirations.

BTW, if you order an indicator/ea from one of the bigger programming companys out there you might be surprised what prices they ask..


If you want to learn OOP i always recommand java. For me it is an easy fast growing language which supports everything you need for OOP. But OOP is only a real small part of a professional programmer. Nowadays you truely need knowledge of a big range of languages/products in this sector. SQL/Oracle i cosider as a minimum request nearly everywhere. (You don't have to be a pro. But you should know how to implement basic stuff.)


cheers

Reason: