Some questions about PHP and programming

Hi all,

I had many years’ experience as a cobol programmer before, but now I am really into web and mobile development, so I start to learn PHP, JS, HTML, CSS myself by reading books and playing around with the code examples in those books. I am also creating my own website using these technologies.

Currently I am watching a computer science course which uses C(to describe algorithms), I learned C many years ago and never used it in my work. But that course makes me eager to review C and those algorithms. My question is:

  1. My goal is to become a professional web and mobile developer. Will it be of great help if I review C and the algorithms(by watching CS50 and reading K&R)? I know that algorithmsand data structures are fundamentals to good programmers, the question is: whether I need to learn it at the same time with learning PHP, JS, HTML? Or I should focus on PHP, JS, HTML first, after getting a web developer job, then I can review C and algorisms later?

  2. I never used OOP in my work, but today PHP and JS are all OO languages. I plan to lay a solid OO foundation by learning C#, and guess after that it would be easier for me to use the OO part of PHP and JS. Also I want to develop mobile apps using Mono(use C#) later. Could you give me some advice?

  3. Is it better to join an open source project to gain some real experience, especially for a self-learner like me? I just don’t know where to start.

Thanks.

Welcome, @blackswan; to the Sitepoint Forum.

As a fellow “old-timer” (I did my share of COBOL and FORTAN back in The Stone Age of computers) I would like to share my opinion; based on my experience (your Milage may vary). {I knew Dennis Ritchie briefly, shortly before he died}

If you never really used C very much don’t worry. It has little application in the current (and ever evolving) Web Development world. Choosing to learn C# is a wise step. That will provide you some support in your goal to understand OO without the burden that C inflicts upon the developer.

I, too, grew from a world similar to yours and embraced this new fangled thing they eventually called “The Internet” as it was being birthed. My approach was self-taught through dissection. As I discovered something I liked - or struck me as interesting - I would use “View Source” (if it was a web page) and explore the ‘How’ and ‘Why’ of it.

You mentioned you are a self-learner and that - more than anything else - will keep you on track. In many, many respects the core principles you knew/know can be applied to ‘web’ languages like PHP and JS (sometimes with just a little adaptation).
I recommend you continue building a ‘playground’ website (or two or three!) and get your hands dirty with PHP.

The Internet is a collective of human knowledge that grows every day. It has become the single most influential resource for knowledge and I never hesitate to use it. Don’t be afraid to search. Don’t be afraid to experiment.

Finally, this is the best place on Earth to get help during your pursuit. Simply ask a clear and direct question and you will have answer(s) from experienced professionals. We are very proud (and quite thankful) for the wealth of valuable knowledge our members share willingly in this community.

ParkinT, thanks for your kind suggestions!

I definitely will build more than one ‘playground’ websites, and will let you see it when it’s done. I have been learning CSS too and found that being good at css also takes some time and experience(for a website, the attracting appearance is a must, and that’s CSS) .

Today there are so many resources on the Internet, and I grasped a couple of PHP/JS books to learn. Back then to the Cobol time, my favorite books were from Mike Murach, and Murach seems still publishing books on these new technologies.

I will be hanging around here often, probably each day :slight_smile:

I think learning algorithms alongside a language will give you an advantage. Many self-taught programmers (myself included) tend to pick up various CS concepts down the line and have ‘light-bulb’ moments where they realise these things would have been useful to know earlier.

For mobile, the two main languages would be Java (for android, and which would help with a solid OO grounding) and Objective-C (for iOS, and which should be easy to pick up of you’re already familiar with C).

For web apps, I’d get a good grounding in HTML and JS first, as you’ll need a good knowledge of these regardless of which server-side language(s) you decide to learn. As for which server-side language to learn first, if I was starting out today I’m not sure I’d choose PHP… I’d take a look at which languages are most in demand in the geographic area where you’re planning to work. Obviously for .NET/Mono stuff, C# would be a good choice, but Ruby is also very popular choice and many developers consider it more pleasant and productive to work with than PHP.

As for your last question regarding open-source projects, they can be a great opportunity to work with more experienced developers if you don’t yet have a job in the industry. Another good option though would be to work on side-projects of your own. SitePoint now has a dedicated code review forum where you can get feedback on your code.

