I have been exchanging e-mails with a recent high school graduate who is working on getting into Software Engineering. I thought I would post one of my recent messages to him here. I snipped out any personal information. If anyone else has any other advice they would like to include please feel free to add it as a comment.
That ProgrammingTutorials.com site sounds really good. Java is a good language to work with. Very flexible and in good demand as a skill today. One thing about programming with Java is it has a memory manager. While this certainly is the trend of modern languages to have built in memory managers, there are some who claim it is better to learn with a language without a memory manager so that you learn the importance of managing your memory. I personally don't think this is as big of a deal. It is more important that you get experience, and if you find your self fighting memory issues then you are less likely to do more programming. So enjoy your Java.
I've never gotten into Java programming much, always wanted too, but never had the time. I have a co-worker who is a huge Java fan. He actually ran the Java users group for a while.
I would really recommend learning about some of the programming methodologies out there. A really popular one is called Extreme Programming (XP). It is actually a combination of a number of practices. A couple sites with information on it include:
http://www.extremeprogramming.org/ http://www.xprogramming.com/
Other related concepts include UML (Unified Modeling Language), MDA (Model Driven Architecture), and TDD (Test Driven Development). TDD is actually part of XP. If you gain a basic understanding of these that will really help you in the future. As software projects become more complex it is more and more important to have a good process.
The important thing about a methodology is that it governs how you finish a programming project. With a well formed methodology you are more likely to finish your projects on time.
TDD is a good practice to start adopting right away. You may have teachers that disagree, but it doesn't hurt to have that experience now. One thing you will learn about methodologies and processes is that for some it is like a holy war. Your best bet is to know enough about them to hold your own if you are required to use them, and find one that works best for you.
JUnit is a framework for use in TDD with Java. You can get JUnit here http://www.junit.org/ While you will usually see TDD referred to with XP you CAN have TDD without XP, but you CANNOT have XP without TDD. TDD is a part of XP, but it can be used on its own. (confused yet?)
. . . . .
You can't compare yourself to others or you will always be looking for someone better or worse then yourself. You need to set realistic growth goals for yourself and then judge yourself based on how well you achieve those goals.
I doesn't take a lot of intelligence to be an engineer, but it takes a certain kind of person. I've known really, really smart people who just were not cut out to be an engineer or software developer. Nothing against them. There are a number of jobs that I am not cut out for either. We are all different.
I have been programming for years and I still get a thrill when I write a program and it works like I expect it to. It is just plain amazing. Next to having a family it is one of the most fulfilling things I know of.
No comments:
Post a Comment