What is SOLID?

I know what you are thinking and no not the state of matter but in a software engineer capacity. This is an acronym that stands for the 5 principles of software development.

Single-Responsibility Principle

The first principle is called the Single-Responsibility principle, which says that a class should only have one job. So if you have a class that does some sort of calculation and then you have several other methods that print out the calculation in multiple formats then you may want to extract those out into there own class. That is because that class has become something that now does two jobs instead of just one.

Open-Closed Principle

The second is the Open-Closed principle, which says that objects should not be able to be modified but should be able to get extended if needed. Another way to put this is that it should be easy to modify the behavior of a class without actually having to modify the class itself. An easy way to achieve this is to create an interface for a class and then pass that class into another object.

Liskov Substitution Principle

The third is the Liskov substitution principle and it has a very formal saying to explain what it means. The short version however is that every subclass or derived class should work as a substitute for their parent or base class. This means that any derived class shouldn’t modify the behavior of the parent class. Essentially you need to have a very generic abstract class that you inherit from. Take an example like having a circle class and a rectangle class. Both of these classes need to inherit from a generic abstract class called shapes. This will allow you to implement things specifically for each class without interfering with the other classes. It also allows you to create new shape classes easily.

Interface Segregation Principle

The forth is the Interface Segregation principle, which states that a client should not have to implement an interface or depend on a method that it does not use. So if an interface is needed to be implemented by a class and it forces that class to actually implement a method that it will not be able to actually use, for whatever reason. Then it may mean that a new interface needs to be implemented that does not have the method.

Dependency Inversion Principle

The fifth is the Dependency Inversion principle, which states that a high level module should not depend on a low level module. Instead the modules should depend on abstractions. This means that when thinking of the interactions between the high level module and low level module it should be thought of as an abstraction. This allows for decoupling between the two modules.


These five principles are easy to grasp in concept and can be very helpful when coding. The hardest part is to remember to use these principles as you code and sometimes things will slip by but that is what refactoring the code is for.

What is a Full Stack Developer?

This is can be a common question to people new to the world of development. It actually just has a simple answer, it means that someone is working on the full range of technologies when working on a project. Specifically the developer is not just specialized in one area like the database, front end (HTML/CSS), or just some language like Java. So a full stack developer will be familiar with all of those technologies and how to use them. Usually this will mean that a full stack developer will make more money then someone who just does front end work. It is important to determine what kind of work that you like to do when finding a job. That is because it would be more beneficial to only work in the front end of things if that is what you prefer then force yourself to work all over the technology stack. Don’t forget that this does not mean a full stack developer is not specialized in any area. They may have a specialty in database development but have a good working knowledge of all the other areas. That is about all there is to the question, “What is a Full Stack Developer?”.

What is an API and Endpoint?

For most developers these concepts aren’t that complicated and are widely used in the project they are working on. However, I do remember that when getting my computer science degree there was no mention of either of these in any of the courses. The only time it was actually mentioned in a class was when a student was giving a presentation, but it never came up in the coursework. This is fine because a degree isn’t supposed to teach you everything, but it is still something to look into before you get a job because you will need to know these things. An API is a set of methods for interacting with an application. Essentially it is a way for you to access information about an application without having to know how the application works. This is done by giving people access to endpoints in an application. These endpoints are essentially URLs that access a certain method that a developer has set up in order to access information from the application. So you can use an endpoint to get data from an API and then use that data in whatever way you need. It is a really simple thing to learn, but can be easily overlooked. If interested then you can click here to get a little more in-depth view of an API.

Also if you have any questions just ask them in the comments.

The Writer’s Glove

