PDA

View Full Version : Question about my abilities... ??



nethan_lor
May 29th, 2008, 07:58 PM
Hi, and thanks for stopping by. I'm not sure if i'm at the rigth place but well you will decide. First of all, sorry for my english I'll do my best.

I'm currently a university (first year) programming student. I already have a programming diploma from college. The fact is I learned a lot of things (C, C++, Java, SQL, Python, Assembly) but not in depth. I know a bit of everything but I'm no expert in any of those. That scares me a lot. I'm working full time, going to school after work, that leaves me not much time to practice on my own. I kinda build my experience on my school work wich I think is not enough.

Anyway, after explaining my situation, I wanna know if there's any chance to become a good programmer if I'm not 24/7 coding ??
How much "time" does it take to become good in one language ??
Can a programmer be good at web development, GUI design, application developpment at the same time ??

Thanks a lot... I'm kinda scared about my future rigth now :P

Lau_of_DK
May 29th, 2008, 08:03 PM
Hey Nethan,


Sure youre in the right place, everybody in here complains about not having enough time :)

Secondly, time comes and time goes. Your major concern seems to be "Can I become good enough, can I improve?" and when you're asking those kinds of questions then I would say you could absolutely become a good programmer - all it takes is a little bit of brains and a lot of motivation. And even if you don't have brains, there's still VB :)

Its possible to master all the skills you mentioned at the same time, but with your busy schedule, I'd line up your top 3 priorities and then accomplish them 1 by 1.

Pick a project that you think is interesting and includes some of the stuff you want to learn and then start going. When you get stuck post the problem in here and the day after when you get back from work, there'll be hints to help you further along :)

Good luck,
Lau

LaRoza
May 29th, 2008, 08:09 PM
Anyway, after explaining my situation, I wanna know if there's any chance to become a good programmer if I'm not 24/7 coding ??
How much "time" does it take to become good in one language ??
Can a programmer be good at web development, GUI design, application developpment at the same time ??

Thanks a lot... I'm kinda scared about my future rigth now :P

Programming is a life long education.

The time it takes to be a "good programmer" isn't that long I suppose.

See these articles:

http://www.catb.org/~esr/faqs/hacker-howto.html

http://users.actcom.co.il/~choo/lupg/essays/becoming-a-real-programmer.html

http://norvig.com/21-days.html

A programmer can be good at web development and GUI's at the same time. (I am the best at web development myself, and really can't make good GUI's (because I don't try. I don't care about GUI's))

dempl_dempl
May 29th, 2008, 09:47 PM
Hi, and thanks for stopping by. I'm not sure if i'm at the rigth place but well you will decide. First of all, sorry for my english I'll do my best.

I'm currently a university (first year) programming student. I already have a programming diploma from college. The fact is I learned a lot of things (C, C++, Java, SQL, Python, Assembly) but not in depth. I know a bit of everything but I'm no expert in any of those. That scares me a lot. I'm working full time, going to school after work, that leaves me not much time to practice on my own. I kinda build my experience on my school work wich I think is not enough.

Anyway, after explaining my situation, I wanna know if there's any chance to become a good programmer if I'm not 24/7 coding ??
How much "time" does it take to become good in one language ??
Can a programmer be good at web development, GUI design, application developpment at the same time ??

Thanks a lot... I'm kinda scared about my future rigth now :P


When I've started flamenco guitar lessons as a not so little kid, my mom asked my teacher:
How long it would take him to master flamenco guitar?

He replied in good old Zen style :
All depends from how dumb he is.


Cheers!

Lau_of_DK
May 29th, 2008, 11:03 PM
He replied in good old Zen style :
All depends from how dumb he is.


Cheers!


:lolflag:

Did you ever learn? :)

dempl_dempl
May 29th, 2008, 11:43 PM
:lolflag:

Did you ever learn? :)

No :)

rplantz
May 30th, 2008, 01:39 AM
I worked as a programmer for ten years, then taught computer science at a university for twenty years.

