Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 7 years ago.
Improve this question
I'm a basic web developer. I know PHP, a little bit of Python and Ruby. JavaScript as well [some stuff]. I'm not a hardcore developer. I know what it takes do develop most of web cases.
Now, I have this desire to go deeper and start developing games. I know it sounds a huge leap, but that is why I'm asking here. I already have some games ideas. It would be simple 2d plataform games, and I would like to know what is the best way to start.
I don't want to start with Flash. I'm looking for working with other stuff. I already started to look around for the Unity 3D framework and UDK, but I just don't know how to get started.
So, any hints, tips or sugestions to make?
Python's Pygame is certainly a good choice as others have said. If you want to get in to deep video game programming though.. move on to something like C++ or another lower level language.. from experience, most higher level languages tend to put artificial hurdles up in regards to decent video games. Though for a simple 2d game you cant go wrong with python.
another decent environment to use is Ogre3d, but you would need C++ or the PyOgre bindings (which are not up to date, but I hear they do work okay).
Going from web to game design really is a decent step, as long as you have a good sense of design. the physics and game logic can be learned, but ive yet to see anyone who could properly learn how to write a decent GUI.. as is seen in most cases these days, the final GUI lay out tends to be a process of elimination or beta with trial and error.
Only suggestion i have left is keep your game logic as far away as possible from your graphics. Be Modular.
-edit-
oh and a note.. stay away from Tkinter in python for anything more than a simple tool.. I have found it most frustrating to use. there is wxPython, GTK, pygame, and PyQT.. and all of them (in my opinion) are far better graphic frameworks.
You should figure out why you want to learn. If you're interested in making money, developing small standalone games is probably not a good idea. If you're just interested in learning fundamentals, there are plenty of good libraries out there.
Some examples:
PyGame - http://www.pygame.org/news.html
SDK - http://www.libsdl.org/
Allegro - http://alleg.sourceforge.net/
Reference
http://code.reddit.com/wiki/help/faqs/programming#WhatprogramminglanguageshouldIuseformynewgame
A good starting point might be trying a turn-based game or two, if PHP is currently your main strength. Those work well over HTTP, bouncing requests and responses back & forth, while an action platformer is a very different beast - you might make an HTTP request to log high score or level-clear info, but actual gameplay would have to be run client-side to maintain any sense of action - either Javascript & canvas or Flash, if it's web-based.
There are some (mostly dead but) open source turn-based PHP games worth a look, to get a feel for some general concepts - the wittily-named phpMud and phpMMORPG come to mind, and a few board & card games.
It's just a baby step towards what you want to do and might not sound as fun, but game programming of any kind involves a lot of learning and hard work. Designing maps & system mechanics, animation & visual effects, physics, hitboxes, tons of math everywhere, and the hardest part, getting it all to actually run smoothly - it's a struggle to get something working, and an all-out war to get it "right."
That said, if you just want to get up to your elbows in a platformer to see what it's like and your Javascript is fairly solid, this set of articles is a great starting point. Brent Silby made a few neat shmups & platformers that pre-date canvas too, also worth a look.
Looking at your tags, web games are mostly client side, and since you aren't going to use flash, i would say JavaScript would work for 2D. With all the libraries and plug-ins out there, JavaScript can actually handle it.
Taking a look at OpenGL may not be a terrible idea. You can use the library in many languages, and is supported with in HTML5 (WebGL). There are several excellent tutorials out there.
If you want to learn more Python while doing so, you may want to take PyGame or an equivalent program. PHP, Ruby and JavaScript aren't going to help you in the video game section, though. They're all related to the internet.
If you want to start of real easy, try out Genesis3D. you can make awesome 3D FPS games, and its quite easy to get the hang of too. Took me only 5 days :D
Unity made me sick to my stomach, and so did Blender3D's game engine, so I personally say not to use those. It intimidated me.
Related
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 7 years ago.
Improve this question
Should I first master HTML/CSS/PHP? Is there something else I should learn right away? Also, should I go to college or be self-taught?
This is primarily opinion based... But just to give my two cents.
HTML/CSS is the best place to start when striving to be a front end developer. Doing HTML/CSS will give you the basic idea of how code works, directory structure, dealing with errors or inaccuracies with grammar and compatibility.
It never, ever hurts to start young. From experience of being in a tech field, people who start young, tend to get jobs more easily. Not only will it help you with getting a job later, but advancing in that field now will help you with going to a University or college for those classes. Typically learning how to code in school with no prior experience, can be slow, frustrating or confusing. Learning how to code now can help you avoid those frustrations with stricter deadlines, and make projects a ton easier and susceptible to be better a problem solver, not to even mention better grades.
A personal recommendation in a order of learning would be:
Google
HTML
CSS
JavaScript
PHP
As commentated above, Google is your best friend. Learn how to Google efficiently. Once you get the basic of how HTML works, CSS code, how to write basic JavaScript and PHP such as loops, conditionals, error handling, etc. You can start to learn backend technology such as working with databases, OS, bootstrap, ASP, .NET, creating Content Management Systems, etc.
There is a ton of resources you can use online to learn.
thenewboston
codeacademy
stackoverflow
Google
I'd recommend starting with something like this:
https://www.codecademy.com/tracks/web
It'll teach you the fundamentals of basic styling (HTML/CSS), the interactive nature of tutorials on Codecademy makes them more enjoyable & engaging than others.
(I'm not affiliated with Codecademy in any way, I just quite like their tutorials).
First and foremost you should complete all the basic web technologies from w3schools.com. Once done choose an IDE like webstorm and create a sample website using the HTML CSS JavaScript.
To become front end developer you should become proficient in following technologies:
1.HTML 5
2. CSS 3
3. JavaScript.
4. Jquery
5. Angular JS
6. AJAX
7. Browser compatibility like using bootstrap.
8. Operating system.
9. Node.js
10. Any backend technology.
I assume you mean a front end web developer.
As such, as many have stated, the web's front end is made up of:
html
css
javascript
That's it. So learn that to start with.
And that point you need to start thinking about what to focus on. Would you prefer to spend more time working with UX and UI teams and becoming more of an interaction designer on the front end, or would you prefer to spend more time working with the back end team and making sure UI and the back end are properly integrated.
If the former, you may want to focus on learning design concepts. Read up on user experience design and interface design. Pick up a couple of graphic design courses.
If the latter, that may lead you more down the path of a computer science degree.
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 7 years ago.
Improve this question
Been doing a lot of Php & MySQL programming over the past 3 or 4 years. I really enjoy it, and all its related back-end technology.
I'm mostly doing freelance work here and there, but I am not a design guy, and really don't enjoy tinkering with CSS trying to make it work :)
My question is, is it ok to just be good at the server-side end of things, and outsource / team up with a good CSS person? How about in the context of things like Wordpress, Drupal, Cake, etc? Do people expect they're you to setup all their Wordpress functionality, and implement their Photoshop files into designs as well?
I really speaking from a freelance point of view, and not so much working in a major company with tons of programmers / designers.
The very best designers aren't usually the very best developers, or vice-versa. It seems like you would benefit from finding a good partner who excels in design to complement your focus on back-end programming. No need to hide that from those who hire you.
However, even if you're not great with making things look pretty, you should probably be familiar with the code the designers use to make things look pretty. It comes in handy, and you'll at least be able to construct basic designs for prototyping, and eventually reasonably clean, solid designs for final products. And, if a basic change in an existing layout is needed, you won't be afraid to make it yourself. It's a skill set worth building.
The key for me has been finding a frontend or backend person who has a general enough understanding of the other side works so that you can coordinate enough for him to say
"Ok if we want this element to look like this I need your php function to generate a with a unique id etc. My most successful projects have been with developers who specialize in a certain thing but still maintain general knowledge of all the different aspects that go into a project.
From my experience, doing "freelance website work" means you end up doing all of the work on your own, but don't get me wrong, building a website these days is extremely easy in most cases and I would suggest you learn CSS if that is what you want to continue doing. Web applications are a different story.
From a freelance perspective, it depends on how much you're willing to to spend outsourcing to your css/design person. A client is only going to be willing to spend X on the project, it doesn't matter to them how it gets done (or shouldn't). So as long as you don't mind slicing off a percentage of X to pay the designer, that should be fine. Especially if it's not going to be a client you maintain sites for.
Having said that, though, if it's a customer you're going to have to maintain and make changes over time, you're going to really want a background in the design aspect. At least enough to make minimal changes. A complete redesign will probably require outsourcing again.
This is approximately the model I've set up. I'm absolutely horrible with photoshop/graphic creation, but the html + css aspect is not hard.
I had an internship that I mainly did back-end work and the little front-end work was the minutae of moving elements pixel by pixel. That gave me a strong distaste for front-end work. But I am in a similar situation as I've primarily been a back-end person and am now transitioning to more front-end work.
My advice would be to get comfortable enough with CSS and the blog/cms frameworks so that you can tweak them and make small modifications. If a client comes to you and starts saying how they want the front-end to look and you have a blank look on your face or are unable to give a reasonable estimation of how much time it will take to implement the updates (or if it's even possible) that will be a big dissuading factor in their eyes.
Don't be afraid of getting deeper into front-end design as well, it improves your marketability not having to rely on others for a portion of the project.
From my personal experience, heightening you experience in the basics of front-end develop will benefit you for more than one reason. Sometimes the best way to deliver a usable front-end requires specialty programming on the back-end. If you can except what will be happening on the front-end, or even developing the barebones of it yourself, that will help greatly.
You might be asking yourself, "Okay, that doesn't really answer my question?" but in fact it does. It's Web 2.0+ out there... clients expect beautiful, dynamic, and easy-to-use websites. This often requires the use of JavaScript and how it interacts with your server scripts and the CSS, layout, and design of the page.
So, in short, if you're wanting to do freelance stuff, in my opinion, it would be worth your while to expand your horizons. I honestly think the gap between "Web Developer" and "Web Designer" has been slowly closes over the years.
Personally, I work for the computer support department of a state University and all the websites we do are both written and designed by myself without any "outsourcing" of my work. I can do what I need, I can make changes on the fly without waiting for another person to do, and I can test immediately. All three are huge advantages in our environment.
One aspect I wanted to direct your attention to is the choice of your development framework. If your framework supports MVC (model-view-controller) separation, then it's very natural for a developer to work on the M and the C, while the designer (CSS/HTML professional) works on the V component. This creates a great workflow and a good separation of responsibilities - and you can work on two separate files at the same time! They're on HTML peppered with some tags, you're on the logic.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 7 years ago.
Improve this question
I tried doing tutorials but it is unorganized and unstructured, where can I learn PHP from beginner to master? I'm looking for a site like www.w3chools.com, but somehow I feel it is incomplete, specially when it comes to more advanced functions.
I know some basics but I wouldn't be able to for example make a secure online webstore, and I seem to be stuck at this point, how / where should I proceed?
I started 7 years ago. In my personal experience, your road to programming will look something like this:
HTML -> CSS -> Javascript -> PHP/MySQL
[Insert other web script language
here] -> "Desktop Languages"
For HTML (and CSS), I started by using a graphical editor at (then freewebs.com) webs.com that allowed me to add code snippets. I used some random GeoCities site (may it rest in peace) to look up things. Now, use Google or Bing.
Then, I got Jeffrey Zeldman's book, Designing with Web Standards. I followed through the book, typing out the code in notepad. Try to understand what the code does.
Do yourself a favor, use Notepad++ or Programmer's Notepad. They support automatic tabbing for neater code. It will make you a better and more sane coder in the long run.
Another thing I used to do was look at people's code by right clicking in my browser and hitting "view source".
This only gets you the HTLM/CSS after the PHP has been run and the Javascript before it was run. Google Chrome is good for analyzing scripts because of the debugging capabilities. (Don't worry about that yet though.)
Javascript was an adventure back then. Now, we have jQuery. Start with that or a similar framework. This can be researched online. I have never bought a Javascript book. I do have an ancient one from Visual Quickstart that I used to learn what a method looks like. Beyond that, the particular book in question is
an outdated rag.
To learn PHP/MySQL you can get a book. The two languages are often put together so finding books that show you how to use them in tandem should be a snap. I used O'reilly books for PHP.
I don't like the online PHP reference so much, because when I'm testing I don't always have internet. I use a virtual server setup on my machine. Look into that when you are ready to start learning PHP and MySQL.
The last thing to remember is that web standards are always changing, but don't get too crazy about it. when I started, XHTML was all the rage and now everyone is talking about HTML5. I still use XHTML as do many others. It goes to show that things move at different paces for everyone.
Good luck, I hope I helped!
EDIT: Geoff Adams pretty much sums up my post - Play around the invest in books. And, it will take time. I'm till nowhere near perfect.
Getting to 'mastery' is going to take a lot of effort, time and work. You can't become an expert by simply reading tutorials - the best way is to learn by doing. Get to grips with the basics, then play around. Once you're more comfortable, invest in some books.
If you're looking to build a complex system then you might be better using an off-the-shelf alternative. Try Googling around for various e-commerce systems (Magento is in vogue at the moment) and Content Management Systems (CMSes) before you decide to reinvent the wheel.
Read this book
also keep going through those tutorials (XHTML, CSS, Javascript) and try out everything you learn as you learn it.
I love the apress books so perhaps Beginning PHP and MySQL: From Novice to Professional, Third Edition might be for you? Do you have a development background?
You may want to look at picking up a book at your local book store or look at grabbing one off Amazon.com. I haven't found really good PHP web resource to learn from. Usually I just do a quick google search on topics I'm trying to code.
Another option is to just dive in and start building applications. I've found that the best way to learn PHP is to learn as you go. Once you have a grasp on the basic syntax and how to move around the code, then you can pick up a book at look at OOP topics as well look into Frameworks such as Zend, CakePHP, etc.
Are you absolutely set on learning PHP? If you are, then buy a good book - there's several mentioned here that are actually ok - but please, learn the security aspects from the start. There's more than enough PHP developers in the world who are writing insecure code (I used to be one of them, so I'd know).
Practice is key though; I've been programming in PHP now for about 6 years, and I'd consider myself fairly competent (I passed my Zend PHP5 Certification a couple of months back), but I still find functions I've never seen before.
A tip - don't even think of looking at Zend Framework, Magento or anything like that until you're comfortable with the basics. If you do, you'll definitely struggle; they use some advanced concepts which even I find it hard to wrap my head around at times.
Alternatively, you could learn something else...
The book recommendations are great. "Mastery", though, comes only from practicing your craft. If you want to learn PHP, you need to build many sites, with PHP (and HTML, CSS, Javascript, MySQL, etc.).
To have confidence that you can build a secure online web store, well, you need to build one. Maybe you can find a company that will pay you to learn. Maybe you will find a colleague to mentor you through it. Or maybe you'll have to dig into books, multiple web sites, and some poorly written "integration guide" from a payment authorization provider. My first time through I was nervous. The second time it went a little quicker. And the third time I felt confident enough to estimate how long it would take.
I'm not trying to be difficult or flip. I just feel that "learn by doing" may be the only way to learn much of this stuff.
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 7 years ago.
Improve this question
I myself am one of these types of coders, who never learned coding in a formal setting, but am instead, self-taught by the use of copy and paste scripts, and pre-authored works available through GPL projects and premium software's(which is often the way commerical script companies show you how to change, or update code in their script ie. "Copy & paste this on line 234, etc..")... this are my beginnings.
I don't understand how what I do works, but I am getting good at what I do with code, though I feel because of my informal learning methods, that I lack in knowledge, some of the really simple, but necessary principles of web coding in general(the ins and outs of servers, browsers, etc). I feel as though I have started from the inside of understanding code, the practical side.. and lack the basic fundamentals, and theorized understanding of what I am doing.
I also know quite a few others who are the same, who started learning in the same communities as I, and are pretty much at the same point as me... Feeling as though something big is missing from the picture.
I see the lacking in my discipline when I attempt to use PHP authoring tools, which I find very challenging to understand... and this is becoming a downfall on the time frames in which I complete my projects(having to hand code everything). I also find it difficult to ask for help at times, for lack of the specific language that comes with programming, and being able to use the right words to explain the intricacy of my problem.
I was a hairdresser by trade, I worked as a bartender, and hotel manager, I'm a business consultant by profession. I've been learning web development slowly now for 3 years, and I have taken on quite a few commercial projects over the past 2 years, but I'm obviously feeling some lacking in my skills & overall knowledge.
Basically, Id like to ask any experienced coders who've had similar beginnings to give me an idea on how I can adapt my coding disciplines to be more effective and productive. What would someone with such an informal understanding of programming want to seek to learn, and understand. What are the things I must know as a programmer... and what is a basic overview of the whole picture???? Feel free to direct me to articles
Any help is always appreciated.
Lea
Edit: Just to give a round up of my actual capabilities. I am a programmer, I do author my own code from scratch.. and sell my work. I can write PHP functions, and classes, use mysql, have a good working understanding of html & css, and am very good in the design aspects(web graphics), and am learning javascript/ajax/jquery, as I am using jquery in most of my projects. Thanks for all of the answers so far!
Realise that "copy and paste programming" is not actually programming, despite the name. The act of "programming" is figuring out how something should work, and what code is needed to make that work. Therefore, when you copy and paste some code, it is someone else who did the programming. This isn't a bad thing necessarily, as you shouldn't always need to write code yourself. But to call yourself a programmer, you do need to have written the code yourself.
You will want to start humble. Don't try to write a large complex application as your first step into programming. There is a good reason why most people who are taught programming are first taught how to print "Hello, world". This is because there is a lot more that you will need to know than just what code to use - you need to know where code execution starts and how it flows, and that sort of thing. You need to be able to look at the code and step through it mentally, knowing where program execution will go next, so you understand how it will work.
Take a tutorial or course in programming. There is so much free stuff online. Do not trust any tutorial that just gives you large chunks of code, make sure it forces you to actually come up with some code yourself. Do exercises such as sorting strings, calculating fibonacci sequences, and the like, and "echo" or "print" the results. Learn about conditional statements (like "if") and the "for" loop and play with these to do various things.
GUI or forms programming is more complicated; make sure you know the fundamentals of the language before you go looking through any API or framework documentation to see what the language can do. You'll need to know how execution flows, how to write functions, what types of variables you can use etc before you can effectively use an API or framework anyway. It is boring not being able to do cool graphics or forms and sticking to basic text or number processing, but you have to walk before running. Make sure you are doing, not just reading. When you learn about something new like the Array type, the "while" statement, try it out. By actually doing it, you'll "get it" a lot faster than just reading a book or website and you may be more likely to remember it.
Read books about programming. Some people say you should learn C before you learn anything else. I don't necessarily agree, but if you do learn C then the book to read is "The C Programming Language" by Kernighan and Ritchie. Many programming books are very interesting but either not suitable for beginners, or aren't going to teach you how to actually begin programming. This one is an exception.
Use a decent text editor with syntax highlighting and line numbering. That's all you should need. A big IDE that also does code completion and the like is not necessarily helpful at the learning stage. Don't spend too long choosing one or setting it up. If you don't already have one, just get Notepad++ (if you're on Windows) and be done with it. If you don't like it you can change it once you get more proficient. Or if you've already paid for Microsoft Visual Studio then use that, but don't go out and get it just for the sake of learning a language. Avoid falling into the trap of spending all your time sharpening your tools and no time using them.
The easiest and fastest way to do this? Find a mentor, or a set of mentors. Not necessarily a real-life mentor, they can be offline, although a real-life mentor is more practical.
You can find these people when you participate in local software development communities, e.g., forums, or user group meetings. Frequent these places, both offline and online; the amount of knowledge that you will learn is immense, not to mention the benefit of being able to bounce ideas off of other people.
Code Complete and Pragmatic Programmer are likewise excellent book suggestions above. I suggest you go with Code Complete first, as it tackles on how to make your code sensible and elegant, which you certainly can use immediately.
Goodluck!
We all learn differently, so don't feel handicapped because of the way you've entered the field.
I guess the simplest, easiest thing I can suggest would be to get yourself a PHP book (seeing as that's what you're familiar with right now) and start from there to build up confidence.
In your spare time, just create some very small basic apps to practice without any pressure. Then take on a language like Python, Java or .NET.. depending on what takes your fancy. With a language or two under your belt, then you can take on books like Code Complete, which will cover some of the more esoteric areas of software development.
Good luck, this is a profession where you really never stop learning.
in case you're interested to becoming a better programmer, i must recommend that you read the pragmatic programmer, don't worry, it's not a full text of codes which will make you pull your hair out but useful lessons which can only be distilled from years of programming experience written in an easy to read but still very informative kind of way :)
I'm not at all convinced that the premise of the "Copy & Paste Generation" is any kind of new phenomenon. Only the tools are available to a wider audience now than before.
If you want to really hone your skills, it might be worthwhile to take some classes, either at a local community college or in a self-directed learning environment through the use of some of the many, fine online resources or books
I believe Code Complete is another book along the same lines of the Pragmatic Programmer that has already been recommended.
I have been your situation before, senior year of high school in an internship I "learned" c and shell programming mostly via copy and paste, and later on at various times when I may have been in a similar situation with specific technologies.
My recommendations:
Take a class at your CC. The one you want is the one that is the prerequisite for the advanced programming classes. They probably also offer a "I've never touched a computer before" level class but this one won't be the formal prereq for the follow on classes. This will probably be in Java.
Work your way through one of the better programming books that includes exercises. Kernighan and Ritchie's C Programming Language is a classic. This would be my recommendation because C is similar enough to PHP to be familiar, but different enough that you will be able to keep them separate. I say this even though you will probably never write a single line of production C. Paul Graham's ANSI Common Lisp is also a suitable choice.
If you are really hard core and have the dedication, you can try Structure and Interpretation of Computer Programs, by Abelson and Sussman. This is the book used in the first programming course at UC Berkeley ( http://webcast.berkeley.edu/course_details.php?seriesid=1906978389 ) and at MIT ( http://ocw.mit.edu/OcwWeb/Electrical-Engineering-and-Computer-Science/6-001Spring-2005/CourseHome/ ). This may be too difficult to attempt outside a school environment. It's designed for bright young students with nothing to do but study and with the regular opportunity to get tutoring from grad students. I include it only for completeness.
I would avoid any web programming books. You already know web programming. I get the impression that you are feeling like you are hitting a bit of a wall, and looking at a way around or over that wall, rather than trying to go directly through it.
I would advise against looking into any web oriented book because it will not give you the big picture, it will describe technique only as they apply to web programming. The important things to understand are how a computer actually operates, the difference between the stack and the heap, pointers, the basics of garbage collection, recursion, and it'd probably be helpful to understand at least extension mechanism. I mean, if you understand shared libraries on Unix, or DLLs on Windows, or classpath and jars on Java, or how to create a library in PHP, Ruby, Perl or Python, any one of those will be fine. It's just the concept of loading outside code that's important.
Take a look at The Structure and Interpretation of Computer Programs and see if you think it would help.
Copy and paste programming refers to using the same code several places instead of putting it in a function or class. If all you do is modify existing source code while following a howto guide, what you do is not called programming, just copy and paste.
What you need to do is read a book on programming, whatever you feel your level is. If you feel its copy and paste level, you should start with a beginners book. Forget everything you think you know, read and follow the book. When you've finished you can remember some of the clever code(?) you noticed during your C&P days.
Mastering any skill takes time, but if you keep at it you'll become better. There is nothing inherently different about programming in that sense. Exactly how you learn best, is a highly individual matter, so it's really hard to give any meaningful advice on that. In my experience, combining different types of learning (practical experience, being around other programmers, reading books, formal education etc. etc.) in even-sized doses works better than just pursuing one type of learning (Such as formal education).
You might find these readings interesting, if you don't know them already:
http://www.norvig.com/21-days.html
http://softwarecraftsmanship.oreilly.com/wiki
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 5 years ago.
Improve this question
When asked to create system XYZ and you ask to do it in Python over PHP or Ruby, what are the main features you can mention when they require you to explain it?
This is one of those cases that really boil down to personal preference or situational details. If you're more comfortable and experienced with Python, then say so. Are they asking you to justify it because they're more comfortable with one of the other environments? After you're done, will the system be passed off to someone else for long-term maintenance?
If they ask you to use a technology or language that you're not as familiar with, then make sure they know up-front that it's going to take you longer.
The best sell of Python I've ever seen was by a manager in our group who had a young daughter. He used a quote attributed to Einstein:
If you can't explain something to a six-year-old, you really don't understand it yourself.
The next few slides of his presentation demonstrated how he was able to teach his young daughter some basic Python in less than 30 minutes, with examples of the code she wrote and an explanation of what it did.
He ended the presentation with a picture of his daughter and her quote "Programming is fun!"
I would focus on Python's user friendliness and wealth of libraries and frameworks. There are also a lot of little libraries that you might not get in other languages, and would have to write yourself (i.e. How a C++ developer writes Python).
Good luck!
It's one of the preferred languages over at Google - It's several years ahead of Ruby in terms of "maturity" (what ever that really means - but managers like that). Since it's prefered by Google you can also run it on the Google App Engine.
Mircosoft is also embracing Python, and will have a v2.0 of IronPython coming out shortly. They are working on a Ruby implementation as well, but the Python version is way ahead, and is actually "ready for primetime". That give you the possibility for easy integration with .NET code, as well as being able to write client side RIAs in Python when Silverlight 2 ships.
Focus on the shorter time needed for development/prototype and possibly easier maintenance (none of this may apply against Ruby).
I would consider that using python on a new project is completely dependent on what problem you are trying to solve with python. If you want someone to agree with you that you should use python, then show them how python's features apply specifically to that problem.
In the case of web development with python, talk about WSGI and other web libraries and frameworks you could use that would make your life easier. One note for python is that most of the frameworks for python web development can be plugged right into any current project. With ruby on rails, you're practically working in a DSL that anyone who uses your project will have to learn. If they know python, then they can figure out what you are doing with django, etc in a day.
I'm only talking about web development because it appears that's what you are going to be working on seeing ruby, python and PHP in the same list. The real message that's important is applying to whatever it is you like about python directly to some problem you are trying to solve.
Give them a snippet of code in each (no more than a page) that performs some cool function that they will like. (e.g show outliers in a data set).
Show them each page. One in PHP, Ruby and Python.
Ask them which they find easiest to understand/read.
Tell them thats why you want to use Python. It's easier to read if you've not written it, more manageable, less buggy and quicker to build features because it is the most elegant (pythonic)
I agree with mreggen. Tell them by working in Python you can get things done faster. Getting things done faster possibly means money saved by the client. In the least it means that you are working with a language you a more comfortable in, meaning faster development, debugging, and refactoring time. There will be less time spent looking up documentation on what function to use to find the length of a string, etc.
Though All 3 languages are versatile and used worldwide by programmers, Python still have some advantages over the other two. Like From my personal experience :-
Non-programmers love it (most of 'em choose Python as their first computer language,check this infographic php vs python vs ruby here)
Multiple frameworks (You can automate your system tasks, can develop apps for web and windows/mac/android OSes)
Making OpenCV apps easily than MATLAB
Testing done easy (you can work on Selenium for all kind of web testing)
OOPS concepts are followed by most languages now , so how come Python can stay behind! Inheritance, Abstraction and Encapsulation are followed by Python as well.
Python as of now is divided into two versions popularly that are not much different in terms of performance but features. Python2.x and Python 3.x both have same syntax ,except for some statements like :-
print "..." in Python2.x and print() in Python3.x
raw_input() in Python2.x and input() in Python3.x (for getting user input)
In the end, client only cares about money and Python helps you save a lot as compared to PHP and Ruby , because instead of hiring experienced programmers , you can make a newbie learn and use Python expertly.