Jump to content

Seeking: opportunities or expert advice


kevint

Recommended Posts

Hey guys  8)

 

So, I'm new to this website.  Actually, today I intended to sign up for the forums on php.net (which I just assumed would exist) and post something like this.  Their mailing list structure didn't appeal to me; I wanted a forum.  I'm not sure that this category is the right place for this post, but I couldn't find a cat. that seemed 100% appropriate.  So, here goes:

 

I'm a big web enthusiast, and have been for quite a long time.  I do not work in the web industry.  I am aware of more technologies/ concepts than ones I can actually implement (example, I know what Rails and AJAX are, but have never used either.  I understand what people mean by 'object-oriented', but I'm not an expert programmer in any language).  So, that's a bit about me.

 

I want to do this for a living, eventually.  I've been dabbling since I was 8 or 9 (I'm 24 btw), but never made any decisions until now (I have lots of other interests, too; probably, like you guys do as well).  Here is my current situation, and the problem that follows from it:

 

It will be a little while before I can actually switch jobs and go back to school for this (maybe a year or two).  So for now I am trying to build up my skills at home.  I read voraciously about all of it.  But I find you need to actually DO stuff (produce) to transfer all the theory you learn by reading into real, usable skills.

 

I knew a bit of php (and when I say a bit, I mean I knew how to make Hello World) years ago, and I always liked the idea of it.  So I decided I would learn that.  And MySQL.  We have a lot of computers where I work, and a lot of times they need to be replaced, upgraded, etc.  The shocking thing was, there was no central record of all that we had, or where any of it was located within the organization, etc.

 

