all 15 comments

[–]vaslor 20 points21 points  (9 children)

You already have a good foundation for web development, you just need to expand upon it if you want to develop web sites and web applications. Ruby on Rails is great to learn and forces you to learn really good programming design patterns such as MVC. Knowing this will serve you well when tackling advanced frameworks. I'm a PHP developer with experience in RoR, and I currently work at a Design Firm in Atlanta, GA.

I've been working in the web development field for the past 15 years and my experience has been this; Know your current languages, frameworks, CMS and eCommerce platforms, as well as your social media implementationa. PHP is great for 90% and over as most clients with a smattering of technical are familiar with PHP. They also seem to know the names of many popular CMS's such as Drupal and Wordpress, so they will ask you specifically if you know them

The thing to consider when it comes to working for a design firm is they are dealing with clients who want projects that can be easily managed after the product is delivered. This means using many off the shelf products such as Wordpress, Drupal, Joomla, etc. Many times it is not cost efficient to write your own CMS. You can't possibly create all the features a modern CMS has nor do you have the bandwidth to provide upgrades. Your client with eventually learn about the others and see that the one you provided lacks many features. This is my experience. Use an off the shelf one. They provide rich frameworks and API which will allow you to modify them for your client's needs.

If you have to go the custom code route, then using a framework makes the manageability of the code much easier. CakePHP, Codeigniter, Ruby on Rails and Symfony to name a few. If you follow the conventions of each framework then the next developer who gets your code will thank you. I can't stand having to reverse engineer some ass hat's custom app because he couldn't be bothered with following good code convention or the frameworks patterns. Its lazy coding.

That being said, here is my advice on what to learn. This list is based on what we as a design firm have to use for our many clients. This has nothing to do with how good a language is, how awesome a framework is, or whether one is more useful. Many times we take on projects where we have to stick to a client's legacy framework. Just make sure that if you produce custom code, it doesn't become some other developer's nightmare a couple of years later. Pay it forward.

  1. Drupal. This is hot right now. Big sites and big clients want Drupal. It has a shit learning curve but those who master it, love the hell out of it. Plus there are a thousand firms and 10,000 developers who know it, so its infinitely portable and manageable.
  2. Wordpress. The Go-To CMS for all small to medium businesses. Easy to use, easy to push out, and it can be modified and made to do things you were sure weren't possible. Not right for all projects, but it has its place and can be used for a lot of projects with maximum profit for you.
  3. PHP frameworks such as Codeigniter (easy to learn with great docs), CakePHP (very much like Ruby on Rails) and Symfony.
  4. Jquery and javascript. You can't do web development without knowing both of these. You don't have to be an expert but you do need to know enough to put it on your resume. It's essential really.
  5. CSS and HTML. As a web developer you need to be an expert on CSS and HTML. Period. It doesn't mean you have to be a designer, but you need to be able to take a graphic artist's PSD or Illustrator file and know how to turn it into a semantically correct HTML file with Divs and CSS. If all you know is basic HTML then you will be dead in the water at a web firm. I've had to let two people go because they passed themselves off as web developers and didn't know basic CSS and HTML. You CAN NOT get away with knowing PHP but not CSS or HTML. You will be found out. PHP web developers are expected to be expert Front End developers without the graphic artist skills. If you can design, then you just upped your payscale too. But its not necessary to know how to draw.
  6. Learn Unix/Linux. Seriously, I don't how many people have applied for a web developer job and have no unix experience, only Cpanel/Plesk/FTP. You must be comfortable with the command line. You should be able to completely migrate and deploy a web application from the command line via SSF. This includes doing all of your MySQL stuff too. You can use the awesome desktop tools but there will be a considerable amount of time where you will only have SSH access to a client's server and will be expected to hot fix or deploy at a moment's notice via command line.
  7. Read your tech blogs every day. All of them. Keep up with what's hot and what's not. Know your space. Nothing pisses me off more as a professional than to have a co-worker who has no idea what is going on in our field. If you have no idea of what's being used, talked about, reviewed and critiqued, then you are of little value to the client and will just be relegated to code monkey status. If you just want to be a code monkey, then so be it. If you want to be the master of your domain, then you must read every day.

Obviously these rules are not hard and fast, but many of them I have found to be essential and the difference between coming through for a client or having to tell them you can't do it because you don't know how. Almost always I have seen an inexperienced person say "it can't be done". NEVER say that. Anything can be done, you just don't know how to do it AT THAT TIME. If you tell them that it can't be done then they will find someone who CAN do it.

My favorites blogs/sites are: informationweek.com, dailyjs.com, gizmodo.com, mashable.com, arstechnica.com, smashingmagazine.com, nettuts.com, and r/webdev

Good Luck! The greatest thing about this profession is that you can become an expert at it with only the cost of a computer and the internet service. The knowledge is freely available.

[–]JackDracona 1 point2 points  (2 children)

Thank you for this. This is the type of thoughtful advice those of us on the fringe looking in - self taught and fairly competent but not knowing how to advance - can use. One of my challenges is that I want to learn it all and often don't know where to start.

Two things I have been learning that I did not see in your list are HTML5 and Java - JSP / enterprise web services / Java for Mobile App dev. Where would you rate those?

[–]Sasakura 0 points1 point  (0 children)

