Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I'm good with understanding technology and implementing it. At least that is what I feel. But it seems that when I come across experienced programmers they point out that my logic is weak. I feel that I would need some time with real programming to improve it. But nobody is ready to give that time to me. I'm just about starting my carer and it often feels disheartening to hear this. I want know how can I improve my logic and also does this sort of thing happens to others too?

share|improve this question
1  
How do they point out that your logic is weak? I'm sure within that there is the answer to how you can improve. –  Hermann Ingjaldsson Dec 9 '12 at 18:26
1  
Please cite specific experiences that show your problems with "logical" programming. Your problems are probably common problems you can overcome with a change of perspective, but you need to describe the symptoms of your issues with logic. Is there a specific programming problem you couldn't solve, or a group project that failed? How did it fail? Why did it fail? Help us brush the dust off of you so you can recover from past failures. –  Barbarrosa Dec 10 '12 at 9:29
add comment

closed as not constructive by Walter, gnat, Glenn Nelson, Tim Post, Dynamic Dec 10 '12 at 11:02

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

4 Answers

up vote 10 down vote accepted

Are you sure that your weakness really regards logic?

Logic is a strict relative of mathematics and phylosophy and, as long as I have seen in my life, has quite little to share with the actual practice of programming. See what wikipedia says of it:

https://en.wikipedia.org/wiki/Logic

At its extreme, logic becomes symbolic logic and do becomes a branch of mathematic:

https://en.wikipedia.org/wiki/Symbolic_logic

Most likely, your weakness is actually related to problem solving and abstraction:

https://en.wikipedia.org/wiki/Problem_solving

https://en.wikipedia.org/wiki/Abstraction

To be an autonomous, professional programmer, you do need to master these two "discipline".

If this is your case, you can get a lot of help from a bunch of good books and a bunch of "methodologies".

Problem solving, in our field, is mainly a matter of:

  1. Knowing very well the real-world problem you are trying to solve with code (the so-called "domain"). This has usually very little to do with programming and has a lot to do with the specific business/engineering field into which you are operating.

  2. Knowing your tools (programming language, used frameworks, platform, etc.)

  3. Knowing a set of common techniques used to face the most common problems: design patterns, best practices, code refactoring and so on.

  4. Practice... simply just plain old practice.

Abstraction is mainly a matter of:

  1. Object Oriented Analysis and Programming.

  2. Aspect Oriented Programming (the missing piece of OOP).

  3. A few other abstraction techniques you can stumble upon along the way, like Depency Injection and Inversion of Control.

So, you can learn a lot about these topics just by reading a few good books. Just Google around for "best programming books", "best software development books" or "best software engineering books".

To be more precise, most likely you have just reached the point where the plain "software development" practice (that is: "programming", "coding") leaves the scene to "software engineering" and "software architecture" ("organizing" or "structuring" the code and the related application). So, most likely, you need to start reading a few books that regards these topics.

Books like Code Complete and The pragmatic Programmer can be a starting point for your search (because they set the scene for the rest of your study).

For what regards practice (the possibility to work with good programmers on interesting projects), IMHO following/contributing to an Open Source project can be one of the best way to practice. You can choose the project that fascinates you most, the one you feel you can contribute to, the one that does not make you feel too anxious. You can join when you feel ready and you can contribute at your own pace. What else can you ask to a project?

Of course, do not expect that other programmers will spend much time explaining you how to improve your skills in detail. They will expect that you read and study a lot yourself to bring yourself at the required level. Contributing to an Open Source project is an opportunity for practice (something like a "stage" or an "internship") not a school.

And yes: this happens to others too. Almost all the seasoned programmers, sooner or later, had to undergo this transformation from simple "coders" to "software engineers". It is not easy, sometime it is not funny but, nevertheless, it is the passage that makes a real professional.

share|improve this answer
    
Thank you a lot. You have answered most of my queries and my next stop is working on an exciting open source project. –  Dinesh Venkata Dec 10 '12 at 13:41
    
Extremely good answer. Just great, I can't express it enough. Thanks you so much for sharing. –  Carlo Jul 13 '13 at 5:33
add comment

You're probably not nearly as good as you think you are. I've been developing software for 25 years, but I didn't realize I was just a hacker until five years ago. I realized this after I started working with some really talented and passionate software engineers. This is what you need to do. Work with people who are passionate about engineering software, and seek their help and advice.

You said that no one is willing to help you. This is nonsense. I have found that people who are really passionate about software development, and are really good, are also passionate about helping others. Keep looking. Those people are out there.

share|improve this answer
    
How can I work with people when I'm not being hired for the same reason? –  Dinesh Venkata Dec 9 '12 at 14:14
1  
Don't know what you mean –  Randy Minder Dec 9 '12 at 20:30
    
On the other hand, you are probably way better than you think you are Randy. I've worked with people who were working in the software industry for ages. Whenever I see their code, it just blows my mind but they still would tell me "I don't know much and I still have insane amount of stuff to learn". –  l46kok Dec 10 '12 at 9:02
    
@RandyMinder : I think what Dinesh is saying is: "How can I work with those passionate and talented people when I can't get jobs with those passionate and talented people because I'm not as good as them?" –  James P. Wright Dec 10 '12 at 16:47
add comment

If you are looking for help and people can see that you are dedicated to the project or your career choice than you will find an abundance of help.

I am a first year University student in Computing and Information Systems and the first thing I did was to get involved in open source. Attempt Meetup groups that have a keen interest in IT (if applicable), read a bunch of good books and practice the new acquired skills. Study and master discrete mathematics, this will provide a basic path for coding more logically. Asking questions should result in sharing ideas, meaning you have the idea or an inspiration but don't know how to put that in practice will almost give you the right answers. Be curious, accept criticism, learn and grow through feedback of your peers, then you will become more skilled, in your coding community.

Best wishes in your pursuit.

share|improve this answer
add comment

Code. A lot. Try out websites like http://projecteuler.net/ and http://acm.timus.ru/ Each has tons of exercises that can help you improve on your logic.

share|improve this answer
add comment

Not the answer you're looking for? Browse other questions tagged or ask your own question.