How can I quickly improve my abilities as a programmer?

My question is broader than just expanding language skills. I wonder what advice someone can offer someone with the desire to know, but the lack of direction. Feel free to move on to the question.

Background: I studied one computer science course in java at my university, but I plan to specialize in computer science and electrical engineering (ECE). My java class was pretty rudimentary. We were provided with a structure and just edited / created several methods and classes to perform a simple task. We made a version of Breakout and created an AI for a simple four-to-one game. Although I am a little familiar with the big O notation, I did not study it in the class (my next CS class covers this). In my ECE introductory course, we also programmed BOE-Bots in PBASIC to compete in a specific hurdle. As an engineering student, I was also introduced to Matlab, although I used it only for linear algebra homework. In general, I do not have much programming experience, but I really loved everything that I have done so far, and I am looking for ways to create a more valuable set of skills.

Steps taken: After you paid more attention to the reddit programming section, I found a link to Project Euler . This summer I was hacked into these problems (yesterday I finished my 42nd solution), but I'm looking for some other direction. I read blog entries and so much. I would like to learn something about php and, possibly, create a dynamic web page, but basically I want to do everything in my power to improve myself and prepare for the working world.

Question: Which direction would you recommend for me? Should I learn a new language? Keep attacking Project Euler? Read some programming books? Start a coding project (I don’t even know where to start)? Wait until school? Learn more about the fundamental principles of programming?

I think that with all the available paths, I am just a little overloaded, and I do not want to fall into a path that could harm my career opportunities. I am also very poorly versed. Your advice will be greatly appreciated!

+6
java
source share
17 answers

Most of them offer more programming. Although this is obviously important, I find it important to understand the environment in which your programs work.

I would study how the operating system works (how they allocate resources for you, how they plan programs and flows), how networks work (routing, TCP / UDP behavior and restrictions, etc.) and some database theories.

I see many junior programmers with excellent language knowledge, but in addition to the sandbox of their program, they do not have a clue how a computer / network allows you to run their materials.

Knowing one of the above will make you a better programmer in terms of how you write your programs and how you understand how they will work (and indeed how to debug them or analyze their failures).

+7
source share

The word quickly bothers me ... I suggest you read Teach programming in ten years - Why is everyone in such a hurry? ~ ~ Peter Norvig

Forgive yourself if you do not set the world on fire three weeks after you sit down at the keyboard ... maybe you are destined to become a late boomer?

; -)

+10
source share

There is only one thing that can improve your skills as a programmer: Program .

Reading books about programming is like reading books about cycling. It will not turn you into a cyclist.

Program something that you will use, and are interested in it. Then just lower your head and do it - reading any supporting information as you go.

+5
source share

Programming skills are just a small part of what makes a successful programmer, IMHO. Being able to read specifications, ask questions and interact with other people to extract the information needed for the program is also very important. Pay attention to your "soft" skills, they will help you in a successful programmer in a commercial setting.

+3
source share

I would recommend you take a multi-purpose approach. Reading books may still interest you, as they do not give you practical experience in developing an application from scratch. Programming is much more about writing code; you should be able to develop applications, read documentation and know how to solve the needs of a client who does not know how to tell you what to write.

If you are still in college, try to find an internship at a software company. You will gain access to people and resources who already have this experience. If for some reason you cannot complete an internship, find and make a friend who is a developer. The impact of someone knowing what they are doing to drop ideas is immeasurable.

Besides the fact that you surround yourself with people with knowledge, you must also attach all of your own to the writing of the application. Choose what interests you, but at the same time try not to complicate it, you do not want to disappoint yourself by writing a boring application or choosing something that is too cool for the learning curve. Remember that the application is the main tool that will help you learn, so it’s normal if it turns out to be less complicated than you imagined, or if the code that you practice is not applied as part of what you’re trying to write .

+3
source share

You definitely need to write code to become a better programmer. If you don’t have a specific idea for writing a program, select an open source program (ideally which you use), contact them and find out what they need to do; to contribute. Correct the error, implement the function ... start small and work your way up. This will help you learn about teamwork, writing supported code, preventing problems, and working on useful tasks. Most of what people write while learning a program is just an exercise code, not actually useful or representative of everything realistic. That is why a useful program is the best thing.

+3
source share

I saw an interesting link for a site called CodeKata that might help you. Essential to quickly mastering your skills is actually compiling code for practical problems that you are likely to encounter in any real work.

+2
source share

Since you already know the basics of programming and obviously have a desire to learn, I would start the pet project.