So I undertook this project at home as my way of learning PHP and MySQL (not really to help out my employer, but that was a side-effect and doesn't hurt my image there at all).

 

I read a lot, and made a good little web app.  I read up on relational database design, and then used MySQLWorkbench to draw one up for my purposes, and exported the code.  I installed MySQL to run locally on my laptop (Macbook Pro).  I installed an updated PHP, too.  I had sample chapters from a book from Sitepoint.com called 'Build Your Own Database Driven Web Site Using PHP and MySQL' (by Kevin Yank).  I liked what I had, so I bought the whole book and read it.  Using that and a bunch of Googling, I built the web app.  I'm proud of it.  I am SURE that I used more code than necessary, defined more variables than necessary, etc.  But it WORKS.  And it's built in a modular fashion, using lots of includes and reusing lots of code, instead of having one big page with everything in it.

 

What I have is a relational database (that uses foreign key constraints, even; make fun of me if that's not supposed to be something to be proud of) containing all of our IT assets at work.  I inventoried them all myself and put them into this thing.  You can use the web app to search through the table (filter by any of the columns, like location, model, etc.).  You can sort the table by clicking on a column title to sort the whole thing in ascending order of that column (by table, here, I mean the one displayed on the web page.  The MySQL database for it is relational, and has 6 or 7 tables.  Example, the master table has an asset number for a computer and a location id number.  The location table relates that location id number to a location name like "front office").  You can add stuff to it with another form.  You can modify stuff, delete stuff, etc.  I made this using PHP, connecting to my MySQL database, and outputting HTML.  And then I styled it all up pretty using CSS and graphics I made in Photoshop.  (I wrote it all in an OS X web dev app called Coda - http://www.panic.com/coda/).

 

So, hey!  I'm proud of it.  I started out knowing HTML and CSS, and how to make Hello World appear in PHP.  I knew nothing about databases.  I knew what I wanted to make, I learned what I had to, and I made it.  And it works (well).

 

So now, here's the thing:

 

I really want to continue with this!!!

 

I LOVED DOING IT!

 

But that database web app that I made was pretty much all I could think of to make.  My current job doesn't have many opportunities like this.  It's not an IT industry, we just have lots of computers, and they weren't kept track of.  Now they are.  That's pretty much it, for that.

 

I am hoping that some of you gents (or ladies) can point me in the right direction.  I could (and do) read about more advanced topics than the ones I implemented to make my app.  But I have no where to apply this knowledge.

 

Are there some open source projects I can become part of, that any of you know of (I mean something smaller in scale than, say, WordPress, which is very advanced)?

 

How did all of you do it (find ways to apply the advanced theory, and thereby turn it into a skill)?  Are any of you guys also developers with jobs not related to PHP?  Or maybe you used to have such a job?  How did you make the jump from the basic stuff (which is what I consider the app I made to be) to the advanced?  The thing is: the basic stuff (talking to the database, displaying the info on your page as HTML) has a lot more common applications than the more advanced things you can do with the language.

 

This might seem nebulous.  I'm not sure how to ask what I want to ask.

 

I'm looking for a way that I can get more into this community, and learn to be a real PHP developer.  Like an app in development that I can be part of.  I know, there are tons of open source PHP web apps out there, but the ones I have looked at have lots of code that I don't grok at all.  And if I were to write something (like an extension) for one of them, I'm not sure where to start.

 

I'm re reading this post and even to me it sounds like, "What exactly is this guy asking?".  Basically: I can now make basic stuff using PHP and MySQL.  What is the best way to get into more advanced stuff?  In a way that I can do more than just read about it.  A way that I can read the theory and then have something to apply it to, so that it becomes part of my skills set.

 

Any answers are appreciated.

 

Move my topic if it's in the wrong place, I wasn't sure which category fit this most.  I want to learn to design more advanced web applications, so I put it here.

 

Thanks for any help guys!

 

Cheers,

 

- Kevin (in Canada).

Link to comment
Share on other sites

(Disclaimer:  I'm by no means a genius with PHP or any language, so feel free to assume I'm just crazy in the following post.)

 

I suggest just learning as much as you can.  The thing I often see people forget with that approach though is that you can't jump straight from square 1 to complex OOP patters and interactions and whatnot.  As boring as the middle stuff is, it is necessary.  Basically I would try to find new things, and if you don't understand it, break it into parts and learn about each part until everything does make sense.

 

As far as involvement in an open source project goes, I doubt you'll be able to contribute to one while at a beginner level.  Not that anyone would have anything against you or anything like that, it's just that open source (well, all projects really) strive to be as good as possible, so the higher the skill level of people the better.  You could always try to think of something yourself though.  It would probably suck in the end (just assuming, I could of course be wrong) unless you entirely rewrote it once you had learned more, but it could be a good learning experience.  Also, letting other people see your code can sometimes help a lot.  Numerous times on here I've posted a solution to someone's problem and someone else has come along and showed me a better way to do something.  The same thing applies to just sharing code in general.

 

 

Anyway, good luck and I hope you enjoy programming.

Link to comment
Share on other sites

In the web industry you perform more jobs then the one you aspired (PHP developer) for that same reason you need to know more about your colleagues jobs then your own as you may sometimes be performing their job due to sick-leave instead of your own. So things you need to know:

 

- Wireframes/Prototypes/Mock-Ups

  A website is not created first in Photoshop but instead they create a wireframe (single or multiple pages) drawn on a piece of paper how the website will look. They also incorporate dynamic effects like pop-ups (JS, Ajax). Of great importance in this process is thinking about the usability of your website. They may also be already looking into SEO strategies.

 

- Photoshop design

  After discussing the wireframes with the client and an agreement on the structure (everything is present) 1 of 3 possible designs is created in Photoshop (after creating a design you mostly need to modify some elements: bigger, smaller, higher, lower, ..). In normal circumstances you now also possess the content of the website which has been re-written by a copywriter to make sure your website is search engine friendly. During implementation keywords are highlighted or deep-linked.

 

- PHP/XHTML/CSS

  After the client agrees on a design it's time for the implementation. Some companies divide front- and back-end development others don't. In either case you will be performing regression testing to validate it works.

 

- Staging/Quality Assurance

  During the development of the website is the client invited to test an implementation on a so called staging server. This can be a part of the website or the entire website.

 

 

These are some of the topics you will need to get familiar with if you want to aspire a job in the web industry. This industry also doesn't ask after your degree but instead they ask after your portfolio. Also consider that some companies only give jobs to developers who really know their language very well. These questions may include something like:

 

What does the following line output?

print sizeof('hello');

 

Answering 5 will stop further interviewing. Also famous is that they give you a problem that tests your knowledge in general programming (mostly easy) or one that tests your knowledge of the PHP library (harder).

 

Like I said in the web industry you are required to wear multiple hats sometimes so many that you'll have to crawl through the door to get in.

Link to comment
Share on other sites

Thanks for the quick replies -- I just posted this last night.

 

Just thought I could maybe re-phrase the question.

 

So, when you want to learn a [programming/ scripting/ whatever] language, you can go online for tutorials.  You will always find the same stuff, taking you through outputting text and then introducing the idea of arrays, moving on to functions, etc.  Shortly thereafter it stops.  There is a plethora of "beginner" tutorials for everything.

 

After that you tend to move out of the "tutorial" mode and get into more specific problems; you can find answers to these in forums and the like, but you only tend to get there by searching for that problem specifically.

 

I have no idea what to search for, where to begin, etc.

 

I'm not exactly looking to JUST become a PHP developer.  Like ignace said, you often wear many hats, and I like that.  I know Photoshop better than I know any language.  Between ages 16-18 I worked for a photographer doing all of his digital imaging.  It didn't pay enough to keep the job (he hired me BECAUSE I was willing to do it on the cheap, instead of hiring someone with a degree).  But I had the opportunity to learn the program forward and backward.  I just love the web, and the next step I want to take is becoming really good at PHP.  From what I can tell, there is a future in the language.  I want to learn lots of other stuff too, like Javascript.  But this is the PHP forum, so that's all I'm asking about.

 

So here is the new question:

 

How did any of you guys go from the beginner PHP tutorials to being good enough with the language to work on higher end, more professional projects using PHP?  How were you able to make the jump from the starter material, which you can learn on any number of sites, to the advanced stuff?  What projects did you take on, and how did you find them, that not only showed you WHAT you had to learn to get to the next level, but allowed you to implement that knowledge and thereby gain a more abstract, conceptual understanding of it (as opposed to the concrete-style "this is how you do it" of tutorial websites).

 

Hope that helps.  Sometimes it's hard to find the right words.

 

If you're super good at PHP; like, you could write core code for WordPress or Drupal or something like that; I want to be like you.

 

I'm sure I'll get there eventually, by hacking my way through.  But I find it hard to see what route I should take to get to the next level.  (Which is why this post is here, looking for pointers from people who've done it).

Link to comment
Share on other sites

In application development there is only one formula: practice and one constant: change.

 

To write something like Drupal or WordPress you start off planning. How you start this planning process is up to you. You can use a methodology like OOA&D if you want to develop enterprise grade applications or start off drawing wireframes to embody your application structure (don't forget usability) once satisfied with all your wireframes you can turn those into photoshop mock-ups. If you like the look & feel of your website you can continue with the implementation. If you want to create an OO application you can create an UML class diagram to represent your models and they can look somewhat like this:

 

interface PageInterface {
    public function publish();
    public function unpublish();
    public function isPublished();
    public function lock(); // prevent multiple users editing the same page
    public function unlock(); // used both by editor as administrator in the event the editor forgets to unlock
    public function isLocked();
}

interface UserInterface {
    public function ban();
    public function unban();
    public function isBanned();
    public function logout(); // double purpose an admin can remotely logout a user (atleast if you store the sessionid in the user table and session's are kept in the database)
}

abstract class UserAbstract implements UserInterface {
    const GROUP_GUEST = 1;
    const GROUP_MEMBER = 2;
    const GROUP_AUTHOR = 4;
    const GROUP_EDITOR = 8;
    const GROUP_ADMINISTRATOR = 16;
    
    protected $group = self::GROUP_GUEST;
    
    public function isGuest() {}
    public function isMember() {}
    public function isAuthor() {}
    public function isEditor() {}
    public function isAdministrator() {}
}

 

Now I can easily do something like:

 

$page->lock(); //or
$page->publish(); //or
$page->unpublish(); //or
$user->ban();// or
$user->logout(); // remote logout 
$user->isEditor(); // before trying to edit a page (much easier then $user->getPrivilege() & PRIVILEGE_PAGE_EDIT or an ACL)

 

General idea here is that after a thoughtfull planning you can ease your application development alot then if you would have just started coding. You also may see problems and have time to solve them instead of running into them just before your about to release..

Link to comment
Share on other sites

You're a bit long winded for my taste (no offense), so I didn't read line by line. That being said... you nailed it when you said you need to practice. Find real life projects that you're passionate about. Don't worry about how to do them initially, just dream up something you want to do. Once you've have idea you're passionate about then you jump into the SDLC stuff that some of the others are talking about. Each step along the way you should reflect and think about how you can do things better next time. As you encounter feature sets that you aren't sure how to implement you'll be forced to research. If you do this every day and you take it seriously you'll get much better, if you don't... you won't. It's up to you young padewan.

Link to comment
Share on other sites

Everyone takes their own path.  I think you've made some good decisions so far, although you're right that necessity is the mother of invention.  I have been at this a long time, and I learned some fundamentals along the way, including 808x assembler (which was pretty helpful in showing how computers work at their fundamental level) and c and c++.  Web development is a complicated endeavor and often underestimated because it involves so many moving parts, and interrelated technologies. 

 

In terms of your current application, while it sounds fundamentally sound, it also sounds like you could take it farther, by enhancing the UI with some DHTML and ajax, which will be an excellent proving ground for your current skills.

 

Most starting developers come into a situation where they spend some time apprenticing for some senior develpers, and you haven't had that experience yet.  An experienced develper might find some issues with your code and approaches, but in a vacuum, you're unlikely to go much further with that approach.  You could learn a lot from looking at framework code like that from Zend Framework or Symfony.

 

With that said, it would be very helpful if you were to pinpoint exactly what it is that you want to be doing in the near time frame.  Basically, what I got from your original post is that you have a pc tech job, and want to be a coder.  It seems that's your first issue -- you're not working in a place where you are paid to program.  So you either need to:

 

-Look for a job where you can be paid to program

-Program at night and weekends when you come home

-Contribute to an open source program (also at night and weekends)

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.