Category Archives: Software Development

TheCurrentStateOf, SD 01110

CS SERIES (4)As someone who will be graduating within the next year, I’m always interested in what software development is currently like. Ekaterina Novoseltseva uses some 2018 statistics and presents interesting facts about software development through Apiumhub—which is a software development company based in Barcelona. The data in this article comes from a collection of over 300 answers from different countries around the world; starting with the challenges in software development.

The information collected on programming languages was interesting to me as Javascript, Java, and Python are the top three current primary programming languages for those companies. On top of that, Go is used around 6% and of the companies who are considering using another programming language in the next 12 months, Go is the second on that list. I like seeing this data to know what is currently popular and may be an upcoming popular language as this is constantly changing. Novoseltseva points out how about 37% “of respondents said they’re not planning to use any new programming languages in the coming 12 months” and it makes me wonder whether it is because they do not want to change their ways or if they are already so on top of the updates that they do not need to for now. It also makes me wonder how companies in the New England region are doing in terms of exploring new languages or ways to keep up to date on their projects.

Although I knew of the current trend(s) for the most part, I was surprised to see what Apiumhub had to conclude on software outsourcing. It shows an infographic where of the people who did outsource software development fully or partially, only 10.06% of them were “absolutely satisfied” and 51.57% were “somewhat satisfied.” Based on what I’d been hearing of people being worried of getting all the tech jobs outsourced, maybe the scare isn’t as bad as people led it on to be. I mean of course, the total majority of responses from that fall under “satisfied” but it was not fully satisfying—this would probably be best for quick, short-term fixes or work. Which shows how there is still more to people-to-people communication in the company’s direct workforce and it puts my mind at ease a little more.


Article: https://apiumhub.com/tech-blog-barcelona/interesting-facts-software-development/

From the blog CS@Worcester by samanthatran and used with permission of the author. All other rights reserved by the author.

