views:

193

answers:

10

I'm an ICT student. I've been doing it for 2 years and recently I started following developper blogs, got a twitter account to keep track of new blogs, lists of tips, tricks, free templates and other such things.

Doing so has showed me that the amount of subject I thought I had to cover is actually vastly smaller than what's really out there.

For instance, my education currently covers HTML, CSS, Javascript(not any library, plain Javascript) and PHP. (Oh yes, and MySQL, forgot that one in the original post)

The PHP has been very basic and it's not gonna be explored further. Next year we're getting ASP.NET and LINQ, which we will have to learn by ourselves.

Things like Apache or .htacces are just not on our list.

That said, I seriously wonder what else I'm "missing out" on. Essential stuff I mean.

Besides webdev, I'm also getting some OO-programming, which was Java last year, C# this year and next year it'll merge with webdev into ASP.NET

Biggest things we've done is make a library app where you can store your books in a CSV file and than a program where you provide a mailing list and the program then sends a mail to all people on the list.

Even our teachers tell us that it's really basic stuff and we'll get to see most of the hardcore stuff on the workplace after we've graduated. Still, not a very comforting thought.

+15  A: 

Never stop learning! The day you feel as though you have covered everything and there is no longer anything left to learn is the day to be worried.

It is easy to feel overwhelmed by deluge of technologies out there but the important thing to remember is to just keep plugging away at what you think is interesting. Keep learning and keep coding all the time.

From reading your post it seems to me that what you would really benefit from would be a real-life project in which you would be forced to grapple with several different technologies working together (e.g. a website using HTML, JavaScript, CSS, PHP, and SQL). See if your school can get you involved with an internship - they can often be the best thing to teach you how to apply what you are learning.

Andrew Hare
A: 

It's hard to get into, since the IDE is not free, but you may encounter the need to work with Flash in web development.

But don't be too down on your school about not sufficiently preparing you. No school can. You should start now trying to do web development jobs, even small projects. When I was in school 9 years ago, there were plenty of willing employers ready to get some work done on the cheap.

Jacob
+2  A: 

Once you get your breadth of education, you can start working on the depth. Perhaps you'll go with ASP.NET and C#, or Ruby on Rails, or PHP. The framework and language you specialize in will narrow the scope of what you "need" to know. That will make things feel much more manageable.

Robert S.
+1  A: 

Is it good to be Working Very Hard? Maybe yes, maybe no, I won't have an answer.

