PDA

View Full Version : So you want to be a programmer?



pureIso
04-06-2011, 02:52 AM
Understands programming is problem solving.
The better you get at solving problems in general, the better programmer you will be.

A beautiful mind.
An ability to quickly, clearly understand how the data in the system is interacting with each other.

Hobbyist
solves problems of all kinds in his spare time. Learns to apply the different ways

Loves to develop software
Painters love painting, writers love writing, musicians love making music..

Constant learner
never knows enough. Instead of "I don't know", the first thought in their mind is "I want to know how".

The biggest talent is the talent to learn. For example, I don't judge on what languages somebody knows - what is more important is that they are actively learning and trying new things. Playing with new tools. Regularly.

It is very easy to find somebody who is very very good at what they do today, but can't translate those skills to something new. Unfortunately, this business moves frighteningly quickly at times.

================================================== ============
First, the ability to break a problem into small, manageable parts. A problem can be anything- from a feature request for a product to a complex algorithm. The idea is a programmer doesn't get lost in the complexity. They can break the problem into small, manageable pieces which can be done incrementally or concurrently with a group of people. This should be easy to measure- if you can understand a complex problem then it's broken down enough.

The second quality is the ability to deliver a "thing" to a "user" efficiently and with a positive result. A user can be another programmer, a product owner, even a business. The "thing" can be an class, framework, a website, or even an answer to a simple "Is this possible?" question. If you're impressed with the end result in an expected timeframe it's good. If it's an overkill solution or it took too long, then the problem wasn't broken down correctly! Why shouldn't you be impressed with a software product?

Third, a developer must have vision which is aligned with goals. Foresight is extremely important. Systems are organic and must grow. If something is done quickly and fancy, but is full of bugs or can't be changed, then shortcuts were taken and a bad product was built. If something was done that doesn't get the group to where they need to be, then the programmer isn't really helping anybody. What positive value is being added for the end result? This should be explicit and visible.

To gauge these qualities quickly (as in an interview) simply do some role playing games. Propose a complex problem and see if it can be broken down effectively. Ask how it will be done. See if long term problems can be solved or the system has extensibility points for growth.

djinn1012
07-05-2011, 02:41 PM
i want to be ur lakie lol will you teach me seriously i got years if u got time

reapermech
07-05-2011, 07:02 PM
this is great to know since im starting some classes in computer design and programming later this year

pureIso
07-05-2011, 09:35 PM
College
College is a great place to learn about fields, but technology is not one of them. Don't get me wrong, I'm not saying that I don't think school is important; on the contrary, I DO think school is important, but not to learn programming. What you should really focus on in school is learning to work together with others on projects, in particular learn how other people approach problems and how they differ from your approach. College also forces you to do things you might not normally consider doing; for example, I remember when I took 'Compiler Design', I thought to myself "Boy, this is about worthless! I'm never going to need to do this!", and guess what, most of the time I was right (although I have actually had to do this in the real world)! BUT, what I did learn is how to solve a completely different set of problems, and this knowledge translates to MANY different applications.

One other advantage that you get from college is networking; I'm not talking about that ethernet cable in your dorm room, I'm talking about meeting other people who share your interests, and will one day be working in the same industry as you. The programming industry in many regards is much like the film industry; when someone becomes involved in a cool project, they invite their friends to participate. If you don't know them, you're not going to get invited (hired), and college in many cases is where you meet them. Another aspect than cannot be overlooked is the whole education side of things; I mean, c'mon, they teach quite a bit more than tech, things like history, psychology, etc... And while these may not SEEM to directly relate to programming, you would be surprised at some of the sources of inspiration I've had

Where should I begin?
First off, I would recommend getting your feet wet before making any life decisions here; as I said before, this line of work can be fun, but it can also be really miserable, so don't just jump in. The first thing to do is go to your local bookstore, and buy a book on programming... But there are soo many books, and what's with all these different languages? I would recommend sticking with one of the following languages: C or C++, Visual Basic, Pascal (Delphi), or Java. Stay away from any others, since they are probably not going to give you the same level of flexibility that these will, plus these languages will have the largest amount of books to choose from. But whatever you do, don't just pick a language now! We're just testing the waters out, right? We're not writing the next Microsoft Office, so this isn't important yet; and regardless of what anyone says, those languages are all very similar, and very powerful, with commercial applications being written with any of them. Ok, so we need to select a book, now here's the method I recommend...

Pick out 2 books using each one of the languages I've mentioned above, and find a place you can check them out in the store. Go through each book, and just flip through it, looking in particular at the programming examples (source code) that is listed. Once you get a rough feel for each language, go on to the next book; make sure not to spend more than a couple minutes with any one book. After you've finished this, pick the book that you have the best feelings about; whichever language that book details should be the one you start out with. Now, go back to the bookshelf, and pick out a couple books just covering the language you've chosen... Take each book and read part of the first chapter; does it make sense to you? If not, toss the book and go on to the next; if so, then jump about halfway into the book, and read the beginning of a chapter from there - does it still make sense? Don't try to understand exactly what they're trying to explain, but see if it still seems to make sense to you. If so, then you have yourself a winner; just keep eliminating books using this method until you have one you're really happy with, and get ready for some reading.

Reference: www.analogx.com