IMO... You will never get over that feeling. 75% of the time I open someones code, I realize how little I know, and how many other cooler ways there are of doing something i have done before.... I have been coding for 10 years or so now... still get that feeling. Granted, over time it happens less and less, but it never goes away. Some things are more embarrassing than others, but seriously... DONT WORRY ABOUT IT.
Today I was reading trough some D3 stuff to do Box Plots.... http://bl.ocks.org/mbostock/4061502
I definitely get this a lot. This feeling, combined with being very intimidated by large, existing code-bases are some of my biggest concerns as an incoming college freshman pursuing a BS in Comp Sci. Surely I wont be expected to understand the entire code-base and all its existing functions/calls right off the bat when I lang my first full-time job? However, I'd feel like as someone who would call themselves a programmer I should certainly expect that of myself.
Looks like I'm a bit off on a tangent, but as someone who this post directly applies to, thank you for posting it. Looking at brilliant and efficient solutions to problems that I've previously solved using a god-awful combination of nested control structures was starting to make me feel as if I could never hold a candle to guys already in the industry who seemed to me to have much more intelligence and/or natural affinity for it than I do.
I start my degree program late August. However, these thoughts now give me plenty of motivation to do the absolute best that I can and take away as much as possible from these next 4 years.
Elegance in programming is oft misunderstood. I have seen many beginning programmers balk at the idea. "Why do I care what it looks like as long as it works?" This is a very dangerous notion that will cause problems down the road. Better to start off with the idea of incorporating elegance in your programming.
Elegant code is not only more efficient (usually) but easier to maintain. Maintenance is a large portion of any programmers job, and it isn't always your own code that you will be maintaining. You shouldn't necessarily confuse elegance for intelligence. To me elegance is more about discipline that outright smarts. Make sure you are always disciplined in your coding technique; from the way you capitalize your methods and parameters, to the plurality (is it a single widget or multiple widgets) of the items in question. Many languages have made for allowances in style by being very lax when it comes to spacing, you should not be. Be consistent about how you write your code, make sure that every thing you write looks uniform. Utilize tabs and spaces to help define your structure. Make sure you are properly utilizing functions, do not copy/paste the same logic in multiple places. If the same logic is required in more than one place, centralize it!
One of the most important things I have learned in over 20 years of programming is there is way more that I don't know, than what I do know. I am lucky enough to have a good friend that is also a programmer. We basically started at the same time (he had a couple of years on me). Every time I look at his code I find a new reason to be impressed (sometimes ashamed). Try to never be ashamed of what you code. If you find code that impresses you, emulate it. Re-write and optimize your own code. I dare anyone to have a complex program and think it is completely optimized and couldn't be any better. There is almost always room for improvement.
Find user groups in your area, I promise they are there and usually free to attend. You will probably get to see some new technology at these types of meetings. It is not always easy to work as a programmer and keep learning. User groups are also a great way to be introduced to like-minded folks in your area. You want to be impressed by a coder; I got to chat with Charles Petzold at a user group meeting. I digress...
Kudos to the OP for bringing up the topic; I think it is an important issue. Coding is an art form- if you don't believe that you need to look harder. It isn't easy either. Programming takes an infinite amount of time to master. I did choose those words carefully and am fully aware of what I said. It is better to be aware of that fact early on. There will always be more to learn and always someone else that is don't it better. Try to never be frustrated by the examples of others, just use them and make your own work better. I have never met a real programmer that didn't want to help another out.
Enough jabber from me, I have to get back to work. Trying to figure out why a piece of code doesn't work in this one location where it does in every other install we have.
When you get a job in the real world, you will figure out really quick how little you know. As long as your getting an entry level position, your co-workers can help point you in the right direction. When I first got a job as a developer, I felt extremely under-prepared. One thing to keep in mind is that you also need to get learn their project management systems and source control stuff, as well as time to learn the code as well. Even Senior developers take a bit of time getting settled in.
I personally feel like I come up with some great logic, but code it poorly. Another thing to note... it pretty much takes re-writing the code 3 times before its right. You can write a simple console application for blackjack, and while your coding this you realize there was a better way to do this. Once you finish, you go back and rewrite these sections. Even when you go back and re-write it, another part of your code might make you realize you needed to change the architecture a bit, and so you go back and rewrite it again. This applies to everyone.
|All times are GMT -7. The time now is 04:26 PM.|
Powered by vBulletin® Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
User Alert System provided by Advanced User Tagging (Pro) - vBulletin Mods & Addons Copyright © 2019 DragonByte Technologies Ltd.
vBulletin Security provided by vBSecurity (Pro) - vBulletin Mods & Addons Copyright © 2019 DragonByte Technologies Ltd.
vBulletin Optimisation provided by vB Optimise (Pro) - vBulletin Mods & Addons Copyright © 2019 DragonByte Technologies Ltd.