How much do you know?

For discussions about game development that does not fit in any of the other topics.
Post Reply
User avatar
vitinho444
Posts: 2819
Joined: Mon Mar 21, 2011 4:54 pm

How much do you know?

Post by vitinho444 »

Hey guys how's it hanging?

So I was studying for my Math Analysis Exam (which i had 4/20 :cry: ) and as we all do when we are bored with something (Am I the only one? :roll: ) is think about life.. So i began thinking on my future as a programmer or some IT guy... And i started looking at those big companies websites at their "Career" pages and stuff, and i found out that Facebook has a programmers test that if you succeed you can be asked in to join the team. Well sounds good to me, (hard too) but i gave it a shot, they asked me for a couple of hours and i couldn't give them at that moment, so i looked around and found that they have a demo test, so i tried, i failed the first question.

Now most of you may think "Of course you failed, you are pretty young at programming", well yes I am indeed young, but i feel like I don't know anything but the things i use everyday...
What i mean is, thanks to halls (thank you a lot man for your hard work :D ) i learned php in a normal way, $var = 1, etc etc... I know OOP in PHP too (not sure how and when to use it but i think i know how to setup everything when i need it), but that's it... I know that and that's it.. I know how to connect to the db and make a while($row = fetchassoc....) etc, echo $row["field"]; etc etc but THAT'S IT!

I know it because I use it EVERYDAY, but if I'm asked things about Web Services... i block, I heard of SOAP but i only know the name not how to use it or where or why or when, nothing!

So after this long talk, (you don't have to read it all sorry, i will resume, i basically only know what i use and thats it, what about the rest?) I wish to know how can you be positive sure that you qualify for a job... I feel like i don't want to let anyone down, nor the boss for giving me a chance :/

Thank you guys ;)
My Company Website: http://www.oryzhon.com

Skype: vpegas1234
User avatar
Jackolantern
Posts: 10891
Joined: Wed Jul 01, 2009 11:00 pm

Re: How much do you know?

Post by Jackolantern »

Here is a list of the things you should know to be a highly qualified developer today, in no particular order:

1. A few base languages: This goes without saying, of course.
2. The most popular framework(s) for your platform: For some languages like C# or Ruby, this is an easy choice since there is really just one used professionally. For others like PHP, this is quite a bit more complicated due to the massive amounts of frameworks. Large companies using PHP tend to use more the "old standbys" Zend, Symfony and CakePHP than the "bleeding edge" frameworks like FuelPHP, YII and Laravel that tend to be popular with open source developers.
3. ORMs: Writing SQL queries into your source is now considered bad practice, and ORMs have taken over. For .NET, that is Entity Framework. Java has Hibernate. PHP of course has multiple choices, with Doctrine, Propel and many others.
4. Source control: You should be comfortable using at least Git and a more traditional source control system like Subversion.
5. Unit testing: Unit testing is getting more and more popular these days, and you will come across many development companies who require tests for all new code, or those that may even practice Test Driven Development (TDD).
6. Common design patterns: These have become the common lingo of professional programmers. You don't really need to commit every line of code to memory, but you should know what the patterns in the Gang of Four book are from a high level and when they would be helpful so you can Google the code and use them.
7. Package managers: These are rapidly becoming more popular. NPM for node, Nuget for .NET, Gem for Ruby, etc. As usual, PHP has several different choices, but Composer is rapidly becoming the de facto standard. These not only help you to easily download libraries and frameworks right into your project, they usually contain tools to automatically help you maintain your dependencies, from automatic updates of all the packages used in your project to quick dependency checks and installs (for example, you download package C that itself depends on packages X, Y, and Z, and the package manager picks that up and automatically installs X, Y and Z for C to work correctly). This is the best way to share libraries and classes today.
8. Agile Development: This is a development methodology that many companies use now. It is a set of practices that attempt to alter the software development cycle to better match modern problems.

There is probably more, but that is what I can come up with off the top of my head.

