Could use some knowledgeable input on what I should invest time in...

Turbonium

Platinum Member
Mar 15, 2003
2,109
48
91
I'm very interested in programming, web design, and basically anything IT-related. I'm a self-taught web developer (HTML, CSS, JS), and have experience in programming (Java).

I spend a lot of time on the computer, and I'd like to make the most of it. What should I learn next? Should I learn PHP so I can make real websites?

I've always wanted to program a game of some sort. Should I learn C++ (virtually from scratch)? I'm by no means gifted in math, but I am tenacious and am good at using the internet to solve problems I don't know how to solve (forums, documentation, tutorials, etc.).

As for a career-path: no clue where I'm going. If I can get a well paying job in IT in 4-5 years, that would be optimal, but my degree is in something totally unrelated. I would assume I need formal schooling to get a good job, but ignoring that fact, what do you recommend I do on my own (in addition to formal education)?

It's basically PHP vs. C++ vs. working on various projects that I never finished (heavily modified phpBB board/theme, game modding, etc.; basically, very specific, non-transferable skills/accomplishments).
 
Last edited:

Markbnj

Elite Member <br>Moderator Emeritus
Moderator
Sep 16, 2005
15,682
13
81
www.markbetz.net
If your time is limited then you should probably focus on the things that will move you closer to your goal. If the goal is to become a better programmer in general, maybe write some neat programs, then learning C++ is a good step. However, if the goal is to work and earn a good living, then I think the natural progression from where you are now is to learn a server-side language and start learning about databases. My personal suggestions would be Python/MySQL on the open source stack, and C#/SQL Server on the Microsoft stack. Another possibility is you move toward mobile app development. Not a bad choice either. There you have Java on the android side, Objective-C on the Apple side, and C# on the Microsoft side.
 

Turbonium

Platinum Member
Mar 15, 2003
2,109
48
91
If your time is limited then you should probably focus on the things that will move you closer to your goal. If the goal is to become a better programmer in general, maybe write some neat programs, then learning C++ is a good step. However, if the goal is to work and earn a good living, then I think the natural progression from where you are now is to learn a server-side language and start learning about databases. My personal suggestions would be Python/MySQL on the open source stack, and C#/SQL Server on the Microsoft stack. Another possibility is you move toward mobile app development. Not a bad choice either. There you have Java on the android side, Objective-C on the Apple side, and C# on the Microsoft side.
Any reason to avoid PHP in favour of Python? My programmer friend just finished telling me that PHP is a horrible language. I'm still not sure why that is.

Also: are books useful for learning? Or would you just stick to web-based resources?
 
Last edited:

Cerb

Elite Member
Aug 26, 2000
17,484
33
86
Required first reading, if you want to start getting into DBMSes.

My programmer friend just finished telling me that PHP is a horrible language. I'm still not sure why that is.
Will function X return "", 0, or null? Sometimes, it depends. PHP has its uses, great documentation, and a great community, but quite a few little gotchas that keep popping up. An example, as P.S., is index returns returning 0, yet 0 being equivalent to false. So if the first item matches and is returned, an if (stripos(args)) {foo} else {bar} will execute bar on finding what you want at the first char, so you must either do more comparisons, or add typing to the comparison. However, such code will run just fine, and not cause any obvious bugs right off, so you've got to be extra careful.

