473,387 Members | 1,440 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,387 software developers and data experts.

When will I be a good programmer?

78
Ok, i was thinking about this the other day, and i thought i'd ask here. I'm still a newbie programmer cause i only know a little JAVA and C. But i don't only learn programming languages, i learn theory too. I've learn about computer architecture, algorithm analysis, and all that stuff that you get at the university.
My question is, when will i be considered as a good programmer. Or how deep should my programming knowledge be to start working in a company. When do I "stop" and say i know "enough"?
So for you guys who already have jobs as developers or engineers, what languages do you know and how much?
Discuss...
Feb 25 '07 #1
20 3970
Loismustdie129
195 100+
I don't know about hard facts or jobs, but my dad always told me that you never know enough about anything to stop learning. I guess you develop and learn new things all your life.

Basically what I think, and how I learn, is that I never know everything and that I barely know anything. I jump from there and never stop. I know this doesn't help but, I like philosophy so I always delve deep into a question.
Feb 25 '07 #2
Ganon11
3,652 Expert 2GB
"When will I be a good programmer?"

Does it matter?

I didn't think I was 'good', but apparently I'm able to answer 80% of the questions in the C++/C forum. I didn't think I was good, but I scored high enough on a standardized test that I have the option of skipping an entire year of programming courses in college.

Let other people decide if you are 'good', but continue to learn so that you will be considered good.
Feb 25 '07 #3
DeMan
1,806 1GB
Firstly as the previous posters have said, "good" depends on definition.

I had two Epiphanies, where I realised I was a better programmer than I though. The first was after 2nd year University. After getting a Distinction in a core topi (Data Structures and Algorithms), I still though "it was a fluke" because I didn't really think I understood much of it. Having run out of things to read, however, I revisited the text-book from the course (on public transport, to kill the boredom) and suddenly realised exactly where the Distinction had come from, I actually UNDERSTOOD a lot of what was in the text -> soemtimes you learn without really realising.

The second experience I had, was comin g to this forum for a question (which I don't think I ever asked, nor can I remember what it was). I came accross a post I thought (from the tile) might be similar, and soon realised it wasn't. It was a question, however, that I felt I could answer. -> there are always (or close enough to always) people less experienced than you. If you feel you have an answer to a question, share it....aside from all else, I have found I have learnt by answering questions, sometimes because I deliberately look things up, othertimes because I read what someone else has written, and sometimes because thinkiong about someones problem helps me to expand my knowledge.


According to Industry, the biggest factor is experience. You need education to develop initial ideas and theory, but it isn't (IMHO) until you work in the industry, that you really start to refine the skills you need. Basically at UNI you learn the theory, and (as with any work) in your first months in a job you develop much of the skill that you will rely on throughout your career.
Feb 25 '07 #4
willakawill
1,646 1GB
I started programming professionally the same day that I started learning. I had no idea about asp and websites and forms etc. but I was getting paid to write them. My policy in everything is to say yes and worry about how to do it later.

This field is full of bluffers (I include myself). You don't need to know a lot. You must have the right attitude. There are enough website tutorials and books and people willing to help to keep you going through any problem if your attitude is right. Be fearless if only because there is nothing to fear.
Feb 25 '07 #5
r035198x
13,262 8TB
There are people who have been programming for more than 5 years and still are not good. If you want to be a good programmer, write lots of code using the best programming practices all the time.
Feb 26 '07 #6
MMcCarthy
14,534 Expert Mod 8TB
Moving to Software Development Forum.
Feb 26 '07 #7
DeMan
1,806 1GB
I'm guesing programming must have something to do with software development.....
Feb 26 '07 #8
Banfa
9,065 Expert Mod 8TB
When do I "stop" and say i know "enough"?
You don't, because if you do you will start going backwards because the computer industry is moving forwards, if you stand still you will be left behind.

Several years experience will help, when I look back at the things I did in my 1st 5 years I often find things I would do differently now.

And finally being able to do a good imitation of a cow (or some other farmyard animal) can't hurt.
Feb 26 '07 #9
MMcCarthy
14,534 Expert Mod 8TB
I'm guesing programming must have something to do with software development.....
The idea is that general (non-technical) but on topic discussions will be placed here.
Feb 26 '07 #10
AdrianH
1,251 Expert 1GB
A "good" programmer knows the full life cycle of developing an app and knows how each is done:
  1. Concept
    Important as it will start the ball rolling as to what is wanted. Not necessarily the job of the programmer though.
  2. Gather Requirements
    A "good" programmer asks (others or themselves) what is needed now and possibly in the future (to allow for design growth).
  3. Design
    Programming (developing) is one thing, but if you are asked to solve a problem by writing a programme and you just start to programme. You're in for trouble.

    With a design, you make a specific goal, a target to attain. It will give you a structured outline as to what to do and how the system is broken down. It will also give you a means to give a more accurate timeline to your boss too.
  4. Develop
    Programming is child’s play. It is just a bunch of logical statements, executed in sequence.

    Don’t get me wrong, I’m not dissing those who just programme; there are some who know the ins and outs of how something can be done and how to use certain libraries to get things done faster. But when you have to debug, or maintain it later, you or your team had better have done more than just the programming, or else you will not know when you are finished (achieved the original goal).
  5. Test (Unit/System)
    Testing a unit is to ensure that the code will work in the rest of the system. This limits the places where problem can occur.

    System testing a much bigger task, but can be less of a problem if Unit Testing is done.
  6. Debug
    This is done in response to both Unit and System Testing. If the system is designed well, then this should be a piece of cake. This is because a good design breaks down the problem into small, almost trivial units, and will sometimes allow you to track it down without even looking at the code but just the design.
  7. Document (Design/Unit/System/User)
    Documentation is key to any project. Without documentation, you have nothing to refer to but the code, and if it isn't working, you are guessing as to what it is supposed to do.

    With a Design document, you should be able to write a preliminary User document to tell the user how to use the app. However, if this is a library and not an app, this is not necessary as the user will not see the internals.

    Documentation for a Unit and the System can be embedded in the code as comments. There are document extractors which can be run on the code to make a pretty book or web site.
  8. Maintain
    With all the stuff you have done, and the documentation that is available, maintenance should be a breeze. If something is added to the project problem, then figure out how it is to be added to the Design and document it.

Requirements Gathering and Designing are critical stages for writing a good code. These give you a target and set the pace of the entire project. Only in the most simplest of programmes (a one - ten liner) will you not need these and this is only because these are one shot deals, where Maintenance is not an issue.

A “good” programmer may not know how to do everything here, but the more you know, the better the salary you can demand. Some of these sections can be delegated to others as well, making this a team effort working in parallel.

If you know how to do all of this, you’re better than a “good”, you’re “Grrrrrrrrrrrrreate” (I hope Kellogg’s doesn’t sue me :)). It may even put you in to the Engineer class, something that I personally am trying to aspire to.