However, I don't personally believe that PHP is a good language to learn these things. This is mostly because PHP is just drowning in choices. There are dozens and dozens of frameworks, ORMs, package managers, etc. I think a better option is to learn these as a cohesive whole in a full-stack platform (a platform that provides all the official pieces, from the framework, ORM, package manager, unit testing, etc.), such as .NET or Ruby on Rails. Once you get the hang of using these pieces in a full-stack platform, adjusting to and objectively judging the options available on wide-open platforms like PHP to choose the pieces you want to bring together will be much clearer. It would also help you to better be able to quickly pick-up new things you will inevitably have to handle being a professional PHP developer, since you may end up having to change frameworks very, very often with PHP.
The indelible lord of tl;dr
User avatar
a_bertrand
Posts: 1536
Joined: Mon Feb 25, 2013 1:46 pm

Re: How much do you know?

Post by a_bertrand »

I would say, sure you can learn some stuff by reading books, following courses and so, however nothing will be like experience. And Experience mean time. You can speed up a bit things, but you can't jump steps. Also before jumping around and trying to learn 2-3 or more programming language, STICK TO ONE or 2 (if you are the web development, you usually need at least 3 (your server code, js and HTML)). It doesn't matter really what language you learn, as long as you really master it. Why? Because once you mastered all the concepts it will be easier to switch to another language. Yet I have a bad news for you, the concepts you can learn out of JS or PHP are those which offer the less. If you start with C++, Java, or C# you will have a lot more than JS or PHP. Why? Because JS basically lacks what an OO is, and even if you can basically reproduce similar behaviors it is still an "hack around" language. PHP is on the messy side as well, the OO offered is incomplete, and many concepts are then implemented by frameworks or simply missing.

Does that mean you must yet learn or start with something else? No, but it means it will cost you more efforts to go from PHP to Java than from Java to PHP or Java to C#. So if you will ever need to switch to something else, for example you want to make standalone software, then you will have a lot more efforts to invest.

Finally, don't worry about facebook programmer tests. First of all facebook is quite certainly going down soon enough, second, you may actually learn more in a smaller company where you have full control of your own project instead of coding that single function inside a huge product.
Creator of Dot World Maker
Mad programmer and annoying composer
User avatar
vitinho444
Posts: 2819
Joined: Mon Mar 21, 2011 4:54 pm

Re: How much do you know?

Post by vitinho444 »

Jackolantern wrote:Here is a list of the things you should know to be a highly qualified developer today, in no particular order:

1. A few base languages: This goes without saying, of course.
2. The most popular framework(s) for your platform: For some languages like C# or Ruby, this is an easy choice since there is really just one used professionally. For others like PHP, this is quite a bit more complicated due to the massive amounts of frameworks. Large companies using PHP tend to use more the "old standbys" Zend, Symfony and CakePHP than the "bleeding edge" frameworks like FuelPHP, YII and Laravel that tend to be popular with open source developers.
3. ORMs: Writing SQL queries into your source is now considered bad practice, and ORMs have taken over. For .NET, that is Entity Framework. Java has Hibernate. PHP of course has multiple choices, with Doctrine, Propel and many others.
4. Source control: You should be comfortable using at least Git and a more traditional source control system like Subversion.
5. Unit testing: Unit testing is getting more and more popular these days, and you will come across many development companies who require tests for all new code, or those that may even practice Test Driven Development (TDD).
6. Common design patterns: These have become the common lingo of professional programmers. You don't really need to commit every line of code to memory, but you should know what the patterns in the Gang of Four book are from a high level and when they would be helpful so you can Google the code and use them.
7. Package managers: These are rapidly becoming more popular. NPM for node, Nuget for .NET, Gem for Ruby, etc. As usual, PHP has several different choices, but Composer is rapidly becoming the de facto standard. These not only help you to easily download libraries and frameworks right into your project, they usually contain tools to automatically help you maintain your dependencies, from automatic updates of all the packages used in your project to quick dependency checks and installs (for example, you download package C that itself depends on packages X, Y, and Z, and the package manager picks that up and automatically installs X, Y and Z for C to work correctly). This is the best way to share libraries and classes today.
8. Agile Development: This is a development methodology that many companies use now. It is a set of practices that attempt to alter the software development cycle to better match modern problems.

There is probably more, but that is what I can come up with off the top of my head.

