Quite frankly, most programmers enjoy writing code
How can I feel more confident about my programming skills? [closed]
Programming is no stranger to me. I first started with markup (HTML, please don't laugh at me now) when I was 12, and a bit BASIC when I was 13 (I knew a lot about flowcharts, pseudocodes at that point), but then I was admonished about biology in high school and therefore missed "real" programming skills in languages like C, Java, etc. I recorded CS for my UG BE (similar to BS, but much more theoretical). I studied C&C ++ (to a lesser extent) on my own (my Prof was a total pain and the class was full of code jocks (who had already learned it in school and therefore paid no heed to the class and didn't) let They also don't pay attention to smaller mortals like me)) and could make a great add-on or multiplication program (that even affects kindergarten teachers now).
My main problem is that my limited programming skills have always made me feel inadequate and strangled and belittled by the code jocks (believe me, I came across this site a long time ago but was able to build up the courage right now to actually post one question) and were even depressed at times about the inability to do so. Most people say that programming is not necessarily about the language, but about the person's state of mind and the techniques they are using to solve problems / problems. I agree with such feelings, but can I ever achieve such a "state of mind" and if so how should I deal with "programming / coding" and whether there are certain paths and steps that one goes through most to get to the " Zen "to arrive? the coding ". How do I do this? It wouldn't hurt if a saint wanted to mentor this suppressed piece of $ #! ^".
PS I would be forever grateful to any person who thinks me worth their time and as a bonus would mention my first piece of software I ship after them. (If I ever get a ship, ie)
TL; DR: Never really learned "programming / coding", can't solve problems even if I try. Help me!
I would say the best way is to just spend more time doing it (finding the 10,000 hour rule). Find something you want to get done and get started getting it done. Pick something that is beyond your current capabilities but not so far removed that you cannot finish in a reasonable amount of time. If you really enjoy it, you will find yourself repeating this until you are really good at it. If you don't like it, it might not be for you. Try to challenge yourself, you will probably enjoy it.
Send things . It's the only way. Get things done. At work, your own projects, open source projects. Start shipping. These can be very small things, like a bug fix or a minimally marketable feature. Begin easy with shipping . Nothing is more satisfying or confidence-building than success.
Edit: You should Ship It read . It is great.
Re-edit: The experience of doing anything other than shipping is just a failure. I've seen many "senior" developers whose main experience was not shipping things (and making excuses for not shipping them). Real artist ship.
"Problem", "inadequate", "strangled", "limited X-abilities", "degraded", "depressed", "incompetence" in one sentence, all directed at you, indicate a still painful, unhealed wound the past you. If you can find ways to overcome these, it will be very easy to master the programming or such craft. Perhaps reading about other people's resilience here would help. Everyone has difficult times in their lives. If these wounds had not healed, their successes would not have passed. Heal your wound first. Programming can wait for a later point in time.
As for programming skills, how to learn a new language and how to start thinking like others who already program in that language, the first thing I need to do is read up on everything that has to do with that language. When I've read enough, I start writing small programs.
A couple of things you really need to get started:
Endurance: Becoming a good programmer takes time and practice. You have to write a lot of bad code before you write good code - much bad code. Fortunately, you have resources like this website to help you out. As long as you want to learn to code, you'll be able to put together simple games and utilities in no time!
Aims: Set some goals for yourself. For example, let's say you learn how to use STL in C ++ in two weeks. See how well you are. If you take longer, keep track of how much longer it is so that you can do better in the future. I learned this trick from a colleague. he could estimate to the day how long almost every task would take him. This has helped me keep track of my spending on personal projects and keep them from getting out of hand (scope management, as it is called).
Curiosity: You have to be interested and committed. Unless you're the type of person who doesn't tackle problems with a desire to find a solution, it becomes difficult to start programming at first, and debugging can be a nightmare. That does not have to be that way. When you have a problem ask on sites like this one, google your mistake. If you don't know how to implement something, ask! There are always people out there ready to help!
Trust: Be confident about what you want to do and be confident enough to ask questions. If someone shows you another way to do something, don't be defensive or think you got it wrong. Remember how you are taught another approach to solving your problem!
Most importantly, keep a positive outlook, read lots of tutorials, and ask lots of questions, and you will be a happy programmer! Another piece of advice I have to give is to choose a language and stick with it until you are more confident. You have plenty of time to learn a number of languages but when you start out you just work with one.
Good luck! And remember, this should be fun! = D
In evolution it seems that the paradox "the more you know, the more you know that you don't know" applies.
If you are a thoughtful, honest person, you need to accept this fact and learn to deal with it.
Trust, in the sense implied by the question, is a very personal thing that really has nothing to do with any particular skill or methodology.
Even flatter is the feeling described in http://www.kalzumeus.com/2011/10/28/dont-call-yourself-a-programmer/ (section: You overestimate the average skills of the competition due to the crowd that you hang out with always helped me.
I would suggest that you learn to have more confidence in the work done, rather than building confidence in your abilities as a whole. Simply the best way to do this is to write repeatable tests for all of your code. It will work wonders on your psyche.
WhiteFang34 is absolutely correct. As a biologist, I have found that I can only learn to program if I start. Read a few books, have Google and SO close at hand, and "just do it". Your programs will be very simple, poorly coded, and buggy to begin with, and you will get better and better over time. I don't have the time to take coding classes, but I do spend a lot of time coding (because it's fun to do).
Choose a language that allows you to think more about what you want to do and less about how you want to do it. c is not a very good example of this. Try higher languages like Java or C # because you can do more with them, so you'll have the courage to try more and more.
(This assumes, of course, that you are not pursuing a career as a professional programmer. In that case, I would just say that you are going back to school ...)
Good luck and a happy coding
PS: Oh, and you will need a lot of laziness, impatience and hubris
Funny thing is:
The programmer's mind turns not so much about computers, programming language,
Design patterns or algorithms
It's about understanding the intricacies of the real world and how things interact. Ability, abstract to think . Ability, Things to to notice and yourself at You to recall . This inevitably leads to good problem solving.
Implementation, code itself only comes after that - after you have one
have successfully resolved a particular problem in your head.
Confidence is not something you should try to feel about your abilities. Confidence is poorly (probably even negatively) correlated with actual ability. You should work on improving your professional (or cherished hobby) skills, regardless of how you feel about your current skill level.
Trust is something that other people you consider competent should feel about your abilities after working with you or seeing your work.
It's easy: Interested to you for this ! You already seem to find something that you think would be cool to do, then ask all the questions you need along the way and devote all the resources to putting the project together the way you want it . Rinse and repeat and you will be a great programmer without much effort as it was interesting / fun along the way.
Also, find a good balance between figuring out things and asking lots of questions. Especially early on, having others tell you where you are wrong is of great help to help you through the first part of the learning curve. From there, try to figure it out for yourself and if you get stuck after a while, ask a question. What I often do is post a question about SO and then look for the answer, checking the SO occasionally in the process. Sometimes I find the answer first, sometimes it finds me first.
Approach programming with a more positive attitude from learners. Nobody knows everything. Second, find out why you are interested in programming, even if you enjoy it:
- solve problems
- learn new things
- to bend a computer to your will
- something else...
Once you know what you love about programming, you can direct your learning effort in that direction. I am a hobbyist / problem solver. That makes me extremely pragmatic. Algorithms and data structures, computer theory in general, made me fall asleep.
My background is similar to yours. I started building computers when I was 10. Got a little bit of HTML / C ++ as a teenager ... got bored with it ... stopped for a couple of years. However, I never stopped playing around with the computer.
I love programming now. So what has changed? I found my motivation. I started working where I have a plethora of problems that need to be resolved. When I find clever, simple solutions to complex problems, my fire burns.
Finally, don't worry about how others write code, or whether or not it is "right". It is right when it does what you want. Once you start working on a team, standards become important. This is mainly because other people have to interpret and modify your work. A new programmer shouldn't be concerned with design standards.
There is always inertia to overcome when learning new things. The curious programmers I know struggle to find the motivation to keep learning new languages and paradigms. They'll say, "I need a project to try X out." to learn X Some will actually find / invent this project.
Be advised that a career in programming will be a lifelong process of frustration, learning, experimenting, and tipping over at windmills. Until the AIs take over.
Be careful with mentors. Question authority.
By the way, "Zen Coding" is an oxymoron.
You will never feel confident about your programming skills.
The way you describe your skills indicates a mindset that you will never be satisfied with. Have you mastered C ++? Wait, there's Java! Do you know Java? Wait until the parallel programming is finished. Are you proficient in parallel programming in C ++ and Java? Wait, there is SOA! There is OOD! And MVC! SOLID! Functional programming! Web programming! Cloud programming! Mobile programming!
It's about not feeling depressed about it. You have to press a few buttons in your head: your doubt about your skills is pure fuel. You will likely never achieve a satisfactory level of programming skills. As long as it does, you will move forward. The hard thing is to realize it and do something about it, even though there will never be a goal. The longer you can take it, the higher your ability will be.
I used to feel the same way, and it was actually the Stack Exchange sites that trusted me.
I started using StackOverflow to find answers to my questions and one day I saw one that I knew the answer to. I posted the answer, got a couple of positive votes and a comment that said it was a good answer and that encouraged me to look around for other questions that I could answer.
It quickly became an addiction for me to find open-ended questions to resolve, and as time went on, I began to gain confidence in my answers. I no longer had to say "I think this is due to ..." or "That should have an effect ...", but was able to say with some confidence that "This is due to ..." or "That has a effect ..."
I like puzzles, and for me SO questions were like mini programming puzzles, with the added benefit of getting positive feedback if I get the correct answer. If I got a wrong answer, I just deleted it and learned from other people's solutions to the same problem.
So my recommendation would be to go SO and search the questions in the day you are interested in and look for those that you think you can find answers to. There is nothing like people telling you that your programming answers are helpful / good to give you confidence in your programming skills :)
Your brain doesn't like working too hard. Given a choice, it prefers to take the easy way out. That's why it's easy to give up on things when you're trying to tackle something too ambitious - too much to learn, too many awkward details to get it right, too much yak shave.
You can take various measures to counteract this. In the first place is the energy. Try to practice when you are well rested and full, or your brain is literally short of fuel for complex abstract thoughts. The second trick is interest or importance. If you can convince your brain that knowing the Maven is important in order to escape the tiger that is chasing you, you will learn and retain more than if your brain thinks there is a meaningless sideline on the way to it that's what you really want.A third important factor is stretching without overdoing it. A certain amount of effort will make you feel like you have achieved something and will help you find new mental paths without being out of reach.
There is also something to be said for repeated practice. You want enough variation to be novel, but enough similarity to perform the same actions and train them to be.
Another point is that you should try to roll up your sleeves and get your hands dirty. It's easy to spend a lot of time thinking about alternative approaches or the ideal solution to the extent that you never start. This is an example of your brain trying to find the easier way out. Try to recognize when this is happening to you and avoid it by trying to get started. A test or experiment is also good. This also has the side effect of making your brain want the task to be completed or to find a better solution.
Three things to consider: (Or of course not.)
- Work out. What if failure is just an indication that you are practicing? If you stopped learning to walk the first time you fell, you would still be crawling around.
- Play with everything you do. To play is simply to try something and see what happens. Give up judging good / bad results. Just play and see what happens. Stop being tied to any particular outcome, just try something and see what happens.
- What if you're not the only programmer in the world who has ever felt this way?
There are a lot of good comments on practicing here, it really makes all the difference.
You should worry less about "code jocks" and take their advice or comments for what they are. If they are difficult to deal with in one thread, they are likely to be difficult to deal with in real life as well. and really, who has time to worry about their social disabilities?
The end result is that there are thousands of ways to approach programming tasks. Many things boil down to personal preference. For example, I hate reading code with tenary operators. Others love them. Do I think you're right or wrong? It is a personal preference, although there will be a lot of heated debates on the subject.
If someone berates your code for taking 25 lines instead of 20, I'd rather ignore them unless they found an actual flaw in the logic. Sometimes in the real world we just have to just get things done (and who really wants to listen to someone blowing about how intricate ... um, elegant they managed to create a piece of code that should have been done in 10 minutes) . Can you learn from endless philosophical debates about how far to abstract things? Sure ... but there is less and less return if you are put into constant 100% elegance. It's not always as realistic as we'd like to be. Some of my least elegant codes (which I wrote early in my career) that I was embarrassed to share with others saved people time for weeks.
There is a great blog post by Joel Spolsky called the Duct Tape Programmer. It's great read and IMO puts some of your fears into perspective.
I'm not saying write crap code and ignore best practices, but take ranty programmers with a grain of salt.
Ask yourself why you actually don't feel safe. I think it's because you care what your colleagues think, and that's totally understandable. But to really be in Zen you need to clear such thoughts and only compare yourself to yourself over time. Let your interests guide you, study and work hard and you will become a good programmer without all of the psychological BS.
It really isn't the confidence you need, there is less noise on your path to progress.
- How do I get a manager
- Do you like chicken
- What if I only eat beans
- What is the best salad recipe
- How do you take your loneliness
- What causes a dry vagina
- How do IT newbies get a job
- What is a poncho donut floss
- What has helped you overcome cervical spondylosis?
- Count online relationships for personal interaction
- Are Lebanese Caucasian or Arab
- Is it healthy to eat rice at breakfast?
- Is the US a developed country?
- How much are the Rothschilds worth
- Are the Tatars Asians or whites
- How do I buy foreign stocks
- How to deal with a submissive lie
- Are there unemployed engineers
- What decision ruined your life
- What is a tickling medium
- Which swords are suitable for the double exercise?
- Why do young people buy expensive smartphones
- What ruined your dream job
- Is biodiesel a profitable business?