Adrian
Feb 26 '07 #11
enreil
86
I think this is by far a distinguishing factor of a 'good' programmer. Without solid requirements, a programmer is most likely wasting his or her time. It seems that almost invariably users change their minds or have expectations of the system that are not clearly articulated beforehand. The programmer may write excellent code that does what he/she thinks the application is supposed to do, but if those tasks don't do what the user needs them to do, much time and money have been wasted, and the programmer may be looking for another job.

A "good" programmer asks (others or themselves) what is needed now and possibly in the future (to allow for design growth).
Feb 26 '07 #12
DeMan
1,806 1GB
I'll be a good programmer tomorrow, I'm enjoying being a BAD one too much today.
Feb 26 '07 #13
Sebouh
78
Thanks for the replies.
But just to clear out some things i said: I know i should never stop or else I'll go back, but what i meant was when do i feel comfortable enough to work in an industry and actually develop a software? I know I'm not ready now, but when i graduate will i be ready? Maybe I'm worrying too much...if I won't be ready what about my friends? I really feel I'm better than most of them cause i have less problems with programming assignments all the time, but it still worries me that i don't know the languages enough. When i look at job requirements from time to time, all i see is expected to know this language...i never see expected to know the development cycle or whatever. And my teachers won't teach me languages (they do, but as part of the course topic), so i have to learn them on my own. But how much do i learn, till i drop dead? Till i know the basics? I don't wanna get hired and find out I'm not ready for the job. I know i can always learn later, but that's doesn't put me in a secured position, nor helps increase my self confidence.
What do you guys thing?
Feb 26 '07 #14
DeMan
1,806 1GB
When I completed my studies I found I didn't 'feel' qualified, and was a little aprehensive when I first started to work in the industry.
It is important to remember that Universities/Colleges have been around for a long time (and usually pride themselves on their reputation). This means when they give you a piece of paper saying you are qualuified as something, you probably are.
Often, you won't actually realise how much you have learnt, ubntil you are given the opportunity to apply that knowledge. Sharing answers on forums (like this one) can help you to realise what you actually have learnt, and 'hobby programming' may also help. Getting work, however, is the biggest factor, and you will find that most employers are used to training people fresh from studies, and you should fit in fairly quickly (and probably realise that you know all those thiongs you thought you didn't).....
Feb 26 '07 #15
willakawill
1,646 1GB
You have to learn something important. You will never be 'ready' for the job. That is a silly notion that does not apply to life.

"When I am ready to learn the piano I will start taking lessons"

Makes no sense. Say yes and worry about it later. You will be fine
Feb 26 '07 #16
AdrianH
1,251 Expert 1GB
Thanks for the replies.
But just to clear out some things i said: I know i should never stop or else I'll go back, but what i meant was when do i feel comfortable enough to work in an industry and actually develop a software? I know I'm not ready now, but when i graduate will i be ready? Maybe I'm worrying too much...if I won't be ready what about my friends? I really feel I'm better than most of them cause i have less problems with programming assignments all the time, but it still worries me that i don't know the languages enough. When i look at job requirements from time to time, all i see is expected to know this language...i never see expected to know the development cycle or whatever. And my teachers won't teach me languages (they do, but as part of the course topic), so i have to learn them on my own. But how much do i learn, till i drop dead? Till i know the basics? I don't wanna get hired and find out I'm not ready for the job. I know i can always learn later, but that's doesn't put me in a secured position, nor helps increase my self confidence.
What do you guys thing?
Comfortable? Probably never. :) I still get a little nervous entering a new project, but it passes when I get in to it.