However, I don't personally believe that PHP is a good language to learn these things. This is mostly because PHP is just drowning in choices. There are dozens and dozens of frameworks, ORMs, package managers, etc. I think a better option is to learn these as a cohesive whole in a full-stack platform (a platform that provides all the official pieces, from the framework, ORM, package manager, unit testing, etc.), such as .NET or Ruby on Rails. Once you get the hang of using these pieces in a full-stack platform, adjusting to and objectively judging the options available on wide-open platforms like PHP to choose the pieces you want to bring together will be much clearer. It would also help you to better be able to quickly pick-up new things you will inevitably have to handle being a professional PHP developer, since you may end up having to change frameworks very, very often with PHP.
Very good list :)
I tried Zend one day but It wasn't anything i expect, at my eyes Zend and maybe other networks are just to speed up the page creation.. But i like to controll the whole page as I want, where I want.

I have already a few items (not mastered ofc) like version control on GIT and the base languages :P, I started on VB, but you can't really call that a start ahaha, then C++ (doing the hardest program ever made by man, hello world on console) and then moved to 2D game dev on C++ using Allegro (OpenGL and DX are so hard..). Now I'm more into Web dev because It's a thing that i feel really comfortable doing, but not exactly master it since making websites is just a small part. PHP is not a very good example imo, I know C# too since i use it on Unity for scripting, but yet again, that's nothing right? I can't really make a console application with it, well unless you give me visual studio and that sexy intelisense ;) I can do anything with that thing.

I never heard of ORM nor Package Managers. I looked into your ORM link and at first sight it adds more security ,i believe, to your SQL queries right? I'm learning PDO in the moment since mysql in php is not going very well and PDO offers a nice smooth change if i want :)

a_bertrand wrote:I would say, sure you can learn some stuff by reading books, following courses and so, however nothing will be like experience. And Experience mean time. You can speed up a bit things, but you can't jump steps. Also before jumping around and trying to learn 2-3 or more programming language, STICK TO ONE or 2 (if you are the web development, you usually need at least 3 (your server code, js and HTML)). It doesn't matter really what language you learn, as long as you really master it. Why? Because once you mastered all the concepts it will be easier to switch to another language. Yet I have a bad news for you, the concepts you can learn out of JS or PHP are those which offer the less. If you start with C++, Java, or C# you will have a lot more than JS or PHP. Why? Because JS basically lacks what an OO is, and even if you can basically reproduce similar behaviors it is still an "hack around" language. PHP is on the messy side as well, the OO offered is incomplete, and many concepts are then implemented by frameworks or simply missing.

Does that mean you must yet learn or start with something else? No, but it means it will cost you more efforts to go from PHP to Java than from Java to PHP or Java to C#. So if you will ever need to switch to something else, for example you want to make standalone software, then you will have a lot more efforts to invest.

Finally, don't worry about facebook programmer tests. First of all facebook is quite certainly going down soon enough, second, you may actually learn more in a smaller company where you have full control of your own project instead of coding that single function inside a huge product.


I'm currently sticking to PHP, HTML, JS (veryyyyyy littttleeeeeeee ahaha jquery saves the day), CSS, C# for Unity scripting. And that's it for now. But can you really master a language, example I never needed web services, so from what I used of PHP i "mastered" it, but it wasn't the whole language :P
Like i said to Jacko i started from C++ (ofc i started without OOP ahahah i remember i had my main FULL of functions like PlayerShoot() PlayerMove() :lol:) and now im learning java in college, in this new semester i will learn OOP Java, but I really don't get it languages like C# and Java, since they are organized mandatory in classes, doesn't that makes them OOP right away? C++ you can just use the main file without any classes, well ok you can say that Class Main doesn't count in Java so yes, but you get my point.

Yeah I looked at those tests not to join facebook but to test my skills, apparently I'm not yet there. I would like to make my own company but nowadays its so hard to start something... get new clients and stuff it's very hard :/
My Company Website: http://www.oryzhon.com

Skype: vpegas1234
User avatar
a_bertrand
Posts: 1536
Joined: Mon Feb 25, 2013 1:46 pm

Re: How much do you know?

Post by a_bertrand »

An OOP language like Java or C# don't actually force your to code in OO. Yes you will need to have at least one class, but still you could work with goto inside. Not nice, but can.

Code clarity, quality, depends on the coder, not the language.
Creator of Dot World Maker
Mad programmer and annoying composer
User avatar
vitinho444
Posts: 2819
Joined: Mon Mar 21, 2011 4:54 pm

Re: How much do you know?

Post by vitinho444 »

