Re: [AtlantaPHP] Re: Building a sample PHP/mySQL web app showcase

140 views
Skip to first unread message

Brian Moon

unread,
Nov 17, 2012, 11:25:27 PM11/17/12
to jms...@gmail.com, atlan...@googlegroups.com
There's no "5 or 6 features" that really make a comprehensive target to aim for.  WhiteAlbumRegistry hits a lot of high points (though I don't exactly know the best way to "scrub data" without first pulling it from $_POST, but I don't think that's what he meant).

I think the important takeaway is that, as far as hiring is concerned, which means interacting with requirements as submitted to HR, keywords are more important than samples.  Odds are if you build a sample, no one would look at the actual code that you built.  What's important is that you can work with the keywords (technologies/frameworks/etc) that are important to the company you're aiming to get hired by, and those are so variable that you couldn't hope to build a comprehensive sample that would really encompass everyone.

The best answer is to be and know you are an expert in PHP, which means that if you haven't dealt with a particular problem or requirement, you can immediately formulate an approach to handle it anyway.  If you are at that level with PHP, then everything else is just details.  If you're not, then know what you can do and know enough to know what you can't do.  If you are able to articulate the things that are on your list of things to learn, that's almost as good as already knowing how to do them, because it shows that you have the capacity to identify how and where to grow.

On Saturday, November 17, 2012 11:47:43 AM UTC-5, Gokemon wrote:
If you were building a sample PHP/mySQL web app to show off your skills, what 5 or 6 features would you want to showcase or think you need to have in there, to prove you can do the work?

In my case, so much of my work has been rather simple in design, not fancy, not flashy, and just functional? Like a user register with email activation, log in system with profile editing and password reset, which can show you understand sessions & cookies, and SQL & database connectivity is one, but what else would you build into a showcase?

I can paginate record sets across pages, and do file uploads, which I am working on converting into a photo tool for advanced profiles.
I’ve never done a shopping cart from scratch yet, so that’s on tap for later, but what would convince you that I knew what I was doing, if you were an employer?

--
You received this message because you are subscribed to the Google Groups "AtlantaPHP Discussions and Job Postings" group.
To post to this group, send email to atlan...@googlegroups.com.
To unsubscribe from this group, send email to atlantaphp+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msg/atlantaphp/-/fJ3jBlyna4sJ.
For more options, visit https://groups.google.com/groups/opt_out.
 
 

Jonathon Hill

unread,
Nov 17, 2012, 8:33:04 PM11/17/12
to atlan...@googlegroups.com
Failed to copy the list on my reply, here it is for your benefit.

---------- Forwarded message ----------
From: Jonathon Hill <jhil...@gmail.com>
Date: Sat, Nov 17, 2012 at 4:17 PM
Subject: Re: [AtlantaPHP] Building a sample PHP/mySQL web app showcase
To: michael....@gmail.com

I don't so much look for features, as how the features were implemented. Here are some things I would look for:
  • How do you handle form field validation? Do you validate your inputs? How thoroughly do you check them (i.e. email address formats, zip codes, phone numbers, etc)? What does your validation code look like? Is it easy to change, or is it a spaghetti mess of one-off procedural code?
  • Do you properly escape ALL parameters into your database queries to prevent SQL injection?
  • Do you have indexes on every database table column that you query, sort, or group by? Are your queries optimized properly?
  • How do you handle errors? Can a user cause the application to crash by entering input values you didn't expect? If the application leverages third party APIs, what happens when they break? Does the application handle errors gracefully? Do you have a way to know what errors happened with the necessary information to debug and fix them? Are you notified when an error occurs?
  • Is your login system and session handling secure? Are session values stored on the server, out of sight, or are they stored in a cookie? Do you change session IDs anytime the user logs in or out? Do you provide a mechanism to reset passwords? Does your login system's error messages provide clues that a hacker could use to discover what usernames are registered in the application?
  • How do you handle file uploads? What happens if the upload directory isn't writeable? Can uploaded files be accessed directly by their original filename on your server after they are uploaded (security risk)? What happens if someone uploads a file that is too large, or the wrong format? What happens if someone uploads a file that is larger than your PHP max_post_size, upload_max_filesize, or max_input_time settings? Do you provide a progress bar for large files? Do you put large files (videos, for example) that need processing into a queueing system for processing out of band?
  • Is your code well-organized with proper application of OOP or MVC patterns, commented, and documented? Is it obvious at a glance what your code does, and do you avoid (or at least explain) obscure or cryptic tricks in the code that hinder readability?
  • How well does your application handle large volumes of data, and large volumes of traffic? Will it break under load?
  • Does the application's primary functionality work well in all major browsers, including IE8+?
  • Does the application work with Javascript disabled?
  • Does the application use Javascript to speed up or smooth out the user experience?
  • If the application involves financial transactions, is it only accessible on a server with SSL? How are fractional values stored and manipulated? Does your application have rounding or precision errors?