Hi fretburner, thanks for the suggestions! So if you started today, the server-side language you would choose would be Ruby, not PHP, right?

I am checking how to join some open-source projects, but haven’t got any idea, could you advice how to join an open-source projects?? I have enough time to be engaged in it. As to ‘working on side-projects of my own’, how to start doing this?

I definitely would post my code on the code review forum, this is great!

Basically, I am eager to get a full-time job as a web developer, and before that, I need real experience. If I post a thread on the forum saying that I am available to do some web development tasks for people for free, will this be a good idea? (I just want to gain a portfolio and some project experience).

I have found huge benefits (as far as gaining experience and making new acquaintances in the industry) from contributing to Open Source Software. It is a bit daunting at first. I highly recommend you find a few projects on Github that interest you and look carefully at the documentation. There is often a huge gap in the docs - no one wants to spend the time working on documentation - and it is an outstanding Foot-In-The-Door to a project. Additionally, it helps you gain confidence mixing in the world of Open Source.

Actually, that would be in violation of our Rules here. But, I understand your sentiment and perhaps you can find local small business or community groups who would like your services - as a volunteer - to provide them some benefit and provide you some experience. It also looks very good on a resume to point to projects you did for Community/Religious Organizations.

ParkinT,
Thanks! You said “If you never really used C very much don’t worry. It has little application in the current (and ever evolving) Web Development world. Choosing to learn C# is a wise step. That will provide you some support in your goal to understand OO without the burden that C inflicts upon the developer.” – Yes, I choose to learn c# to better understand OO, not OO PHP. I believe that with the OO foundation that I learn from C#, when I take a look at OO PHP, it would be easier. Is my understanding correct?

I will start search Github for any projects that I can join and do.

I would say your assessment is correct. Object Oriented Programming is more of a philosophy. So it applies equally to any/all language(s).
Don’t overlook the fact that, with C# you have the opportunity to write Web Applications (in ASP .NET). It is a bit of an anomaly because the server code is compiled (where as most other web frameworks the server code is interpreted). But that is really a minor implementation detail and has no effect on your workflow.

Off Topic:

I would also caution you that Javascript is an ‘Object Based’ language but not Object Oriented (in the same sense as others)*. I am NOT suggesting you avoid or ignore learning Javascript. But don’t try to apply OOP or use it as your example for classic Object Oriented architecture.

*I know this will generate a series of refutes from experienced developers because the statement is only half-true.

PHP carries with it a lot of baggage from its early days, so a lot of inconsistencies and less-than-optimal design choices still afflict the language… some consider it easier to write poor code, as PHP is more forgiving in some ways than languages like Ruby.

On the other hand, the language has come a long way and there are a lot of good quality frameworks and libraries being written. PHP is also pretty easy to get running on your computer, and even the cheapest web hosts usually support it.

Basically just pick some projects to work on in your spare time. Perhaps you already have an idea for a web app or, if not, you could just choose an existing app that interests you and try to recreate it in whichever language you’re learning.

Doing something like this can be a fantastic learning exercise, as you discover along the way all the things you need to know to create a web app… authentication, caching, databases, working with 3rd-party APIs etc. Some prefer to pick a particular topic to learn, and then create a small ‘toy’ project just to play around with that. You can put these projects up on github as your portfolio and then give prospective employers the link.

ParkinT,
Thanks. You mentioned ‘’ with C# you have the opportunity to write Web Applications (in ASP .NET).", yes, that’s exactly what I plan to do with C#. Actually I plan to do these things with C#:

  1. Since I have being learning PHP, JS, CSS & HTML, I can later also use ASP.NET to create websites. And many concepts and skills that I learned from PHP suite will also serve ASP.NET;

  2. I want to develop some mobile apps for iOS and Android, using C# Mono, because I am interested in mobile development too.

  3. Because I love playing video games, in the future I might take a look at the game engine Unity 3d, which use C# or JS to develop.

Languages can change and update, but many basic concepts of computer technologies change relatively slow. I believe with a good programming foundation, it’ll be easier for a programmer to adapt to new things.