If you are a developer then you have probably ran into the problem that your hands get cold after a long session of typing. Keeping your hands extended from the body can make it hard for some people to keep heat in their hands. It is very hard to find a solution because to type efficiently you need to have your bare hands, or at least your bare finger tips. Although if you try those gloves that have no fingertips on them then you quickly realize that this is not the perfect solution. The best way to keep your hands warm would be to have gloves that cover your hands fully but still allow you to type efficiently. This has been accomplished by “The Writer’s Glove”, which granted was developed for writers in mind, but we developers are writing technically. These gloves cover your entire hand, but they are thin enough that you can still feel the keyboard. They are made out of 100% silk, which makes them feel great on the hands. It does take a few typing sessions to get completely used to the feeling of typing with them on, but it becomes just as easy as typing without them. They also make a pair of the gloves that allows you to use the touchscreen of your phone, which means you won’t have to constantly take them off to deal with any notifications you get on your phone. You can get them from here and also supply them with the code SoftwareUpdates to get a discount on your order today.

How long does it take for a Associate programmer to get up to speed with a project?

This is a question that many young programmers ask themselves and can be very shocking to find the answer is that it takes months before you will become even somewhat familiar with the code base that the company has you working in. It truly takes a determined person to be a computer engineer because you have to deal with constant failure and learn that it is alright to fail. You can’t know everything off the bat and it takes time to learn all of the nuances and logic behind what made the project you are on so far. Sadly when your teachers told you that reading other developers code would be the things that you do most they were completely right. It is a good habit to get into before you get an actual job because the main way that you can get going on a project is by reading through that projects code and understanding what other people have written. This is easier said then done and can be very frustrating, especially at first when you have no experience. This however will get easier the more that you do it, so after your first project then the next few projects will get easier and easier until you can get up to speed with the project without much effort at all. So don’t give up and keep at, because you will get it eventually.

Is a computer science degree worth it?

Some people are wondering if it is even necessary to get a computer science degree nowadays, especially with the cost of college steadily increasing. Even big companies like GOOGLE are getting rid of the requirement of having a degree in order to get a job with them. However, I still think that getting a degree can be beneficial and even justify the cost of the degree. This is because most of the time when you learn to program you mainly are just learning how to use a programming language. This is true for code bootcamps as well since they only give you a crash course in how to understand to use a programming language. Usually the bootcamps use a language that the companies that they have contacts with use. This makes it easy for you to easily get a job with that specific company. A degree makes getting a job in any programming language easier. A degree in computer science however will teach you much more then just a programming language. A degree will teach you the problem solving skills that are needed to tackle a lot of the problems a software engineer faces in their daily job. It will also teach you the fundamentals of programming that will allow you to pick up any programming language easily. This means that what you learn when you get a degree in computer science will allow you to keep up with the field in the long run and not just get you a job at a local company that will be hard to get away from without the necessary training again. This basic knowledge from a college is something that can’t be overlooked when thinking about what you want to do with your life. This does not mean however that it is wise to go to a very expensive college and be a hundred thousand dollars in debt. It would be better to find a college that is in a reasonable price range and get the degree for cheaper.

But I haven’t used the knowledge from my degree on the job!

This is a common statement from many people who graduate from college and then get a job as a software developer. The statement is actually true in some way. That is because all of the things that you do in college are mainly building blocks and learning how to solve problems, while the job requires you to solve much more difficult problems with the latest, or most outdated, technologies. This means you are tackling a very different thing in the real world then you are at a college. That is because college is not supposed to prepare you for the job like a bootcamp. College, like I said before, is to prepare you to tackle a wide variety of problems by giving you the foundation to problem solve fast and learn new technologies easily. This means you probably won’t see a lot of direct correlations between what you have learned from college and what you will do on the job.

A Programmers Lifestyle