See, it was made just to wrap some libraries up in an interpreter to replace standard CGI scripts, and then it caught on like wildfire, and before anyone knew it, was being used by large companies, and backwards-compatibility mattered. Without enough time to really think out a better language, it was already too late. On the bright side, pretty much all the new features, starting from the late 4 versions through now, have been designed and implemented really well, and getting good performance/scalability out of PHP is much easier than Python (but, that's only an issue for web apps that will have to service triple-digit users at a time, typically).

IMO, if you already can do Java and JS reasonably well, books might be worth it for C#, but would only be good for time-saving reference material for PHP or Python. IE, the case where you know what you want to do, and know there's got to be a good way to do it, but can't think of it, due to either lack of prior exposure, or thinking of it in terms of another language's semantics.

If you want to do externally-facing web, Python and PHP are both popular. C# tends to be used much more for business use internally, or to other businesses, just due to the licensing costs of the server software involved. Python, however, would also be good for regular client applications, and is a really nice clean language, until you have to do multithreading ("people really need to do that? OK, well here's some thread-safe POSIX wrappers. Have fun."). Java/Dalvik, I really don't know much about, other than some of its uniqueness compared to Sun/Oracle Java.
 
Last edited:

Turbonium

Platinum Member
Mar 15, 2003
2,109
48
91
Perhaps I will learn some JS right now. Tbh my experience with JS is limited to "script-kiddie" type stuff. I've never actually scripted stuff from scratch. I figure since I know some Java though, it shouldn't be much of a problem.

Thanks for the input thus far. It's all been very informative.
 

Ancalagon44

Diamond Member
Feb 17, 2010
3,274
202
106
I think it will be easier for you to decide which language you would like to concentrate on if you had some idea where you want to go with it.

Maybe start breaking it down into the fundamentals, ie:
Corporate or game development?
Desktop, web or mobile?
Native code (C++) or not?
Working for someone else or working for yourself?

Once you can answer those questions, you can decide on where to go. If you answered Corporate, Web and non native code, I'd suggest PHP, Ruby on Rails or ASP.Net. If you answered game development and desktop, you can do native code, or you could use something like GameMaker or Unity. They make things a little easier.

A lot of games are written in C++, but its by no means the only choice. Smaller games and indie games tend not to be written in C++ as far as I'm aware.
 

Turbonium

Platinum Member
Mar 15, 2003
2,109
48
91
I think it will be easier for you to decide which language you would like to concentrate on if you had some idea where you want to go with it.

Maybe start breaking it down into the fundamentals, ie:
Corporate or game development?
Desktop, web or mobile?
Native code (C++) or not?
Working for someone else or working for yourself?

Once you can answer those questions, you can decide on where to go. If you answered Corporate, Web and non native code, I'd suggest PHP, Ruby on Rails or ASP.Net. If you answered game development and desktop, you can do native code, or you could use something like GameMaker or Unity. They make things a little easier.

A lot of games are written in C++, but its by no means the only choice. Smaller games and indie games tend not to be written in C++ as far as I'm aware.
That's part of the problem. I got no clue what I want to do.

Practically speaking, I need a job first. I figure this means building on the web development foundations I have. Ideally, I'd want to make games, but I can always do that as a hobby.

I actually did program a game about a decade ago with my basic Java skills. I know I got it in me to make great games, but it's not like I'll have control of both the art/story and code side of things in the industry. Thus, I think I may want to stick to it as a hobby, or perhaps release an indie game somewhere down the line.

I've always wanted to learn C++, simply because it's the most powerful and most efficient language there is as far as I know (for making games, anyway). Although, I doubt efficiency is much of an issue with today's hardware. Even running a VM is no big deal, especially with the level of games I would want to create (2D; I don't think I'd go into serious 3D work, simply due to complexity alone).

What are most indie games coded in, and why?
 
Last edited:

Ancalagon44

Diamond Member
Feb 17, 2010
3,274
202
106
I think at the moment most indie games use GameMaker and Unity, simply because they are all in one solutions that simplify development. They also provide cross platform portability, at least Unity does.

I'm developing a game in C++, using Ogre as the rendering engine, and Bullet for physics. But I can tell you its not easy - C++ takes a while to learn. So I'm basically writing the game engine - the rendering and physics parts are taken care of. But things like changing state etc are not. I'm using them because they are free, fast, and cross platform.

For a 2D game, I dont think C++ is necessary. If you can find a good SDK/library that would simplify game development, then use C++. If you cant find one, use something else that does cater to 2D game development. You dont want to reinvent the wheel unnecessarily, especially not in C++.

I'm not making my game as a hobby though - I quit formal employment nearly 5 months and started my own company. I am doing the game design and story, and paying someone else to make the art assets (3d models etc) for me.
 

beginner99

Diamond Member
Jun 2, 2009
5,210
1,580
136
Personally I would stay away from C++ and creating games. Just not a very good idea in terms of salary and work hours... unless you really are extremely exceptional. But I would never go with that assumption if you want to remain realistic.

My recommendation is to find a reasonably simple problem (one you can actually solve) and then create a solution for it. Most of this will require you to:

- create a data store (probably RDBMS)
- use server side language
- create a client (eg a web site)

As server side language I woudl stay with Java but chose some kind of often use framework and learn that. Example: Spring. (I'm doing that now).

PHP has it's use cases and limitations. I would prefer it for small, simple CRUD apps. However I would never suggest to learn it before having learned a "real OO language". With PHP it can be easy to get used to bad habits and practices.
 

sourceninja

Diamond Member
Mar 8, 2005
8,805
65
91
I'm not a big fan of php, ok I despise php. That said, I make a large part of my living writing php. There is no reason to not learning, it's a huge industry with lots of jobs. That alone makes it worth learning.
 

Net

Golden Member
Aug 30, 2003
1,592
2
81
what revision control software are you using?
what ide?

if your not using a revision control software then i'd suggest learning git. here is a basic intro: http://try.github.com/levels/1/challenges/1

next get to know your ide. take a look at the shortcuts, they can save you a lot of time.

for instance, suppose you are looking for a class in your project named ShoppingCart.java. In eclipse press: ctrl+shift+T, a dialog will pop up that will quickly bring up class files as you type the name.

ctrl+d deletes a line
ctrl+alt+down arrow duplicates the line
atl+shift+R refactors the selected variable
etc...
 

billyd65

Junior Member
Oct 24, 2012
1
0
0
Learning PHP isnt so bad if you choose that road. I design my own websites and started off with this package at http://learnphpquick.com/ The step by step video guides make it a breeze and combine it with other forums. You'll have it mastered in no time at all.
 

beginner99

Diamond Member
Jun 2, 2009
5,210
1,580
136
I prefer mercurial. But AFAIK it does not really matter as you can transom between the 2 types and work with the one you like better.
 

Cerb

Elite Member
Aug 26, 2000
17,484
33
86
I prefer mercurial. But AFAIK it does not really matter as you can transom between the 2 types and work with the one you like better.
Aside from checking out remote source to build non-stable versions of software, I have no experience with anything but CVS, SVN, and VSS. Looking at comparisons, it does look like it will be much easier to get into. The CVS-types rubbed me the wrong way, so I'd like to try something fundamentally different.
 

Tweak155

Lifer
Sep 23, 2003
11,448
262
126
Given all my contacts recently for open positions - I rarely get contacted for PHP. I'm not all that skilled in it even though I wrote 2 websites with it. My advantage is the syntax and structure was very similar to C++ so I picked it up quick.

Nowadays learning something in the ASP.net environment is the money. Lots and lots of contact for that, so I'd pick up either C# or VB.net. JavaScript is kind of a cross language language (kinda how HTML is used regardless of language) so learning that will likely be a plus anywhere, just wont be your meat and potatoes of your job.

My personal preference would be C#. MS has free dev environments for small projects that will help you learn the environment you'll be tossed into at a workplace.
 

sourceninja

Diamond Member
Mar 8, 2005
8,805
65
91
I've been getting a lot of work recently with groovy on grails. Seems to be picking up steam, I'm not really sure why. I've also been getting a lot of work to just setup drupal (which isn't programming, but comes from the same contacts).
 

Cerb

Elite Member
Aug 26, 2000
17,484
33
86
I've been getting a lot of work recently with groovy on grails. Seems to be picking up steam, I'm not really sure why. I've also been getting a lot of work to just setup drupal (which isn't programming, but comes from the same contacts).
Drupal is awesome to configure and use, but you really want a mirror of production for maintenance, even on a site that's not too big. Updates can royally hose things up, sometimes, and Drupal proper, along with modules, get updated awfully frequently.
 