if (two < one) {

CS SERIES (2)According to music artists, two is better than one. When it comes to designing code that has two parts, this may not be the case. In Max Kanat-Alexander’s article, he explains how he has a personal rule of needing to know how generic his code needs to be. He describes it as if he were designing an audio decoder and started out with supporting WAV files and then later needed to add support for MP3 files. His solution was for what he only needed on its own instead of having to copy and paste the common parts for the format; he emphasizes that “it’s not just two implementations that are bad, but also two locations.” Another rule Kanat-Alexander has for helping this stay consistent is to create code well enough to ensure you would ideally never have to go back and change it if another part of the code has to be modified.

I found this information useful because I believe that developers are always striving to be the most efficient coders they can be. In order to do so, using two of Kanat-Alexander’s methods would help them plan to code more effectively. Just imagine the potential headache of realizing you have to go further back to code you thought was finished and then even further back when you notice a change on top of what you originally needed to make. This will probably affect how I will work in the future as it will make me sit back and think beyond the task at hand. It would allow me to save room for potential add-ons without them crisscrossing, which would allow me to skip out on having to do more rework.

At the end of the article, Kanat-Alexander notes that the reader does not have to take this as a “hard and fast law of the universe” and I appreciate how he tries to help the reader but does not try to push them to do it his way. In terms of the subject, I do not think my thoughts have changed too much as I do want to learn how to code better and I would like to continue finding out about people’s coding structure process.


Article: https://www.codesimplicity.com/post/two-is-too-many/

From the blog CS@Worcester by samanthatran and used with permission of the author. All other rights reserved by the author.

Testing, Testing. QAn You Hear Me?

CS SERIES (1)To kick off this series, I wanted to introduce why Software Quality Assurance (SQA) testing is important not only for testers to understand, but for developers as well. From my experience, I’ve become familiar with manual testing and exploring different types of automated testing for web applications. I wanted to know a little more about how being a good developer also includes being a good tester and found an article on SimpleProgrammer which reveals the importance of knowing how to test.

John Sonmez, the founder of SimpleProgrammer, says that he “owe[s] a large amount of the success [he] ha[s] had in [his] career as a software developer to [his] background in testing.” I can see why he feels that way, as using just a little more time to double-check what you have created could save you even more time in the long-run. For instance, if something you have spent hours working on seems complete and you do not double-check it and pass it on to a QA team, you have to wait for someone in QA or a testing platform to check it. That could take anywhere between minutes to a few days or more. Once it is QA tested, maybe a bug is found and your task falls back into your hands again.

Could the scenario above been preventable? Yes and no. It is a true that “you can never find all the bugs or defects in a piece of [theoretical] software and you can never test every possible input into the [theoretical] software” but you can try your best. This doesn’t necessarily mean having to do your own end-to-end regression testing through the entire software each time you add a minuscule feature but you should thoroughly check what you have changed and the features directly connected to it.

The article continues to describe common testing forms and what they each mean for developers. Sonmez supports the Agile cycle of software development and describes it in the article as well.


Article: https://simpleprogrammer.com/software-developers-know-testing-qa/

 

From the blog CS-Series by samanthatran and used with permission of the author. All other rights reserved by the author.

The CS Series || Intro V2

Processed with VSCO with hb2 presetHey guys! This site is going to take a slight change in direction for the next few months; it’s my last year of college so your girl is going to feature some CS content for classes.

Stay tuned for more!

Samantha Tran

P.S. Please excuse my double-intro.

 

From the blog CS-Series by samanthatran and used with permission of the author. All other rights reserved by the author.

The CS Series || Intro V1

Processed with VSCO with hb2 presetHey guys! This site is going to take a slight change in direction for the next few months; it’s my last year of college so your girl is going to feature some CS content for classes.

Stay tuned for more!

Samantha Tran

P.S. Please excuse my double-intro.

 

From the blog CS-Series by samanthatran and used with permission of the author. All other rights reserved by the author.

The Software Craftsman chapter 11 & 12

Chapter 11 is titled “interview anti-Patterns”. This chapter talks about the wrong processes to go about conducting an interview as a developer. They should avoid doing things like being a smart-ass interviewer, using brainteasers, asking unnecessary  questions, and trying to seem superior in knowledge. After we’ve worked hard to find a qualified candidate, the last thing we want to do is steal the opportunity they have to shine. We want to convince them that our company is the best they can work for, because a good developer will also be looking for a company that is best for them.

Chapter 12 talks about the cost of  low morale and how unmotivated people seem to represent that very well. Unmotivated people tend to destroy companies because this can change the motivation of other workers significantly. I believe that the attitude of the people you work with can have a huge impact on the way you work; they can either motivate you or suck the morale out of you. In this chapter we learn that people become like that and that is mostly due to companies beating the passion out of developers. Manager and agile coaches are the last people to motivate developers because they are demanding and punctual about everything. The only person that can motivate a developer is another developer. Not just any developer, but a software craftsman that every team needs.

 

From the blog CS@Worcester – Adestin by adestinyblog and used with permission of the author. All other rights reserved by the author.

The Software Craftsman Chapter 15 & 16 Blog (5/9/2017)

Growing up, I always thought you had to choose between making a difference in the world and having a career that pays really good. As it turns out, after reading this book, you can have both; as a software craftsman! I really enjoy reading this book throughout all of its chapters. There was definitely a good amount of valuable information but it was written in a way where a lot of important concepts were constantly echoed throughout the book; such as being passionate about what you do, always leaving the code you work on cleaner than when you first started and of course, realizing that its bigger than just you.

Reflecting back, I used to have the mindset of never wanting to share or collaborate with anyone else because I felt as though it was my code, and my code only. Now, I just chuckle at how ignorant and unknowledgeable I was. If there was only one concept I could retain from these readings, (not including passion) it would be the ideology that software projects are not just about us and our egos. To become better software developers (and better people overall) we have to think about the bigger picture. We have to make sure that the foundation of the code we create and work on is sturdy; that it will not come crashing down when we, the current developers, are no longer around.

I think one of the reasons why people shy away from legacy code is because the previous developers has created such a crappy foundation of code that we are afraid of moving or changing any piece of code due to the fear that everything is just going to come crashing down. But, it doesn’t have to continue to be that way. We have the power to change that way of thinking because we have the power to change the way we code!

From the blog CS@Worcester – Tan Trieu&#039;s Blog by tanminhtrieu and used with permission of the author. All other rights reserved by the author.

The Software Craftsman Chapter 7 & 8

Chapter 7 addresses a number of technical practices such as TDD, pair programming, SCRUM and their usefulness in improving our software delivery process. These agile methodologies are about delivering value to customers in the shortest time frame possible. Even though these practices are very effective in the software development process, it is difficult to convince manger to adopt them. Many companies do not use these practices because they fail to identify why they need them, when to use them, or simply does not believe that they are effective. It is not easy to get developers to adopt to these practices because there is a learning curve and it will take some time to understand. To figure out which practices to use, first we must know what area we need to improve and what we are trying to achieve.

Chapter 8 is titled “The long Road”. This chapter is perfect for aspiring developers because it talks about what to look for when choosing our careers. It summarized the career requirements into three things autonomy, mastery, and purpose. Having a successful career is not easy; we must figure out where we want to be and work hard to get there. We must treat every job as an investment to craft the career that will makes us happy. And if you are among the ones that do not know where they want to be, this chapter has a lot of suggestions to create options that can help decide the next step. Things like attending conferences, blogging, studying new things, and networking with other developers and business-people can open a lot of doors. Our career is important and carefully crafting it is the best way to reach where we want to be.

From the blog CS@Worcester – Adestin by adestinyblog and used with permission of the author. All other rights reserved by the author.

The Software Craftsman Chapter 5 & 6

Chapter 5 of The Software Craftsman titled “Heroes, Goodwill, and Professionalism” essentially covers the communication between the client and the programmer.

There is a limit to satisfying the clients needs. From their perspective, they are not aware of how difficult and elaborate the process for a software project is. They usually have a demand and expects immediate and accurate results because after all that is what they pay us for. However, how we handle situations like this in this field is what determines our level of professionalism. It is our job to communicate with our clients and say “no” when they have unrealistic requests. We need to be upfront on what is possible, what is not, and set realistic deadlines so we can have enough time to work with no pressure. If we fail to communicate, then we end up looking unprofessional.

Chapter 6 is title “Working Software” and it is about keeping the quality of our software as polished as it can be. We must never sacrifice quality for the sake of meeting a deadline; that is bad practice. Our software must be written well enough to adjust to changes, otherwise we will become “hostages of our own software”and that will hinder the business progress. This makes perfect sense because as technology advances, our software needs to be able to adapt quickly. Adding new features should be implemented into with ease if we have good quality software. I like how Sandro relates code to a garden. He mentions that ” with basic and regular maintenance, the garden will always look great but if we neglect it, even for a short period of time, it will require much more effort to make it look good again”. I think this comparison accurately describes how we should treat our code. The same thing can happen to our code if we neglect it; it will deteriorate or loose quality and will require more work to regain quality.

 

 

From the blog CS@Worcester – Adestin by adestinyblog and used with permission of the author. All other rights reserved by the author.

The Software Craftsman Chapter 13 & 14 Blog (5/2/2017)

Thanks to chapter 13, this is now going to be my quote of the week (maybe month): “bad tests are worse than no tests at all”. Am I the only one that’s blown away at how beautifully true that is? I hope not.

Anyways, I enjoyed the author’s take on creating an environment and culture of learning within the workplace in this chapter. It’s quite simple really; people tend to be more passionate and driven about their work when they don’t feel as though it is “work”. Remember as a kid how you always hated to do chores or clean your room? Well, if you hated doing those things, will you be excited or looking forward to having to do it every single day? Probably not. Now take that example and apply to developers in the workplace. If developers don’t like or enjoy writing tests, most likely they are not going to look forward to doing it. Even if they end up having to do it, you can almost guarantee that they are going to put minimum effort into it. Creating a culture of learning fixes this problem because if you can get developers to love what they are doing or learning, they are going to love doing their “job”.

On a smaller side note, chapter 14 was a fun chapter. It describes all the possible types of developers you might encounter that opposes the idea of new tools or practices and ways of going about convincing them to give the new tools/practices a chance. I feel as though I am going to subconsciously assign all my colleagues one of the titles mentioned in this chapter when I get my first real-world job as a developer (hahaha)

Random but relevant ending remark: You know, in a strange way, it kind of feels heroic to be a software craftsman. They’re like the Superman of Software Development…

From the blog CS@Worcester – Tan Trieu&#039;s Blog by tanminhtrieu and used with permission of the author. All other rights reserved by the author.