There are many health concerns when it comes to having a job as a programmer. This is because at their job they are very sedentary. Even if the job provides a stand up desk  a programmer can easily start having health issues. It is very important to have some sort of hobby that you do outside of work in order to stay active. Even if that hobby is going for a walk in a park every other day, which will also help keep you from experiencing mental exhaustion. Also make sure to keep your keyboard at the edge of your desk which will force you to not rest your wrists on the table. This can lead to wrist pain. With keeping up with those two habits it makes things a lot easier on you in the long run. Although there are many more things that can be done to stay healthy. One thing is to avoid caffeine as much as possible, even though it may be tempting to drink a ton of caffeine in order to get extra work done it is probably better to just get some sleep and try in the morning. This also goes for food, it is tempting to eat pizza most of the time since it is easy but getting into the habit of cooking your own food will do a great deal for your health, and your wallet.

Summary of a healthy programmers lifestyle:

  1. Have an active hobby
  2. Use proper technique when typing and position your keyboard accordingly
  3. Avoid copious amounts of caffeine
  4. Get plenty of sleep
  5. Cook your own food

If anyone has any more suggestions for young programmers to stay healthy then leave a comment.

EagleTec Mechanical Keyboard

I finally got my hands on a mechanical keyboard that has blue switches on it. Along with a nice blue backlight. I have only been using the keyboard for a little over a week now but I wouldn’t want to go back to my previous keyboard. I don’t really know what I have been doing all this time, or I guess I should say I don’t know what I was settling for before getting this keyboard. I really like these blue switches, even the noise they make and they do make a lot of noise with this keyboard. This is really not a work keyboard, unless you have your own office. They keys feel really nice and the top of the keyboard is made out of aluminum with a nice brushed finish it looks like. The bottom of the keyboard is made of a hard plastic that feels pretty durable. This keyboard only comes with two different backlight settings, which is static and breathing. It also has an easy option to shut off the backlight so it doesn’t bother you at night. It is also a cheap compared to a lot of mechanical keyboards at around $40, so you don’t go broke just for trying out a mechanical keyboard.

Click Here to get it on amazon.

Razer BlackWidow Ultimate Stealth Mechanical Keyboard

This is the keyboard that I have been using recently for work. I would say that this is a nice keyboard that is true to its name. The stealth part of this keyboard is very accurate and the keys make no noise. This may not be what you want if you like that click noise, but in a work environment no one should have an issue with you using this keyboard. The one thing that I do not like about the keyboard is that all the settings for the lighting effects are in Razers own program that you have to download and not just programmed into the keyboard directly. Also the lighting effect that is default is the breathing effect, which I am not a big fan of this lighting effect. The keyboard itself seems sturdy enough and the keys feel really nice. It does have a usb port and a headphone port on the keyboard itself, which comes in handy sometimes. Although, I am the type that likes more click noise and pressure on the keys. Overall this is a nice mechanical keyboard.

You can get the Razer Stealth Keyboard on Amazon.

What is the salary of a software engineer?

This is a big question for any field that you go into, but it is a question that a lot of colleges like to answer. Most colleges will tell you that you will automatically make $70,000 as an entry-level software engineer anywhere you work. However compensation varies greatly depending on where you are and what company you work for. This means that like any other profession depending on where you want to live can be a big factor in compensation. Although having more compensation may not always be better, especially if the cost of living is much higher. There are other benefits that a job will offer and those must also be taken into consideration when determining what kind of salary you get. Depending on your health you may look into the jobs healthcare coverage before the salary. This is because healthcare coverage varies greatly from business to business and the cost from procedures and tests can outpace the amount of money you make easily. The next most looked at benefit would probably be how much paid time off you get. Some places will offer almost none when you are first hired and some will offer 10 or more days. Tech companies now are also offering many different benefits in the workplace. This may include have a game room at work with ping-pong, foosball, and many other games to play on break. They may also have free lunch or just claim they have the best culture to work in. This just means that compensation is not always straight forward and depending on your situation may mean making less money for better benefits or if you are in your prime with no health risks then going for pure money may be the better fit. So to answer the question the salary of a software engineer varies depending on the type of job you want. Just know that there is probably a job out there willing to pay or give you what you want.

(Although if they try to get you to work for less than $50,000 anywhere then you may be better off finding a different place to work.)