96

Don't worry about meeting some ridiculous concept of "skill" so commonly heard in such statements like: All programming languages are basically the same. Once you pick up one language well you can pick up any other language quickly and easily. Languages are just tools, there's some overarching brain-magic that actually makes the software. These statements ...


87

There's a few things to note about getting into programming. First off, you will never know everything about programming. You'll probably never even come close to knowing a fraction of everything. And if you ever get to thinking you know something, something new will come out and what you know will be obsolete. So, you need to be OK with constantly ...


45

There is no "correct" order to reading these books. They each focus on different aspects of software engineering. Clean Code - focuses on coding in the small. How to write classes and functions. Code Complete - focuses on the processes of software engineering. Pragmatic Programmer - focuses on working within a team producing software.


45

You learn how to write programs by writing programs. But you gotta start small, man. public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); } } From there, begin building... public class HelloWorld { static String test = "This is a test"; public static void main(String[] args) { ...


41

Based on my experience, I would rank the following activities in order from easiest to hardest. Reading good code Writing bad code Writing good code Reading bad code The above ranking leads to 2 conclusions While it is easier to write code than reading bad code, it is easier to read good code than write your own code Writing bad code is easier than ...


34

Troubleshooting existing code is a super way to develop as a programmer. If the code is bad, you will learn the impact of the mistakes they made, and maybe avoid some of them when you are doing the designing. If the code is good, you will learn something about how to make a maintainable application. You will also learn to deal with the complexity of a ...


34

Well at the risk of sounding slightly cheesy: Ideas are timeless. By this I mean that the notion of a depth first search is goodness knows how old, but still totally relevant. Likewise, things that aren't totally platform and technology dependent tend to have a longer lifespan. If you learn things like Algorithms Data structures Paradigms and Concepts ...


29

The thing with learning drastically different languages isn't about learning the languages, it's about getting exposure to different approaches to problems. Tools for the toolbox as it were. One thing to note is that Haskell isn't particularly old and it is actually a very good candidate for someone only familiar with mainstream languages. Even a very old ...


26

Some hints: Learn other languages. Then compare them to the language(s) you already know, and try to look at the ways you can improve your coding skills in those languages by using things you learnt from other languages. "Free your mind" before learning those new languages, and don't try to simply clone the concepts of one into another. Read code. I don't ...


26

Perfectionism is a poor developer's excuse for not getting the work done. Larry Wall, in the glossary of the first edition of Programming Perl, famously notes: We will encourage you to develop the three great virtues of a programmer: laziness, impatience, and hubris. In the second edition of the book the terms are further defined: Laziness: The quality ...


24

My friend was a frequent flyer for many years, but he always wanted to be an airline pilot. One day he took an opportunity to fly Boeing 747. After about six months he felt like giving up: he thought he would be good at flying airplanes, but this experience of the last six months made him rethink his decision. Of course I'm kidding: I do not have such a ...


23

Stay Fit: Get Regular Practice Practice makes perfect. The more code you write AND read, the closer you get to enlightenment / mastery as a programmer / developer / software engineer / guru / ninja / craftsman / hacker / buzzword-of-choice. By not only coding and reading more, but also trying our new ways of writing code, the more open-minded you (...


23

Well, I don't know if this book will help you, but when I worked myself through that book about 20 years ago, it definitely improved my programming skills (independently of any programming language). And I guess especially a Java programmer will get some new insights he/she won't get by sticking only to Java. Joel Spolsky 2005 wrote a nice article about ...


23

First, despite the way your question is formulated, there is no end to any studying, especially not in our field, where new things pop up faster than you can read about them. That being said, when you want to improve, there are the following categories that I'd consider. For the most benefit/ROI you should choose something from your weakest area of course. ...


22

You may not have chosen the best path to learn programming :) Seriously, 3D modelling is a very complex domain even for an experienced programmer, so having that as your first project is going to be hard. I would suggest getting some good books and working on simple projects on your own. If you enjoy working on those, then keep plugging away and you will ...


22

I would say there are two types of things to know in regards to SQL (this is true of many technologies really), there are specific technical things like joins, subqueries, unions, etc which you understand or don't, and then there's things like database design and data modelling which has a gradient of skill in it, like art. You get better over time with ...


21

You are on the right track to improve your skills, and it's understandable that you are uncertain about the reliability and enterprise-readiness of your code. This is a normal process to go through for a junior developer, and your interest to improve is very important, as it is a key to one day becoming a rock-star developer. As a reference to learn best ...


20

No, well-written documentation is not a good enough reason for learning a language. Badly written documentation is a good reason for not learning one. There are four reasons to learn a language: Because it may be a useful tool in your career Language is a tool. One use a language rather than another because of its benefits in a given context. The fact ...


20

Now, in object orientation we have lots of additional things. No you don't... It's not just a matter of thinking about an algorithm, but analysing requirements deeper, writing use cases, figuring out class diagrams, properties and methods, setting up dependency injection and lots of things. None of those things are necessary for practicing object ...


19

Don't try to push OOP, it will only make things worse. Not because OOP is a bad idea in general: it's not. But because it seems that whoever is responsible for that hairball code not only lacks the tools to avoid these problems, but also the experience and, more importantly, the motivation. People who have a desire to write clean code will do so in any ...


18

As one of the most experienced applet developers1 willing to help on public forums (e.g. the Oracle forums or Stack Overflow), it saddens me to see new students 'tossed in at the deep end' to learn how to make an applet. The reasons are multiple, but first, I'll look a little at the history of applets and why applets were ever considered a good idea ...


16

Don't let it stop you, but don't build it for yourself either. There are very difficult and extreme restrictions on PCI compliance, which is the technical hoop you have to jump through to store credit card information. Do yourself a big favor and use a service like Authorize.net or Stripe that lets you store all of that sensitive data on their servers and ...


16

I come from the ancient era of "we had to code all by ourselves" and that is what I still do. So, I do not know these new "next-generation" 3D engines/environments where you just apply a bit of code here and there and it miraculously turn into a game. (no, its not really like that, just the way I see them) That is why I am offering my opinionated answer for ...


15

Don't take this too seriously, but ... create file name app.py with the following content: from flask import Flask app = Flask(__name__) @app.route("/") def hello(): return "Hello World!" if __name__ == "__main__": app.run() assuming you have pip (python package installer) installed do the following: $ pip install Flask $ python app.py * ...


15

Great question! It's important to realise that you have multiple learning curves to climb. Just so that you don't think that you are only learning a programming language. You are doing quite a bit more than that. You are learning about ... The tools that you use to write code. Your development environment, the editor, the debugger, your compiler. There are ...


15

A Quick Foreword Learn By Doing: Knowledge vs Know-How There's a huge difference knowledge and know-how. It's a common mistake for new learners to think that because they can "understand" a program as they read it, they actually understand the reasoning for the program being written the way it is. And the only way to get to that second part is to practice....


14

Yes, it is definitely worth understanding how Makefiles work. It might not be relevant to you right now (because you are using an IDE that generates them), but the chances are that the knowledge will be useful in the future. By "worth learning" I mean, should I drop everything and learn how to write them before continuing to learn c++? Frankly, that is ...


Only top voted, non community-wiki answers of a minimum length are eligible