views:

730

answers:

11

A little backround:I'm a 22 yr old with just a high school degree and a lot of free time (college did not work out). I am completely new to web programming and I have taken a couple day classes in Photoshop, Illustrator, Dreamweaver, Fireworks, and InDesign. Seeing as these are only day classes, I am by no means a pro at any of them but I am getting more familiar with the Adobe programs. My teacher who was a freelance web designer told me that along with those Adobe programs, if I could learn HTML, XHTML, CSS, Flash, and Java that I would be in good shape regarding getting a job. She also told me if I could get good at both the design and programming sides, I could really get a good job.

I was just wondering if anyone has some advice or information for basically a noob who is starting from scratch and really wants to get into this profession. I've gotten on lynda.com to try and get going on the programming stuff and I'm just trying to turn some of these skills into a job. Best case scenario is that eventually I could be doing freelance and supporting myself...But that is obviously very far away. ANy advice would be greatly appreciated....

+2  A: 

The best I could suggest is that you create a fake need, for example create a simple file read / write app, or something that can toss information onto a database and retrieve it.

A more advanced project you could start on after would be a tagboard of sorts, with Create/Update/Read/Delete (CRUD) functionality, and add features to it in order to get practice with cookies, login, more database functionality, etc. You could also try using an image editor that just draws a clock showing the current server time the request was recieved as practice with images.

Sukasa
I'm pretty sure you posted that for the wrong question.
Cory Walker
+4  A: 

Create a project that would actually be useful and non-trivial for you: A forum or message board, or a job posting site, for instance.

But here's the important part: Give yourself a firm deadline. You can do quite a lot in, say, 4 weeks, and if you keep to a schedule like

  • database backend in week 1
  • login system in week 2
  • messaging in week 3

and so on, you can broadly cover many related subjects. Your project won't be pretty, but if you start out being a perfectionist, you'll never finish it, and will end up knowing only the first half of the technology in your project really well.

As you get more experience, you can go back and polish things up or rewrite stuff you did wrong, and then you have a portfolio that accurately reflects your current skills.

Kai
+5  A: 

Learning HTML, XHTML, CSS, Flash, and Java plus several graphical programs is a pretty tall order. You'll overwhelm yourself trying to do that. Pick one and learn it then move onto the next. Grab a book or search the Stack Overflow archives for recommended online tutorials.

The best way to learn is to pick a project and just work on it. Then learn on demand as you find a need. The end product won't be the highest quality, but you'll learn how everything works together.

Steve Rowe
+2  A: 

I would recommend learning html and css first. That is the cornerstone of anything you'll do on the web. For graphics, learn photoshop. Once you can make basic html websites, I would then choose to pursue either asp.net or flash. There are good jobs in both fields. I would say pick asp.net if you like programming, and flash if you like the visual aspects of web development more. As an asp.net developer I would say 90% of my day is doing database related work with MS SQL server. Really focus on databases. Finally, if you develop with asp.net, you should program in C# rather than vb.net. I started as a vb.net programmer and had to switch to C#, simply because most of the professional world uses it, hence it will be easier getting a job.

+22  A: 

Advice You Don't Want To Hear

  1. figure out what went wrong with college - at 22, you should have graduated by now, or close to it
  2. fix it!
  3. focus!
  4. go back to college with a new focus and resolve - you now have a goal

If You Can Teach Yourself, You Can Graduate College

  • if the problem was boring general ed classes, look into CLEP tests to test out of them
  • if the problem was curriculum, take classes you are interested in first
  • if the problem was time, start part-time
  • if the problem was school choices, research different colleges - many online universities are now accredited
  • if the problem was self-discipline, then freelancing is not a good career choice

I'm not saying that you can't do what you asked about, but your chances of getting a good job are greatly increased with a degree, even a 2-year degree.