Seriously, I think programming is programming, even when you call it web development. While you have free time, I would suggest to learn important concepts:

  • functional programming (I like Haskell for fun, Python for development, but that's my taste)
  • how internet works (general overview - layers, DNS, TCP/IP, firewalls)
  • maybe threading and parallel computing

Yo might think that's too theoretical. Well, I dunno -- on the web you absolutely always have parallel computations :-)

If you will do some practical things, you'll immediately have too much of Apache and .htaccess files. So I won't be spending any more time on that than absolutely necessary, and certainly not in advance.

Note: the story from the URL is

A martial arts student went to his teacher and said earnestly, "I am devoted to studying your martial system. How long will it take me to master it." The teacher's reply was casual, "Ten years." Impatiently, the student answered, "But I want to master it faster than that. I will work very hard. I will practice everyday, ten or more hours a day if I have to. How long will it take then?" The teacher thought for a moment, "20 years."

ilya n.
Is the URL good?
MiseryIndex
Still works for me...
ilya n.
A: 

Let's flip this around for a moment. What should a school cover and what responsibility does it have to provide facilities to test out all that it is supposed to cover? It is a good question in my mind but I wonder how well have you thought of the answer to this.

While I can agree that not covering setting up a web server, e.g. Apache, IIS, or something similar, does seem like a gaping hole, the reality is that whenever you get to the workforce there are several different options that you want to handle and it isn't easy to make a curriculum to handle any result,e.g. some may go for a LAMP stack and others may prefer the all-Microsoft equivalent so there isn't any overlap in terms of technologies used and how does a school's limited resources meet those requirements is a good question.

I might suggest if you want to get a bit deeper into Computer Science then consider getting a book like "Concrete Mathematics" or others mentioned here to give yourself a bit more of an edge if you want to really get into some elements of things here. There are lots of topics in here that you may or may not see from an ICT perspective.

In a sense, learning things on your own is something that you should get used to here as this is going to be done repeatedly when you start working if you plan to do well in most IT career paths to my mind.

JB King
+1  A: 

I'm not in school, but have the same basic skill set you have. Here are my suggestions:

  • A Javascript library Like most folks here, I like jQuery, but I think any of the top libraries will save you a ton of work when you're writing Javascript.

  • Basic graphic design You may not always have a graphic designer to work with, so being able to create and manipulate images for your stylesheets and layouts is helpful, even if you're not really an artist.

  • Source control A friend taught me about source control, and that's a big help when you make mistakes and need to roll them back, or are developing with others. If they don't teach you that, pursue it on your own.

  • Server set up At work, I've needed to set up my own server in order to make the intranet I developed available to others. I learned a bit about Apache configuration by necessity, but I think it's OK to learn this when you need it.

  • Encryption/Security Site security is a big, hard topic, but learn what you can. Having some knowledge of encryption (like how to hash user passwords in your database) is helpful.

Now I'm learning Ruby on Rails, which shows me how messy PHP really is by comparison. I'd also like to learn Python/Django at some point. Even if I don't get to work with those technologies full time, I think learning them will improve my work in the ones I know.

Nathan Long
+1  A: 

Even our teachers tell us that it's really basic stuff and we'll get to see most of the hardcore stuff on the workplace after we've graduated. Still, not a very comforting thought.

This is what everyone is missing. You want a bigger challenge, something real and concrete. A university will rarely provide that to you. I've been at this 10 years professionally and never finished my degree, and don't need too either. The bottom line is you need "experience". The market will be tough when/if you graduate and your experience trumps everything else 9 times out of 10.

Look around on Craigslist, local papers, local entrepreneur groups (meetup.org) etc. There are plenty of business's/individuals looking for people to contribute code to their real world production applications/sites. Do a couple of these and you have some nice bullets on a resume and some contacts with references on LinkedIn. It's rare to see an undergrad with that.

Oh, and stop following all those blogs/tweets etc. You'll spend more time doing that than actually getting the experience I suggested you go after. Good luck!

Marc
A: 

Look for internships to do either during the summer break or while your in school. This will provide exposure to real-world problems & development practices.

Also, when you do go look for that first job after finishing your program, you'll have some industry experiences and professional references too (assuming you the people you intern with like you of course).

Heck, it doesn't even need to be a formal "internship", just a part-time job where your employer knows you're a student and sets expectations at your proper skill level. They'll get a deal on labor and you'll get experience.

Adam Porad
A: 

Pick up a fun side project by implementing one of your ideas (you have those, right?). The pitfalls and technology challenges you'll encounter implementing your own little web app will provide great experience, plus encourage your entrepreneur spirit, which is essential in software development if you ever want to get out of a cubicle.

Chris McCall
A: 

The school will provide you with good theoretical understanding of a lot of topics. I am working on my Masters in Computer Science, and while my school education has been decent, if it wasn't for all the side projects I started myself (because coding is my passion), I wouldn't have the jobs that I have had. I started working in development within a year of starting college. I had to sacrifice good grades (I graduated with a 3.0 while most of my friends had close to 4.0) care to take a guess who has a decent job and who doesn't?

What I would suggest doing is to take a look in your area at what the local companies are using. If you live in a fairly populated area than you will most likely have your pick of technologies. However, as one of the previous comments pointed out, work on your depth of knowledge. If you know PHP than do some form of end to end project. One of the first things I did long ago was a custom built forum. I used Javascript (JQuery) on the front, CSS, XHTML, PHP4 backend with a MySQL database.

Perhaps work on some webservices in PHP (great for RESTful type things).

If you want to learn a different technology, than maybe go with Java or a .NET solution.

Just remember that you aren't ever going to learn everything. Technology changes and I can't think of a single company that I have worked for our talked to that didn't expect different. Just keep learning and remember that programming is part science AND part Art. Treating like a Craft and aim to keep improving.

I would also recommend looking at Test Driven Development and once your comfortable with that, Behavior Driven Development.

Casey