The point of a university education is to help you learn the basic concepts. Notice that I said "help you learn," not "teach you." Professors can help you, but they can't force you.

Companies sometimes need to hire someone who has specific skills. You probably will not learn these at a university.

Many companies also hire entry-level people. They assume that the entry-level person knows the basic concepts and can learn the specifics on the job. The issue then becomes how fast the person can learn. This is another thing that a university education is supposed to help you with --- learning how to learn.

Joeb454
May 30th, 2008, 01:55 AM
It all depends on how you define good.

Personally I see it as a constant learning experience. Some of my University lecturers who taught me C this last year learnt stuff from some of the students ;)

pmasiar
May 30th, 2008, 03:46 AM
Don't be scared about the future... too much. Just a little to keep you on your toes :-) If you are good, you can transfer your skills from one area to another.

It takes 10 years to become expert. Also, experts (better than myself) say that there is difference between 10 years of experience, and 1 year repeated 10 times :-) So try to find positions where you learn something new, where people around you are smart. Read more about process of programming and project management: "Pragmatic Programmer" book, Extreme/Agile programming, Test Driven Development (see wikipedia). Learn patterns used in language you use. Read essays by Paul Graham and Joel Spolsky, they have articles how to evaluate skills, and what to learn.

With your time commitments I cannot see how you can participate in outside projects - but check if some project you use at work has free components, and try to become expert on those (skills with free components are easier to transfer).

Also, consider problem area - there are many, and not all solution patterns are transferable. For every area you need to learn terminology, and it takes another couple of years to see rare special cases. As they say, "10 years experience means nothing only to someone lacking it". Programming is a craft. There is no other way to learn (unlike science or art), but just doing it, and observing masters doing it. later, when you have time try joining opensource project - only people smarter than average join and work for free, self-selected community :-)

Bottom line: You are not alone, and you are aware you need to learn, so you will. Good luck!

nethan_lor
May 30th, 2008, 03:53 AM
Thanks a lot guys for your answers. You kinda all unscared me. I was seriously afraid that when it comes down to work in a real IT company they will expect someone really good for the job and not in any kind of needing to learn anything new. Obviously they will want someone good but like some of you said, when they hire someone, they know that this person will need a learning curve.

What was annoyng me the most is that at universty and before that I didn't learn anything specific and when I look around for jobs they are all looking for someone good in one particular thing or otherwise looking for someone good in Cobol, Pascal, C++, C#, Java, .NET and so one. I was like wow how come someone can know all of this.

Bottom line, I'll try to find time to work on an open source project or a project on my own. I also have to be aware that I wont become the next Linus Torval in a week :p

Anyway thanks for stopping by. Like I said you all secured me a lot on my future (if that makes any sense in english :p)

Thanks a lot

Tomosaur
May 30th, 2008, 02:57 PM
Thanks a lot guys for your answers. You kinda all unscared me. I was seriously afraid that when it comes down to work in a real IT company they will expect someone really good for the job and not in any kind of needing to learn anything new. Obviously they will want someone good but like some of you said, when they hire someone, they know that this person will need a learning curve.

What was annoyng me the most is that at universty and before that I didn't learn anything specific and when I look around for jobs they are all looking for someone good in one particular thing or otherwise looking for someone good in Cobol, Pascal, C++, C#, Java, .NET and so one. I was like wow how come someone can know all of this.

Bottom line, I'll try to find time to work on an open source project or a project on my own. I also have to be aware that I wont become the next Linus Torval in a week :p

Anyway thanks for stopping by. Like I said you all secured me a lot on my future (if that makes any sense in english :p)

Thanks a lot

