Help on how to learn as a new programmer
For those of you that want to start programming I came up a list of some items that helped me. This is not an exhaustive list or necessarily the most up to date or correct, but this should help others. Keitaro Taylor I did this for you.
Pick a programming language that has been around for awhile that has the features you want. Here are some things to consider when picking a language:
- Test Driven Development: Try to get into this. When you do Test Driven Development try to focus on “what†(“what†is often a requirement or a feature you are trying to create) you are doing not “how†you are doing it. Also, your code in a test can be just psuedocode (not all the objects, functions, etc have to exist). The main point is for you to flesh out exactly “what†means. Then refactor (change) the code to compile. Next, get your code looking like you want it.
- What is your primary Operating System? If you use Linux, Python or Java might be a good choice. If you use Windows, .Net or Java might be good. These are just some of the examples I’ve worked with the most, not saying this should be the only languages.
- Object Oriented (OO) Programming: While this is just one way to program it allows you to think of your requirements in real world abstractions.
- Functional Programming: When you don’t need a full fledged Object, a function might do very well. Also, you can pass functions around as arguments to other functions.
- Declarative programming: Try to see if you have support like Lambda functions. These are nice because you don’t have to write as much code and is often easier to understand, i.e. like Fluid interfaces.
- Imperative Programming: You always need this because you might be implementing logic that is not captured in a declarative structure. Imperative programming is like writing out “for†loops and performing logic instead of using Lambda expressions. This also helps you think about what the Declarative implementation is doing if you have one.
Try to learn how to design and interact with Relational Database Management Systems (RDBMS) and NoSQL databases:
- Storing your data is one thing databases do well but each have their pros and cons. Learn a little about both and dive into those you see real benefit. RDBMS has been around a long time but is still one of the primary data stores. PostGres or MariaDB are pretty good fits for RDBMS implementations but you don’t have to choose either.
- NoSQL databases can be very handy when you don’t need the ACID compliance of RDBMS and you need to do something easy like database replication across geographic areas or you have very large non-structured data to work with.
- Learn SQL
Learn some diagramming tools to help provide a picture of your architecture:
- Learn UML (Unified Modeling Language) or some other modeling language for your programs.
- Learn about ERDs (Entity Relational Diagrams). I prefer the crows foot notation when determining one to many, one to one, or many to many relationship when showing your RDBMS schema.
领英推è
Learn how to structure your code with a separation of concerns:
- Each layer of your software should have a purpose. For instance, you might have a GUI layer, a business logic layer, and a database/repository layer to represent your separations. There are many ways to do this so please learn by reading some books on the subject.
Don’t do things others have already done for you unless you can improve on those things:
- Pick up books on design patterns. Design patterns are how developers in the past have setup programming constructs to tackle certain problems. CAUTION: New developers tend to over use certain design patterns so be careful.
- For design patterns, I’ve read a lot of books by Martin Fowler and have found him to be very easy to understand. Also after you read some easier books, you might want to read Gang of Four (GoF).
- Pick up books on algorithms. Learn what others have done to efficiently program. This is very critical in interviews because a lot of questions come from here.
- Go through interview questions and do them. They will help you learn great ideas and keep the memory. They will also help you get the next great job.
GUI Design:
- For web GUI design, don’t just pick the latest and greatest Web framework. Make sure you learn about “what†you need to do and if your framework supports it well. Also, your choice is influenced by your framework experience or others working with you.
- Also for Web GUI design, make sure you understand how to interact with your code whether it is on the server, in the browser, or via some other client.
- For desktop applications, if you are working on Windows, a good choice might be Windows Presentation Framework or another Microsoft technology. If you are working with other operating systems, pick the presentation framework that best fits those operating systems.