sourceninja

Diamond Member
Mar 8, 2005
8,805
65
91
Drupal is awesome to configure and use, but you really want a mirror of production for maintenance, even on a site that's not too big. Updates can royally hose things up, sometimes, and Drupal proper, along with modules, get updated awfully frequently.

We live in a virtual world, you don't need mirrors, you just clone the system when it's time to do updates, testing, or major development. I can have 1 test machine or 50 test machines on any given day based on what I'm doing :)
 

Cerb

Elite Member
Aug 26, 2000
17,484
33
86
We live in a virtual world, you don't need mirrors, you just clone the system when it's time to do updates, testing, or major development. I can have 1 test machine or 50 test machines on any given day based on what I'm doing :)
That only works without 3rd-party hosting, usually. I live in a world where virtual servers usually just mean it's cheaper and slower than a physical server :). In that case, it has to be handled at a plain old file level.
 

Albatross

Platinum Member
Jul 17, 2001
2,343
5
81
The money will come easier and faster with PHP,you can always learn C++ later.
 

Turbonium

Platinum Member
Mar 15, 2003
2,109
48
91
Regarding my OP: do I have to be particularly gifted in math to do well in web dev and/or programming? I don't think in numbers and equations by any means, but I'm not entirely inept either.
 

Markbnj

Elite Member <br>Moderator Emeritus
Moderator
Sep 16, 2005
15,682
13
81
www.markbetz.net
Regarding my OP: do I have to be particularly gifted in math to do well in web dev and/or programming? I don't think in numbers and equations by any means, but I'm not entirely inept either.

Not really, no. Math is fundamental to the DNA of programming, but in terms of hardcore mathematics most developers don't encounter it that often in working life. You need to be able to think logically, and decompose problems into algorithms, and perhaps more than anything you need an agile mind that can keep several different concepts, at different levels of abstraction, in play at the same time.