Obviously, this is not the only path, but it is arguably the easiest path. Marketing yourself when you have no degree and no experience is difficult, even if you are overflowing with talent and creativity. (It's easier now with the Internet, but by the same token the marketplace is that much more crowded.)

Good luck!

Steven A. Lowe
Good answer and nice formatting, thumbs up for using italics instead of SHOUTING!
Shraptnel
+8  A: 
  1. Don't create websites by exporting to web from your design programs. If you see yourself creating slices and mouseover effects in Fireworks STOP and hit yourself in the head with something heavy and blunt.
  2. Learn XHTML and CSS and learn them well. Try to be as semantic as possible.
  3. Pick an all inclusive framework and build yourself a web app like a blog. As much as I love ASP.NET it is not all inclusive. It is massive. It will throw you in every direction. The same can be said of Java. Try something simple like Django or Rails.
  4. Practice, practice, practice, and realize that all that you know is crap and that you need to get better.
  5. Go back to 4 and do it till you die.
adolfojp
Haha, +1 for your first point :)
alex
+8  A: 

Ok, this may not be popular - but is drawn from my own experience at being a "self taught" programmer. The bottom line for getting a job at a company as a "programmer/web developer" is about "0%" without some type of degree/certification/on-the-job experience.

You may have noticed "the problem" with that statement - without a degree or certification, how do you get "on-the-job experience"? Welcome to "the real world".

My path to becoming a developer started with "the desire" ... and getting a job doing something else (Semiconductor manufacturing if you must know). I learned programming on my own as a "hobby" and continually looked for ways to apply it to my job tasks to improve my "job performance". I eventually applied for positions that would bring me closer to "programming" to make better use of my growing skills until I had enough "job experience examples" to apply for a programmer position.

That took "8 years". Regardless of what you think about college, getting "any" degree related to computer science at one would have cut that in half. You can do it on your own, but until you have some outstanding examples of how you used your programming skills to solve "real business" problems, you won't be considered over anyone with a degree "just out of school". When you finally do make it, you will notice that the "just out of school" folks who don't know jack about solving "business problems" will probably start with a better salary than yours.

The environment is probably better now than when I started (25 years ago - :-)) but the same general principle applies - the degree may not mean you know how to program, but it will get you past the "HR" screening process so you can get the job. :-)

Good luck ...

Ron

Ron Savage
+1 sage street advice
Steven A. Lowe
Nice answer, but you people who "insist" on putting keywords in inverted commas make me laugh, it's like your entire post was sarcasm. Good "advice" though.
Shraptnel
+1 I started out in the test lab, learning as a QA person what are good programing practices vs bad
Bob The Janitor
@Bob, QA/Testing is the best place to learn what differentiates a good from a bad programmer.
Steve Rowe
@[Shraptnel]: I think they're called "double quotes" ...and I agree that they might be "overused" ;-)
Steven A. Lowe
hm ... now that I "read" it .. there "does" seem to be an "awful lot" of quotes in there ... :-)
Ron Savage
+7  A: 

I'm currently a software engineering consultant. Familiarity with the following list of things helped me get an interview and an offer right out of college.

Note: HTML, XHTML, CSS... these are just markup languages, and chances are they'll barely be glanced at if you put them on a resume. Flash (not so much) and Java are more impressive, but you might want to look into the following additional topics/technologies to really spice up that resume:

  • Get comfortable with OO (Object-Oriented) principles (inheritance, polymorphism, abstract vs concrete classes, encapsulation, etc.)
  • Java is a great open-source beginner programming language. I'm primarily a .NET developer so I tend to favor that, but I started with Java in my college days and picked up on it very quickly
  • .NET 2.0, 3.5 -- C# and VB.NET (LINQ, lambda expressions, anonymous methods, etc.) -- You can start with the Express edition of Visual Studio, but may eventually want to get the full version
  • Move on to higher level programming concepts such as Design Patterns (MVC/MVP, Command, Facade, Adapter, the list goes on and on) -- I'd recommend the Gang of Four book (Google will tell you which book it is)
  • Database Management Systems
    • Learn SQL, be comfortable JOINing, using GROUP BY and HAVING clauses, and familiarize yourself with aggregate functions
    • Tackle DB design concepts (relational modeling especially)
    • Start with the free ones, like MySQL or PostgreSQL, then...
    • Focus on Microsoft SQL Server or Oracle (these are the big cats)
    • Go deeper with things like Normal Forms, data warehousing (OLAP, MOLAP, ROLAP, cubes, etc.)
  • Testing: look into unit testing and test-driven development
  • Software quality assurance - defect prevention techniques, etc. (this goes along with some of the points mentioned below)
  • Look into methodologies like Waterfall, Agile, and XP (eXtreme programming), perhaps even PSP and TSP
  • Learn to use Source/version control systems such as CVS, SVN, and VSS (Microsofts, unfortunately not free -- the first two are)
  • You could get really crazy and learn about static code analysis, but definitely look into code reviews and code inspections