Nothing made me learn more about technology, language or ideas than about having a fairly sophisticated pet project.

I would recommend, for example, mentioning that you have chosen a project in which you are really interested. Another mind will be very boring, and you won’t understand why you are working on it. I think it would be wise to make the project pretty nontrivial. I always found the less trivial project I was working on, the more I recognized and removed it.

In addition, if you live close to college / university research laboratories on campus, pretty much always looking for summer interns to work with the code in one form or form. Some even pay you. I have been doing this for 4-5 years through high school and some university, and it was a great learning experience.

Obviously, participating in an open source project is a great way to gain experience working with other developers. Check out material on github , sourceforge , bitbucket .

I would only warn you to ask for help and disturb the main developers of the project, which you are very interested in, and you will stick to this. In general, open source developers dedicated to this project are few in number. Their time is really valuable for the community and spending it on those who are just going to fly at night and will never be seen again is a kind of shame.

+2
source share

Besides choosing an interesting project and implementing it from scratch, reading the code of others can also be useful for improving your skills. Scott Hanselman has a good series on reading code: Weekly Source Code

+2
source share

You seem to be good at writing programs and are a worthy Java programmer. Therefore, writing can no longer be your most productive way of learning new things.

As a result, I would say, I’m learning a new language - knowing that more than 1 always provides you with new concepts. As a Java programmer, I suggest C / C ++ because they are very popular, but they fill areas where languages ​​with "high-level controlled" languages ​​are not working, low-level high-performance metal applications. If you learn C # (for example), you will find that you are just doing another java dialect (roughly), and you won’t learn too much.

If you don't like the idea of ​​C / C ++, instead switch to the scripting language - bash, VBScript / WMI or perl or python. they will be different enough to teach you good.

Or do both!

+2
source share

You already know how to program; in order to prepare for a real job, the most important thing is probably not how to program better, but to find out what you need to do is not programming.

At your workplace, you will most likely not be asked to write the “fire and forget” lines of the program, but work as a team on large applications. To do this efficiently, you need to know:

  • How to communicate effectively with analysts, clients, managers and other programmers.
  • How to plan and coordinate work: using version control systems and bug tracking systems, working with written specifications, following the development process - "software development"
  • Perhaps the most important thing: getting used to working with other people's code is third-party libraries, frameworks and, of course, the code of colleagues.

It can also be most effectively studied through practical experience in a real project. For me, a lot of openness worked in a group of about 10 students in a pilot project organized by the university with some industry support. Perhaps you can find or organize something similar at your university? If he has a software development chair, they should be happy to do something like this if they are not already done. Otherwise, joining an open source project is also good.

+2
source share

Record programs to automate everything you do manually on a daily basis.

For example, to-do lists, accounts, checking RSS feeds .. the list can be endless. If you are doing business on the side, write a simple code to help you with this.

The bottom line is:

improve your programming, program !: D

+1
source share

Participating in open source projects has a surprisingly big impact on your ability to develop software, rather than your ability to write code:

  • You can work on code written by others, which is sometimes brilliant and sometimes absurd;
  • collaborate in a geographically distributed team;
  • read the command policy (yay!);
  • understand what it means to have actual users.

to quote only some of them. Some good places to look:

+1
source share

Learn about best practices (such as tutorial videos on windowsclient.net). Take any problem and solve it using the database as input and the database as output. Start a few times. This is as close to the real-world scenario as possible. Read books recommended by Joel.

0
source share

Here is my suggestion with a few prongs:

1) Great work with images. Take a look at the various software development methodologies and see how you follow one of these approaches when programming. Did you do some work in Java, is it a web application, a Windows application, a console application, or something else? Learning a bit about other types may also be useful.

2) Average work with pictures - Have you looked at refactoring and design samples? They can be very useful, but they may require a little more coding experience to find out how they can be useful.

3) Work with small images. Learn the different algorithms and understand the various tradeoffs you can make when choosing different implementations of a data structure, for example. linked lists and arrays. There is a large white paper about algorithms that some use in their study.

0
source share

My multi-tip:

  • Continue training and write the code. Participate in a small open source project.
  • Read the standard book ( here is Jeff's list)
  • Learn from your mistakes or better from the mistakes of others by reading a site, for example www.badprogramming.com
0
source share

Of the 99 ways to become a better developer :

  • Program! and try to diversify your work as much as possible.
  • Find a mentor
  • Be a mentor
  • Learn about various aspects of software development besides code (business software, etc.).
0
source share

All Articles