Notice that many of these things are under the hood, and they point to having a habit of being thoughtful and thorough in your implementation, with an eye looking out for the user experience, versus just hacking something together.

It is easy to overlook or forget these things, but they separate great programmers from mediocre ones, and they will tell much more about your abilities than your choice of features.

A good book on the subject is "Code Complete: A Practical Handbook of Software Construction" by Steve McConnell.


On Sat, Nov 17, 2012 at 11:47 AM, Gokemon <michael....@gmail.com> wrote:
If you were building a sample PHP/mySQL web app to show off your skills, what 5 or 6 features would you want to showcase or think you need to have in there, to prove you can do the work?

In my case, so much of my work has been rather simple in design, not fancy, not flashy, and just functional? Like a user register with email activation, log in system with profile editing and password reset, which can show you understand sessions & cookies, and SQL & database connectivity is one, but what else would you build into a showcase?

I can paginate record sets across pages, and do file uploads, which I am working on converting into a photo tool for advanced profiles.
I’ve never done a shopping cart from scratch yet, so that’s on tap for later, but what would convince you that I knew what I was doing, if you were an employer?

--
You received this message because you are subscribed to the Google Groups "AtlantaPHP Discussions and Job Postings" group.
To post to this group, send email to atlan...@googlegroups.com.
To unsubscribe from this group, send email to atlantaphp+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msg/atlantaphp/-/ZsU78Fkc6t4J.

Todd Blumenthal

unread,
Nov 18, 2012, 10:11:38 AM11/18/12
to atlantaphp@googlegroups.com PHP
Every programming interview I've had has requested to see code. If you get past HR, be prepared to show and explain your code. 

One other point I'd like to make is that most places probably already have most their operational code written. You might only be needed for maintenance or adding new features to the existing codebase. I've found that many of the things I learned like mysql_connect never gets 'practiced'.

Brian Moon

unread,
Nov 18, 2012, 2:31:10 PM11/18/12
to michael....@gmail.com, atlan...@googlegroups.com
As someone that hires people, I would ask if you want to be a web
developer/engineer or do you want to be a PHP programmer. I typically
don't hire "PHP programmers" despite 90% of all the code we write being
PHP. Learning the frameworks and knowing how PHP sessions work will get
you a mediocre job. And I would guess that those places only really care
about a small part of your skills.

On the other hand if you want to be a web developer/engineer, you need
to show that you understand concepts like security (and not just PHP
specifc things), scalability, high availability, maintainability,
algorithms, etc. Being well versed in more than just PHP is a good thing
as well. The last few hires I have made have had little to no PHP
experience. But, they had solid development and engineering skills.

Some of the comments are right. If you have to interface with HR first,
keywords are required. That is the only thing they have to go on is
those keywords. But, once you are past HR, things will change. You may
have to talk to managers. Those guys may not know anything about PHP or
the things I mentioned. So, again, keywords may be important. In that
case you will have to be able to speak intelligently about those
keywords however. Not that they will know everything you are talking
about, but they may know enough.

We rarely ask for sample code in interviews. That is like asking for a
highlight real. Sure, if the person is really, really bad, it will show.
But, the interview probably already weeded those people out.

Just my 2 cents.

Brian.
--------
http://brian.moonspot.net/

On 11/17/12 10:47 AM, Gokemon wrote:
> If you were building a sample PHP/mySQL web app to show off your skills,
> what 5 or 6 features would you want to showcase or think you need to
> have in there, to prove you can do the work?
>
> In my case, so much of my work has been rather simple in design, not
> fancy, not flashy, and just functional? Like a user register with email
> activation, log in system with profile editing and password reset, which
> can show you understand sessions & cookies, and SQL & database
> connectivity is one, but what else would you build into a showcase?
> I can paginate record sets across pages, and do file uploads, which I am
> working on converting into a photo tool for advanced profiles.
> I’ve never done a shopping cart from scratch yet, so that’s on tap for
> later, but what would convince you that I knew what I was doing, if you
> were an employer?
>
> --
> You received this message because you are subscribed to the Google
> Groups "AtlantaPHP Discussions and Job Postings" group.
> To post to this group, send email to atlan...@googlegroups.com.
> To unsubscribe from this group, send email to
> atlantaphp+...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msg/atlantaphp/-/ZsU78Fkc6t4J.

Brian Moon

unread,
Nov 18, 2012, 2:33:05 PM11/18/12
to jms...@gmail.com, atlan...@googlegroups.com
> The best answer is to be and know you are an expert in PHP.

The only people that have ever told me they were an expert in PHP were
far from it. There are only about 100 of those people in the world.

Brian.

Jason Shinn