EDIT: I thought I'd give you some books to check out (no particular order):

  1. Introduction to Algorithms, 2nd ed. Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein, 2002.
  2. Artificial Intelligence: Structures and Strategies for Complex Problem Solving, 5th edition. George F. Luger, 2005.
  3. A First Book of Visual C++. Gary J. Bronson, 2000.
  4. An Introduction to Object-Oriented Programming with Java, 3rd edition (Java 1.5) update. C. Thomas Wu, 2004.
  5. Mathematical Structures for Computer Science, 5th edition. Judith L. Gersting, 2003.
  6. Mastering the Requirements Process, 2nd edition. Suzanne Robertson and James Robertson, 2006.
  7. Data Management: Databases and Organizations, 5th edition. Richard T. Watson, 2006.
  8. Software Quality Engineering: Testing, Quality Insurance, and Quantifiable Improvement, 1st edition. Jeff Tian, 2005.
  9. Artificial Intelligence: A Modern Approach, 2nd edition. Stuart Russell and Peter Norvig, 2003.
  10. Software Architecture in Practice, 2nd edition. Len Bass, Paul Clements, and Rick Kazman, 2003.
  11. Unit Testing in Java: How Tests Drive the Code, 1st edition. Johannes Link and Peter Frohlich, 2003.
  12. Practical PostgreSQL, 1st edition. John C. Worsley and Joshua D. Drake, 2002.
  13. PSP: A Self-Improvement Process for Software Engineers, 1st edition. Watts S. Humphrey, 2005.
  14. TSPi: Introduction to the Team Software Process, 1st edition. Watts S. Humphrey, 2000.

I guess that's all I have for now. If you can get these things down, your skill set should be pretty solid, and you'll be on your way towards being another member of the software engineering world. I'm not sure that anything you do on your own will give you the same level of knowledge as college courses, but I'm sure this is a good start. This is a hefty list; don't be surprised if obtaining these skills takes a couple of years.

As far as your graphic design skills, depending on the type of job you find yourself in, they may be more important than your programming skills. On top of either skill sets, make sure your soft skills are polished and that you are confident in your work.

Cory Larson
+1  A: 

You may find this thread helpful.

Steve Harrison
+1  A: 

Look into local Code camps and user groups, create a project and build it, start by lerning HTML, CSS and javascript, then look at learning PHP is a great starter language for doing beginning web development the code side.

as far as getting a job without a degree, start a little lower on the food chain, I started in the QA lab, from there you can learn from the development side good practices and the do's and don't. Also as a QA person you learn in a hurry who are good developers and who are not simply by the work they produce.

Bob The Janitor
+4  A: 

For serious web developer it is very crucial to understand how websites work inside out.

As you are starting from scratch I strongly recommend W3Schools.

With this website you can learn from Very Good Tutorials, then Try It Yourself and Test your skills.

Here are the steps for an absolute beginner:

  1. html
  2. css
  3. JavaScript (Client Side Scripting)
  4. PHP (Server Side Scripting)
  5. SQL (DataBase applications)
  6. DOM(Document Object Model)
  7. AJAX
  8. Drupal/Joomla/Plone (Content Management Systems)

NOTE: Type the code rather than cut-paste or using tools like Dreamweaver/FrontPage.Use the tools only after you are very comfortable with manual coding.(Believe me this helps a lot)

Enjoy!!!

TheMachineCharmer
I'd put the DOM as the third step - it's a pretty big part of JavaScript. Also, I'd put AJAX straight after JavaScript (after all, it stands for "Asynchronous JavaScript and XML").
Steve Harrison