Hi Nathan - you would probably be best off getting involved in some open-source project (maybe even more than one, if you can manage it!). The beauty is that you only work on the project when you want to, and when you have the time. The benefit is that you can show the open-source project to an employer and say 'I helped build this, here's what I contributed'. That way you will demonstrate that you can actually do what you're saying you can do. A lot of people over-sell their abilities when applying for a job (can't really blame them!), and then find that the workload is too much for them.

Another great thing about getting inolved in open-source is that you can take time to learn the code / programming language / technology without worrying too much about dead-lines and such. That, and the other people working on the project will (usually!) help you out if you're not sure about something, and will be able to give you feedback on your work much faster than say, taking an exam and waiting for the results. The only real problem is that you will need to find an employer who doesn't just dismiss open-source as badly-built clones of commercial software :P

HunterSBuntu
May 30th, 2008, 03:23 PM
I know exactly how you feel.

I'd been programming as a hobby since I was a teen and I went to a 1 yr. technical college course for programming. We were taught the bare essentials of a topic before being whisked off to something else.

I got out of there and I did not at all feel ready for actual work.

I was comfortable with writing code and syntax and whatnot but when faced with a non trivial problem I didn't know where to start. I'd get that 'paralysis by analysis' when you think about all the different ways to approach a problem but never actually decide on one and get started.

For a time I was convinced it just wasn't the field for me.

Anyway, to cut to the chase, what's working for me and what I would recommend is accept that you're gonna need to take the small steps and trust the process. There's gonna be a lot of small, 'trivial' programs before a super-mega-cool masterpiece. Take pride in all the little projects that are completed, they're paving the way to the big stuff.

Do all the exercises at the ends of the chapters of the programming textbooks. I used to always look at them, think about them for a while and be like 'ok, I know how I would do that' but never code anything. This doesn't help. More than the actual coding, actually doing it helps you figure out how to attack the problem, structure your code, etc... I'm finding for me personally writing the code is the easy part, it's figuring out how to approach the problem and the high level design decisions that are difficult.

My 0.02, hope it helps.

maximinus_uk
May 30th, 2008, 03:32 PM
Not to scare you off, but programming can be a life-long learning experience. I've been coding since 1981 (!) and the more I learn, the more I realize how much there is to the subject.

My biggest advice is to do whatever seems to be fun for you, but don't be afraid to experiment. I always like to learn a new language every couple of years, even if I feel I'll never use it. Sometimes you'll prove yourself wrong (as I found when I learnt Perl).

It's the same with guitar. I've been playing for 20+ years and yet the better i get the more I realize how bad I am. Other people might think I'm great, but knowing more about the process than they do I can see why I'm not as good as I could be...

Mickeysofine1972
May 30th, 2008, 05:07 PM
I think you'll find that you will always have strengths and weaknesses but the more time you spend with any other languages will teach you that they all have the same essential and common factors.

Sure each has its caveats, but you will find that experience with them all will help you become better with all of them.

Mike

pmasiar
May 30th, 2008, 05:30 PM
Where to get problems to solve:

Apart of websites like PythonChallenge and project Euler, excellent book (not reprinted since '79, sadly) is Etudes for Programmers (Paperback)
by Charles Wetherell (http://www.amazon.com/Etudes-Programmers-Charles-Wetherell/dp/0132918072) tasks to solve in 1-3 weeks, more complicated than simple homeworks but much more simple than task in real life (and more fun). Some I described in my wiki as i remember them. Sadly I lost my old copy and book is quite expensive to buy as used :-)

spupy
May 31st, 2008, 09:14 PM
There is one more thing that isn't mentioned yet. Don't try to be a Jack-of-all-trades, but master of none! (http://en.wikipedia.org/wiki/Jack_of_all_trades,_master_of_none) As I understand you are young, you can try different areas of computer programming and see what you like most. Later perhaps you should narrow down your field of view and become an expert in a single area (for example, complete web site development). Of course, you can be expert in several areas but mastering even one takes enough time.

Also: if you know, for example, the whole Java API in your sleep, this won't make you that much better Java programmer. There are concepts about programming that apply to every language and are much more important than "knowing" syntax, functions and libraries perfectly. These things are learned in Computer Science, i think is called in English. They include (to name a few that come to mind): algorithms, program complexity, formal methods, data structures...