unread,
Nov 19, 2012, 8:35:21 PM11/19/12
to atlan...@googlegroups.com
What I mean by "be an expert in PHP" is pretty much a combination of what Brian Moon is talking about with regard to being a "web developer/engineer", and Duane is talking about with being able to communicate.

Ultimately, if you know your craft and you can communicate that, be confident in that ability, because that alone will put you ahead of the vast majority of your peers, unless you're interviewing at Google or similar marquee development company.

Failing that, you need to learn 1 thing: know what you don't know - if you've never used OOP, that's OK, probably.  But when you tell that to your interviewer, it's more like "I've never been involved with a project that used OOP, but I've been looking for a way to get started."  If you can pick out the high points that will be relevant, OOP, frameworks, security, etc., then you're halfway there, it tells them that even if you don't have the experience, you have the knowledge and interest to improve yourself, whether you do it with that company or somewhere else.

Regardless of your level of ability, you'll always struggle if you're not able to communicate, to Duane's point.  The whole point of an interview is to enlighten those trying to hire you about yourself, and why you deserve the job.  Not everyone likes doing that, and not everyone feels confident that they have anything worthwhile to enlighten the interviewer of.  It's not hard to know your worth to a company.  Be curious, educate yourself, and communicate what you've learned.

On Mon, Nov 19, 2012 at 4:28 AM, Duane <dacm...@gmail.com> wrote:
Everyone has raised some valid points and given great advise, but the most important and impressive skill is communication.

If you can explain your code (why you choose a certain method, process, implementation, etc.) to anyone else and have them understand your logic that alone will prove that you know your stuff.

If you can't explain it then you don't know it, plain and simple.

Creating a website to showcase backend skills won't serve that purpose. It will not show that you have created a killer form handling class or image management class, all it will show is that your login form works or you image does get uploaded or at least the errors are handled properly.

I am assuming that this is for the purpose of interviews; most companies want to see your code and want to know that you can explain and back up your logic whether it is the best way to do it or not.

So all that just to say that there is no backend skill that you can display on a website that will quantify or qualify your skills, you gotta be able to talk that stuff and roll with it.


--
You received this message because you are subscribed to the Google Groups "AtlantaPHP Discussions and Job Postings" group.
To post to this group, send email to atlan...@googlegroups.com.
To unsubscribe from this group, send email to atlantaphp+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msg/atlantaphp/-/xRHVWFha1xcJ.

Dan Kelly

unread,
Nov 20, 2012, 6:48:18 AM11/20/12
to atlan...@googlegroups.com
Hello All,

Has any one else had this problem? When I'm at home developing a PHP application and I need something I go to my Library and grab the code that I have written before.. I don't write the same code over and over again..If it's new code I will write it and add it to my library.

When I go on a job interview I show my sample application and code.. I explain what the coding does in detail.. The next thing they do is give me a test and I seem to freeze or I am unable to finish the test. If I was working at the company I would not have any issues with coding.

I have over 15 years of development experience, but I struggle with this issue.  I have been in Atlanta going on 4 years and I've been on many job interviews and its the same issue over and over again.. I never even get a call back.. I've had a freelance job in software testing during this time(work from home), but every once in a while I decide that I may be better off working for a company, therefore I go through the same process over again. Maybe I am just meant to continue on the path that I am on and not work for a company.. I don't know the answer..


-  Dan
--
Thanks,
Dan Kelly
http://www.kellywebserv.com
Professional Portfolio 
Customer Testimonials
229-848-3243



~~~~~~~~~~~~~~~~~~~~~~
Add me as a friend! - FACEBOOK
Follow me! - Twitter
Looking for a great deal on Razors?



Mike Schinkel

unread,
Nov 21, 2012, 1:42:13 AM11/21/12
to Atlanta PHP
Surprised nobody has mentioned activity on GitHub and open source as being important. See:


-Mike


On Nov 21, 2012, at 12:15 AM, Jason Shinn <jms...@gmail.com> wrote:

I haven't had the problem (though I don't actually have that much "interview experience", and have only once been given any sort of skills test), that said the solution seems straight forward enough: practice, practice, practice.  If you find yourself getting stuck on a PHP skills assessment test when you don't have access to your code library, then find some tests online and take them without accessing your code library.  If you find a point you get stuck on, study it.

It's not exactly easy to find more than basic tests online (at least, not for free).  I googled "online php skills test" and came up with a couple potential options that might get you going.

If it's more of a "code up an application or function to these specs" type of test, then pick a couple representative projects that you remember from interviews where you got stuck, and just bang it out on your own time without using any external resources.  If you get stuck, make a note of where and why, and study up on it.

It really doesn't matter what you're getting stuck on in the interview process, the test or some other area, if you find yourself getting stuck, study, practice, and just do it to death before you ever walk through the door.
To view this discussion on the web visit https://groups.google.com/d/msg/atlantaphp/-/r5OdCM3WT8gJ.
Reply all
Reply to author
Forward
0 new messages