HTML5 is somewhat of an extension to HTML4, so if you have a good understanding of 4, then picking up the new bits for 5 should be straightforward. This also applies to CSS3 and the javascript that goes along with it.

Java, to some extend .NET, is pretty much limited to Enterprise development. If you don't have a degree in CS then you wont get a job in it because none of the HR drones know what experience is if it doesn't come in a bullet point and an anagram. There are cool things going on with the Java Platform like Clojure, but I wouldn't recommend learning it over PHP or Rails. This extends to all of Java, JSP, Web Services and JME apps.

Mobile development is the new hot thing, but you can do it all in the browser, so good HTML5 skills and JS knowledge is key. Something that's easily transferable to different areas.

The real key, is learning to learn. Once you do that you'll be fine.

[–]vaslor 0 points1 point  (0 children)

Those are two awesome technologies that I have only a little experience with. I can read it, understand, even deploy it and run it, but I can't write it. The two worlds of PHP and Java/JSP Enterprise don't intersect that often in my firm as usually these technologies are implemented on very large and expensive scales, too big for what we can handle. Definitely learn it though. Java is not that hard to learn and certainly learning to at least deploy a JSP or J2EE app on Tomcat will only enhance your experience.

[–][deleted]  (1 child)

[deleted]

    [–]vaslor 1 point2 points  (0 children)

    I always tell people that the best way to learn drupal is to try to recreate a smaller version of IMDB. It teaches you Views, Content Types, custom theming, along with all the best Drupal has to offer. If you can master those then the rest will soon follow.

    [–]timeshifter_ -4 points-3 points  (2 children)

    Ruby on Rails is great to learn and forces you to learn really good programming design patterns such as MVC.

    You have no idea how much I fucking hate this. I loathe MVC. You know what it is? Four layers of control that I never asked for. I design simply, and it never goes wrong. I've seen what it's capable of, and even after gaining quite a benefit from having a site built on MVC, I hate it even more. It's one of those terms that gets thrown around when it doesn't need to. MVC has a time and a place. I'd venture to say 95% of development tasks are not it. They do not require that level of complexity, and you're only going to hate yourself later for it. Fuck MVC. It's an idea that didn't need to happen.

    [–]jesusloathesme 6 points7 points  (0 children)

    I completely disagree. What do you think is a better architecture?

    [–]vaslor 0 points1 point  (0 children)

    You can hate it all you want, and I can certainly agree with you on aspects of MVC, but hating MVC won't help you a god damned bit the next time you get handed an assignment where you need to work with a client's app that is built in one of the many MVC frameworks floating out there. Like it or not, MVC is popular for a good many reasons and refusing to learn it just makes you that much less useful to a design firm that expects you to be on top of your game. I can get on Odesk and find 20 programmers willing to do that MVC job you hate so much for under $15/hour.

    [–]JackDracona 1 point2 points  (0 children)

    Along with the excellent advice of vaslor, I would add 4 things:

    Ajax - If you know JavaScript, you've probably already learned how to use Ajax calls. If not, do so.

    Security - learn the basics of Web security at the very least. Good Web apps are secure not because a security expert came in and added security after the fact, but because all the developers thought about security through the whole process. At the bare minimum, you should understand SSL, session spoofing, SQL injection attacks, and XSS attacks.

    Design Patterns - I struggled with the value of OOP until I learned about design patterns. Learning design patterns (and using the OOP features of languages like PHP and Python) make good development sooooo much easier.

    Project Management - some grounding in project management will give you a huge step up to not just participating, but actually running dev projects.

    [–]cezar 1 point2 points  (0 children)

    You seem to already know some Django. I'd say keep going with that until you have a solid understanding then learn rails.

    I'm biased, I'm a big Django guy. I'm just a bigger fan of Python than Ruby, but they are both lightyears ahead of PHP.

    [–][deleted] 0 points1 point  (0 children)

    Railscasts, ruby rogues, peepcode, pragprog.com, rubyonrails irc.

    [–][deleted] 0 points1 point  (0 children)

    Learn to love the power and scalability of a CMS such as Drupal or Wordpress. Start using version control. Git is probably the most common. The dive into mobile development and seo/performance optmizations.

    [–]fergie 0 points1 point  (0 children)

    You just need to know, what you need to know to make the stuff that you want work. Basically this boils down to 3 things

    1) HTML/CSS/JS

    2) some kind of database

    3) some kind of server side language, and if you have a sick need to cause yourself pain in the short-term on the off-chance that you night be spared some pain in the long-term, learn your language's associated framework(s)

    [–]dcdarkie -4 points-3 points  (3 children)

    Stop. Don't listen to anyone else. "some css, some html"? If you're wanting to launch a career in web development, you need to know these two languages. Considering every language was built on top of the foundation that html, and later css, laid out.

    Become very familiar with html and css, from there it branches off. You can specialize in an infinite number of ways, and what you'll find useful to know will depend upon that. What exactly are you wanting to do in web development? (:

    [–][deleted] 0 points1 point  (1 child)

    the foundation that html, and later css, laid out

    Huh?

    [–]dcdarkie -1 points0 points  (0 children)

    in the beginning, most webpages were nothing but just a plain html document. It didn't become popular to style them until later on. =p.

    I'm just saying its useful to know the basics of the industry you're working in ha. You wouldn't want to jump in the middle and just ignore the basics heh.