About not knowing about the development life cycle: Yeah, some don't, mostly because they either have someone on board already that knows about it, or they don't know about it. If you don't know about it, you will when they throw you in to the middle of a project. :) The theory is what you fall back on when you don't have practical experience. I personally think that the theory is more important than practical, but I guess I assume if you have the theory, you know how to generally apply it if you are given a set of circumstances (this is how I work). In a course, they usually have you implementing the theory on some project, which gives you some practical, but unfortunately not always enough.

About languages: you should have been taught the basics of some language. But languages are not usually the primary thing taught probably because they are all pretty much all the same. The concepts of programming are far more important because, the concepts are transferable to almost any language. Some things like pointer may not exist in a language, but the concept it taught so that you can use it in a language that does.

I had actually taken several courses in my University career, some of which being: Compilers, AI, Object Oriented Programming and Design, Hardware, and Operating Systems.

These five courses exposed me to C/C++, Eiffel, MIPS, Prolog, LISP and possibly more. But what it taught me was that all of these languages are pretty much the same. Don't get me wrong they have some differences, but they all have variables, they all have loop structures, they have conditionals, they all have functions. Prolog is probably the wonkiest one that I saw, and MIPS is just raw assembly, but these still do the same thing, just with a different grammar.

Try not to worry about not knowing all the languages, focus on what makes languages the same, and what makes some different. It will make you very versatile in your understanding of them.

So don't worry about languages so much.

Adrian

P.S. Libraries are a different matter though. I know many languages, but I don't know all that many libraries. This is because there are so many of them. And what is hot today goes cold tomorrow. When I programme, I usually stick to standard libraries to reduce maintenance headaches and learning requirements. If a project needs you to learn a library, pick up a good book that describes how the library is broken down. This allows you to learn just what is needed, without having to learn the entire zillions of functions in it.
Feb 26 '07 #17
Sebouh
78
Well, that was a relief. Guess I'm just gonna have to face it like everybody else.
Feb 27 '07 #18
willakawill
1,646 1GB
Well, that was a relief. Guess I'm just gonna have to face it like everybody else.
Just like your first date :)
Feb 27 '07 #19
r035198x
13,262 8TB
Just like your first date :)
I might have to do without that.
Feb 27 '07 #20
tolkienarda
316 100+
hmm
i don't think that being a good programer has much do do with what you learn in school. programing is a way of thinking. logical step by step instructions to complete a cetrain task. you are just giving directions to a computer and once you learn the basics it is more of learning how to "spell" these insturctions in a new language. but being a good programer dosen't have anything to do with how many languages you know.

and as for the being like the first date i wish dating came to me as ealily as typing.
Mar 9 '07 #21

Sign in to post your reply or Sign up for a free account.

Similar topics

26
by: Simon | last post by:
I'm doing a survey. When do you think GNU/Linux will be ready for the average Joe? What obstacles must it overcome first?
6
by: Martyn Lawson | last post by:
Hi, I am currently working as an Analyst on a .NET Web Project using ASP.NET and C#.NET. I have a couple of, at least what should be, quick questions: 1. My understanding of UML says that...
29
by: RAY | last post by:
Hi , my boss has asked I sit in on an interview this afternoon and that I create some interview questions on the person's experience. What is C++ used for and why would a company benefit from...
2
by: Birt | last post by:
My understanding about defining your own copy and assignment constructors is whenever there is a member of pointer type. Is this true or is there any exception to this"rule"? How about when you...
72
by: E. Robert Tisdale | last post by:
What makes a good C/C++ programmer? Would you be surprised if I told you that it has almost nothing to do with your knowledge of C or C++? There isn't much difference in productivity, for...
27
by: MK | last post by:
I am a newbie. Please help. The following warning is issued by gcc-3.2.2 compiler (pc Linux): ================================================================== read_raw_data.c:51: warning:...
18
by: JohnR | last post by:
From reading the documentation, this should be a relatively easy thing. I have an arraylist of custom class instances which I want to search with an"indexof" where I'm passing an instance if the...
8
by: VB Programmer | last post by:
I would appreciate your assistance on this ASP.NET 2.0 site.... This is the wierd problem: While accessing the built in .NET functions for 'profiling' or 'membership' an error is generated (see...
6
by: Ralph | last post by:
Hi, I was reading effictive C++ and some other books again and they all tell you about hiding implementation details (proxy/pimpl/inheritance) but they never really explain when to use it. I...
0
by: taylorcarr | last post by:
A Canon printer is a smart device known for being advanced, efficient, and reliable. It is designed for home, office, and hybrid workspace use and can also be used for a variety of purposes. However,...
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...
0
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.