views:

564

answers:

9

I seem to be in a never ending tail spin of Linux, or not, Windows or not. Web programming or system programming. Python or PHP.

I'am self teaching myself programming. But it seems I keep being torn about which way to go. Unfortunately it is always seemingly good reasons to get side tracked. You know the whole open source or proprietary thing. Lately I have decided after a year that Linux just doesn't cut it for me and it mostly stems from me wanting to watch videos on Channel 9 etc, and the clunkiness that is Linux. So that lead me to, "Should I learn ASP.NET, since I am more so deciding Windows IS a "necessary" evil.

I hope this made sense. The reason I settled in on Web Development as my course to learning programming is because I actually have a task to implement rather then aimlessly reading reference books etc.

Does anyone have any advice at what they may have done to stay focused and not get lead down every tangent or idea.

+7  A: 

You will only have a first language for a little while. Pick any direction that interests you, and follow it. There is no way around the introduction "Drink from the Firehose" experience.

Keep early project simple, and tangible. Build useful things and the motivation will be there.

Web / desktop / mobile / etc, its all good. Find the one that gets you thinking about code when your not coding, and you'll know your going in the right direction.

Ryan Townshend
thanks for the insightOne of the issues I guess I have is I want to choose a technology that is not the flavor of the month.I have a tendency to dig deeper then most people when I get involved with something, so I just want to make sure it is also good time spent. ie the PHP or Python(Django) path
+1: All technology is flavor of the month. No technology is a timeless, eternal thing of beauty and joy forever. Just pick something and move on. In hindsight, no decision will be perfect. Hand-wringing is a bad habit. Learn to make a decision by making decisions.
S.Lott
+2  A: 

The reason I settled in on Web Development as my course to learning programming is because I actually have a task to implement rather then aimlessly reading reference books etc.

This is exactly the course to follow. I think most of us get into programming the same way. Find a problem and work out its solution in whatever technology is appropriate. Keep looking for problems that are interesting to you, and you'll find your own answer (which is probably different than my own answer) to this question.

Bill the Lizard
+2  A: 

One of pragmatic programmer's advice is to learn a new language per year. Possibly, a completely different one each time (see Martin Fowler's opinion on this matter).

Back to your specifics, you have chosen the way of programming because you enjoyed it (I hope :-)); if you are not satisfied by your current environment, go and change it.

Roberto Liffredo
A: 

Don't worry so much about the direction you're going, just make sure that:

a) You are enjoying it, and are understanding what you are doing. You don't have to initially understand concepts like polymorphism for example, but you should be understanding the basics of what you are doing. Just can't wrap your mind around Tuples and Dictionaries in Python after awhile? Then it's probably not for you. Of course, that's a very low level example as if you don't get Dictionaries, then there's a problem in general :-)

b) You are working on things that you want to solve, not just because you think you NEED to learn this. You used the phrase "Windows is a necessary evil" No, it isn't. Many companies (big and small) do not use the .NET platform for development. Your approach to Linux was interesting as you could not achieve something you wanted on it and your result was "it's clunky" which seems kind of awkward.

Either way, this isn't about Linux vs. Windows, but I hope that helps. Just go with the flow, and don't worry about what way you're going as long as you're enjoying and learning! :)

Bartek
A: 

I find some of my junior colleagues (atleast the ones that are very passionate about CS) asking similar questions (sometimes I find myself asking this too, even though I am now 12+ yrs into the industry). One advice I give them (and to myself too), which helped me, is -

  • Focus on the job that is already assigned to you. As part of that task, make sure you dont just "get the job done", but also make sure that you understand the fundamentals behind the same. If you want to be a good programmer, you need to understand the underlying principles of "how things work". Using an API to do matrix multiplication is easy, but if you dont really know what is matrix multiplication and how to do it by hand, you are actually losing out. So in your chosen web programming domain, make sure you go beyond the surface. Understand what is really happening behind your back, when you click that button.

  • As part of "doing the job" you typically can figure out what is your interest area. If you are more passionate about how things are implemented, and keep figuring it out, then you are, IMO, a systems guy. If you are more passionate about finding out all the new tools and the newer features and seem to be keen in putting things together to create newer and cooler outputs, then you are an application programmer. Both are interesting areas in their own ways and as people adviced above, realize what you like and see if you can stick with it.

  • And I like one of the advices above. If you are still confused, try doing this "rotation" thingie. There are lots of scope in just about every domain/field and so keep rotating (but give each rotation due time), until you find what you like.

All the best.

:-)

Kumar Rangarajan
A: 

Thanks for the thoughtful responses

That seemed to be another distraction from learning programming for me anyway. I spent more time chasing apparent fixes for upgraded packages and such. Mostly things that were already working and it just seemed to not make much sense to spend time recreating the wheel so to speak. Believe me the jury is still out for ma as to whether it makes good sense to chase the dream of Linux as a real alternative to a usable desktop. Now remember ex-Windows users will always have to compare their experience with Linux to how they were previously able to work before trying Windows.

Just my two cents

Chase the dream of Linux?
Jeremy Cantrell
A: 

This is a ruff business. Technology churn keeps everyone busy and workers who want to excel at their craft can become constantly busy in a sea of new technology. But, in the end all of these technologies follow the same patterns and practices to one degree or another. Becoming an expert in the fundamentals will go a long way to forwarding a career in this business. The Pragamatic Programmer is a classic source for direction.

Also, what you can or should do (Windows vs. Linux) may depend greatly on Geography. I follow the job market in my area. Spend a little time finding out what business are looking for and what contractors are doing and choose technologies to learn based on this information. User groups, conferences, and code camps are also a good source.

If the real problem here is that you are on your own building your first web app and find what you see on channel 9 is more compelling then maybe you should follow your instincts! BTW, I think you will find "clunkiness" everywhere, might as well get used to it.

daduffer
A: 

Really all you need to do is make sure you take baby steps and are doing something you are enjoying.

I started off programming in visual basic on a little game. Not the best language, but it was a good starting point for me at the time. My point is, you don't need to pick the best language/operating system/anything from the start, just iterate. It is the programming way.

By the way, just because you use windows as your OS doesn't mean you have to do everything .NET I use windows and then have a server for all my web hosting that I SSH into.

James Van Boxtel
A: 

I had the same issue for a little while myself. I was getting bored of just being in PHP and wanted to be able to do more. I ended up settling on C# since it not only fulfilled the 'necessary evil' argument, but allows me to do anything I want in the MS realm, and is the closest syntax wise to another language (Java).

Thinking about all the different types of projects this opened me up to made me choose this direction. Both languages can be used for web development, mobile devices, and desktop applications.

invenetix