a_bertrand wrote:An OOP language like Java or C# don't actually force your to code in OO. Yes you will need to have at least one class, but still you could work with goto inside. Not nice, but can.

Code clarity, quality, depends on the coder, not the language.
Yeah that was what I was talking about :) Ofc i will always use new classes for new objects for code clarity :)
My Company Website: http://www.oryzhon.com

Skype: vpegas1234
User avatar
Jackolantern
Posts: 10891
Joined: Wed Jul 01, 2009 11:00 pm

Re: How much do you know?

Post by Jackolantern »

An ORM maps plain ol' objects to your database. Instead of working directly in SQL with tables and columns, you work with objects and their fields. It is a more natural fit for an OOP language. Most ORMs also abstract the actual database connections so that you can change out the underlying database without any change to your code.
The indelible lord of tl;dr
Xaleph
Posts: 897
Joined: Mon Feb 07, 2011 2:55 am

Re: How much do you know?

Post by Xaleph »

You can only grow by doing. That`s what programming is all about. You can follow courses in school, read books, read tutorials online and never truly understand programming. And trust me when I say it doesn`t matter what language you begin in. PHP is as good as starting with Java or C#. Why? Because the basics of programming are not about the concepts discussed in the Book of Four, neither is it about ORM`s or package managers. Programming starts by assigning a value to a variable, do some mutations and have some output.

For the record, html and css are by no means "programming" languages. Javascript is tough. And I would like to point out that Javascript is probably the most object-oriented language out there currently. The concept of primitives does not exist in a Javascript world.

In any case, stick with PHP for now, soon you`ll start using objects more and more, heck maybe even use an ORM just so you don`t have to write those annoying queries every single time and then, well, then you can say you`ve earned the PHP mastery badge. Why? Not a single person alive knows every little thing to a specific language. Fortunately, there are no "elitist" douchebags in the world of PHP ( like in some other languages, that proclaim they know every thing about a language. Fact of the matter is, they don`t. They never will and they never should have to). Programming isn`t about knowing all the ins and outs of a certain language, it`s about understanding the concepts. Why does a loop work they way it does? that stuff.

And that same good stuff is traversable to other languages. That`s why software engineers don`t fear new languages. Neither should you. I don`t think you had a hard time going from PHP to C# ( unity style.. meh) why? Because the same rules apply and as a plus side, both languages took their syntax from C so syntax-wise, they weren`t that different.

Just keep doing what you`re doing now, try to find ways to make things smoother, or faster. Experiment and you`ve reached the core of programming ;)

ps. if you`re really interested in CS later on in your career, choose an education that helps you along that path. The study will most likely suck, because, as with everything tech-related, it`s outdated the moment it enters the classroom, but bear with it. You`ll pick up some nice traits and instead of trying to prove yourself, you have a diploma that will.
User avatar
Jackolantern
Posts: 10891
Joined: Wed Jul 01, 2009 11:00 pm

Re: How much do you know?

Post by Jackolantern »

Xaleph wrote: Because the basics of programming are not about the concepts discussed in the Book of Four, neither is it about ORM`s or package managers. Programming starts by assigning a value to a variable, do some mutations and have some output.
I wasn't laying out the basics of programming. Rather, I was explaining the things a professional web developer ideally would know before applying for a job. Those things are far beyond the basics.
The indelible lord of tl;dr
User avatar
vitinho444
Posts: 2819
Joined: Mon Mar 21, 2011 4:54 pm

Re: How much do you know?

Post by vitinho444 »

Xaleph very nice. I would do just that, stay where I am, doing the stuff I know and try to optimize that stuff with new ones like the ORM's.

Those people that say they master everything I believe that they are talking about the things they use like in my case. If you do websites for like 10 years straight, you can say that you are a master web developer right?
Jackolantern wrote:An ORM maps plain ol' objects to your database. Instead of working directly in SQL with tables and columns, you work with objects and their fields. It is a more natural fit for an OOP language. Most ORMs also abstract the actual database connections so that you can change out the underlying database without any change to your code.
So if i got it, ORM (basically) is like having several Objects (like classes) that represent our tables and on those objects we have fields that represent the database table fields.. And you can access them without any querying. Sounds great :)
My Company Website: http://www.oryzhon.com

Skype: vpegas1234
Post Reply

Return to “General Development”