Category Archives: Week 9

Some Traits of Smelly Designs

In the past, I have talked about Code Smells. However, did you know there is also a Design Smells theory? What’s the difference? Well, according to the CodeOps blog, “Design smells are certain structures in the design that indicate violation of fundamental design principles and negatively impact design quality.”. In other words, the difference between code and design smells is Design Smells focus on the design quality and principals (the architecture of the code) while Code Smells focuses on poor coding practices (what bring the architecture to life). The blog mentions a couple of red flags to look out for the may be an indication of Design Smells that I feel are worthy of discussing. Since I know I have perhaps accidentally or perhaps out of laziness have done some of the thing mentioned in this blog, I figure it can a good learning experience for both myself and the readers of this blog.

Violation of design principals: They use the java calendar class as an example. Not only does it support dates, but it also supports time. Since it has multiple roles, it is in clear violation of the Single Responsibly Principle (the first of the SOLID principals discussed a few weeks back). This is known as Multifaceted Abstraction smell. When you think about it, violating design principals is clearly a bad idea. The principals are there to promote better design and coding, so going directly against is clearly not the brightest idea.

Inappropriate use of design patterns: This one is on the opposite end of the spectrum. Instead of complete ignoring common practices to promote better code, you force it upon yourself. Just because the design pattern could be used in whatever situation you might be in, it doesn’t mean that it should be. Don’t feel obligated to use them if you feel if it will do more harm than good.

Language Limitations: Sometimes languages force you to do thing you don’t want to do, and often times it can be out of your control. Java is used as an example again. Because java does not support primitive types, if you need to take in different primitive types, you will need repeat the code, with the type taken in being the only difference. While I agree that language limitations can promote bad practices, I don’t know if it is fair to considered this to be a trait of a smelly design since unless you were able to pick the language, there is largely nothing that can be done about it.

Viscosity: This is basically taking the easy way out. Sometimes there is a hacky way to solve a problem that may be prone to errors, isn’t modular, etc., but it saves significant time and resources. Because developers are often under a time crunch, they often resort to this. I know I have, but I also know it will come back to bite you. Avoid the hack if possible.

Obviously, there are various other causes of smelly designs, but I hope this short list gave you a good idea of what Design Smells is all about.

Link:

http://www.codeops.tech/blog/linkedin/what-causes-design-smells/

From the blog CS@Worcester – README by Matthew Foley and used with permission of the author. All other rights reserved by the author.

Most Used Programming Languages

https://www.inc.com/larry-kim/10-most-popular-programming-languages-today.html

 

This article lists the top ten most commonly used languages for programmers in the real world industry. It also talks about each one for about a paragraph explaining its strengths and weaknesses, as well as what specific fields of programming use each. Since I am still learning programming, it makes sense to see which ones are going to be in higher demand as i seek jobs after college. Knowing more languages is like having more tools under your belt to solve a problem, and being able to put more down on your resume will set you apart from other candidates.

The programming language with the number 1 spot in the top ten list, is java. Java is mainly used for building server-side applications, video games and mobile apps. It is the most commonly used language because a lot of developers start by learning java first, since it is fairly user friendly. Java excels at being able to run on multiple platforms, as it is designed with the concept of WORA (write once, read anywhere).

The second most popular language is python. This is interesting news to me because I’m not very familiar with python, so now i might just look into it a bit further. Python is a general framework for mostly anything involving coding, you can find it anywhere and write pretty much anything using it. It is credited as the easiest programming language to learn because of its uncomplicated syntax, so if you already know a language its very easy to adapt to python.

Moving a bit further down the list, number five is JavaScript, which is entirely separate from the language of java. JavaScript is mainly used for online web applications. This language makes it very easy for developers to create interactive elements to their website and allows a lot of online customization options.

Also pertaining to web development, number six is PHP (personal home page, renamed to Hypertext Preprocessor). PHP is a very heavy duty language, used for dynamic big data websites, making it a great language to learn for any aspiring web developer. Another great feature is that PHP is a completely open source language, meaning the community has created many free modules anybody can use to perfectly fine tune their program to fit their exact needs.

The last but not least language on the list is C. C is the basic programming language that modern object oriented languages such as java and C# were built off of. The advantage to knowing C is that you have an understanding of the bare-bones of your code, being very close to how the machine reads it. C is more of an academic language, taught in colleges but not very used in the industry, although the knowledge and experience you gain from learning C you can use anywhere.

From the blog CS@Worcester – CS Mikes Way by CSmikesway and used with permission of the author. All other rights reserved by the author.

Most Used Programming Languages

https://www.inc.com/larry-kim/10-most-popular-programming-languages-today.html

 

This article lists the top ten most commonly used languages for programmers in the real world industry. It also talks about each one for about a paragraph explaining its strengths and weaknesses, as well as what specific fields of programming use each. Since I am still learning programming, it makes sense to see which ones are going to be in higher demand as i seek jobs after college. Knowing more languages is like having more tools under your belt to solve a problem, and being able to put more down on your resume will set you apart from other candidates.

The programming language with the number 1 spot in the top ten list, is java. Java is mainly used for building server-side applications, video games and mobile apps. It is the most commonly used language because a lot of developers start by learning java first, since it is fairly user friendly. Java excels at being able to run on multiple platforms, as it is designed with the concept of WORA (write once, read anywhere).

The second most popular language is python. This is interesting news to me because I’m not very familiar with python, so now i might just look into it a bit further. Python is a general framework for mostly anything involving coding, you can find it anywhere and write pretty much anything using it. It is credited as the easiest programming language to learn because of its uncomplicated syntax, so if you already know a language its very easy to adapt to python.

Moving a bit further down the list, number five is JavaScript, which is entirely separate from the language of java. JavaScript is mainly used for online web applications. This language makes it very easy for developers to create interactive elements to their website and allows a lot of online customization options.

Also pertaining to web development, number six is PHP (personal home page, renamed to Hypertext Preprocessor). PHP is a very heavy duty language, used for dynamic big data websites, making it a great language to learn for any aspiring web developer. Another great feature is that PHP is a completely open source language, meaning the community has created many free modules anybody can use to perfectly fine tune their program to fit their exact needs.

The last but not least language on the list is C. C is the basic programming language that modern object oriented languages such as java and C# were built off of. The advantage to knowing C is that you have an understanding of the bare-bones of your code, being very close to how the machine reads it. C is more of an academic language, taught in colleges but not very used in the industry, although the knowledge and experience you gain from learning C you can use anywhere.

From the blog CS@Worcester – CS Mikes Way by CSmikesway and used with permission of the author. All other rights reserved by the author.

The Software Craftsman 3 & 4 Week 9

In the first section of the reading first goes over what software caftsmanship is. It goes on to say that it is about a developer mastering his/her skill and being the best they can be while being professional and responsible. A craftsman will also look for partners to work with that are as professional as they are. It is also about having a good reputation, so projects being worked on are taken very seriously. Being a software craftsman is a lifestyle, not just a job.

The second section of the reading starts off by basically saying it is your responsibility as a professional to keep learning and keep up with current technology. It goes on to say that you own your career, no one else, so you must always be learning and practicing. Some companys may help you learn new things but it is not their responsibility and you would be lucky if they do.

From the blog CS@Worcester – Software Testing by kyleottblog and used with permission of the author. All other rights reserved by the author.