Lessons I’ve Learned in 5 Years as a Software Engineer

It took time to build the desk setup visible in the picture above. Quite similar to how I have developed as a software engineer in the last 5 years. It took patience and hard work to grow and work with various organizations. I have been part of a wide spectrum of projects and technologies along the way and have recently completed 5 years.

Notice that I am using the term “Software Engineer” and not “Software Developer”. According to Udacity, there is a strong separation:

“The terms Software Developer and Software Engineer, contrary to popular belief, are not interchangeable. A Developer knows how to code and may have the technical skills needed to build meaningful products. A software engineer follows a systematic process of understanding requirements, working with stakeholders and developing a solution that fulfills their needs. A Developer tends to work alone. A software engineer is part of a larger team”.

Abiding by the above definition, I call myself a software engineer. In essence, it does not matter so much. All of these roles have loose definitions which for some reason is quite fascinating to me. But the kind of work that I have done and continue to do resonates well with a software engineer. I thought it might be good to take a break and reflect on some of the main lessons I’ve learned in that time that continue to benefit me today.


You and your work should be replaceable

Wait, what?

Did I just say that?

This might sound counter-intuitive but in reality, this is something you should always have in mind while developing software. The software industry is fast-paced and you will soon get a better opportunity that will force you to switch jobs. The person who is going to replace you will thank you if you have designed the system considering that. SOLID principles are solid for a reason. You should always try to abide by them. Also when the system grows it becomes hard to keep track of decisions. That is why It is important to share and write what you know so that the other person doesn’t have to spend a significant amount of time decrypting information from the code.

#advice #technology #programming #work #software-development

What is GEEK

Buddha Community

Lessons I’ve Learned in 5 Years as a Software Engineer

Software Developer vs Software Engineer — Differences: Bogus or Real?

Software Developers vs Software Engineers

Personally, it pisses me off. Every time I see an article on this topic, my emotional bank account gets robbed. They are all about SEO. Inappropriate keywords squeezed into tiny sentences just to get better rankings. No intent to entertain or enlighten the reader whatsoever. Sometimes, such articles can even be outright wrong.

And even though the purpose of this blog post can be to generate traffic, I tried to make it more of a meaningful rant than a lifeless academic essay.

So, let’s see how you feel by the time you are done reading this paper.

Without further ado:

Since there are no proper interpretations of both terms, a lot of people use them interchangeably.

However, some companies consider these terms as job titles.

The general “programmer-developer-engineer” trend goes along the lines of:

  • programmer is someone who knows how to code, understands algorithms and can follow instructions. Yet, it doesn’t go further in regards to responsibilities.
  • developer is someone superior to the programmer. Except for coding, they also do design, architecture, and technical documentation of the software component they are building. They might be referred to as leaders, but not necessarily.
  • Finally, an engineer implies that you are the real deal. You’ve graduated with a degree, have some tech knowledge, and preferably experience… and you are capable of designing a software system (a combination of software components your peons, the programmers, have built). You’re like an overseer. You can see the bigger picture. And it’s your responsibility to clearly explain that “picture” to your team.

#devops #software development #programming #software engineering #software developer #programmer #software engineer #software engineering career

Hollie  Ratke

Hollie Ratke

1603753200

ML Optimization pt.1 - Gradient Descent with Python

So far in our journey through the Machine Learning universe, we covered several big topics. We investigated some regression algorithms, classification algorithms and algorithms that can be used for both types of problems (SVM**, **Decision Trees and Random Forest). Apart from that, we dipped our toes in unsupervised learning, saw how we can use this type of learning for clustering and learned about several clustering techniques.

We also talked about how to quantify machine learning model performance and how to improve it with regularization. In all these articles, we used Python for “from the scratch” implementations and libraries like TensorFlowPytorch and SciKit Learn. The word optimization popped out more than once in these articles, so in this and next article, we focus on optimization techniques which are an important part of the machine learning process.

In general, every machine learning algorithm is composed of three integral parts:

  1. loss function.
  2. Optimization criteria based on the loss function, like a cost function.
  3. Optimization technique – this process leverages training data to find a solution for optimization criteria (cost function).

As you were able to see in previous articles, some algorithms were created intuitively and didn’t have optimization criteria in mind. In fact, mathematical explanations of why and how these algorithms work were done later. Some of these algorithms are Decision Trees and kNN. Other algorithms, which were developed later had this thing in mind beforehand. SVMis one example.

During the training, we change the parameters of our machine learning model to try and minimize the loss function. However, the question of how do you change those parameters arises. Also, by how much should we change them during training and when. To answer all these questions we use optimizers. They put all different parts of the machine learning algorithm together. So far we mentioned Gradient Decent as an optimization technique, but we haven’t explored it in more detail. In this article, we focus on that and we cover the grandfather of all optimization techniques and its variation. Note that these techniques are not machine learning algorithms. They are solvers of minimization problems in which the function to minimize has a gradient in most points of its domain.

Dataset & Prerequisites

Data that we use in this article is the famous Boston Housing Dataset . This dataset is composed 14 features and contains information collected by the U.S Census Service concerning housing in the area of Boston Mass. It is a small dataset  with only 506 samples.

For the purpose of this article, make sure that you have installed the following _Python _libraries:

  • **NumPy **– Follow this guide if you need help with installation.
  • **SciKit Learn **– Follow this guide if you need help with installation.
  • Pandas – Follow this guide if you need help with installation.

Once installed make sure that you have imported all the necessary modules that are used in this tutorial.

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import SGDRegressor

Apart from that, it would be good to be at least familiar with the basics of linear algebracalculus and probability.

Why do we use Optimizers?

Note that we also use simple Linear Regression in all examples. Due to the fact that we explore optimizationtechniques, we picked the easiest machine learning algorithm. You can see more details about Linear regression here. As a quick reminder the formula for linear regression goes like this:

where w and b are parameters of the machine learning algorithm. The entire point of the training process is to set the correct values to the w and b, so we get the desired output from the machine learning model. This means that we are trying to make the value of our error vector as small as possible, i.e. to find a global minimum of the cost function.

One way of solving this problem is to use calculus. We could compute derivatives and then use them to find places where is an extrema of the cost function. However, the cost function is not a function of one or a few variables; it is a function of all parameters of a machine learning algorithm, so these calculations will quickly grow into a monster. That is why we use these optimizers.

#ai #machine learning #python #artificaial inteligance #artificial intelligence #batch gradient descent #data science #datascience #deep learning #from scratch #gradient descent #machine learning #machine learning optimizers #ml optimization #optimizers #scikit learn #software #software craft #software craftsmanship #software development #stochastic gradient descent

E-learning Software Services - SISGAIN

SISGAIN is one of the top e-Learning software companies in New York, USA. Develop Education Technology based, mobile application for e-learning from SISGAIN. We Develop User Friendly Education App and Provide e-learning web portals development Service. Get Free Quote, Instant Support & End to End Solution. SISGAIN has been developing educational software and provides e-learning application development services for US & UK clients. For more information call us at +18444455767 or email us at hello@sisgain.com

#learning development companies #development of software for e-learning #top e-learning software companies #e-learning web portals #mobile applications for e-learning #e-learning product development

August  Larson

August Larson

1625043360

Understanding Gradient Descent with Python

So far in our journey through the Machine Learning universe, we covered several big topics. We investigated some regression algorithms, classification algorithms and algorithms that can be used for both types of problems (SVM, Decision Trees and Random Forest). Apart from that, we dipped our toes in unsupervised learning, saw how we can use this type of learning for clustering and learned about several clustering techniques.

We also talked about how to quantify machine learning model performance and how to improve it with regularization. In all these articles, we used Python for “from the scratch” implementations and libraries like TensorFlowPytorch and SciKit Learn. The word optimization popped out more than once in these articles, so in this article, we focus on optimization techniques which are an important part of the machine learning process.

#ai #machine learning #python #artificaial inteligance #artificial intelligence #batch gradient descent #data science #datascience #deep learning #from scratch #gradient descent #machine learning optimizers #ml optimization #optimizers #scikit learn #software #software craft #software craftsmanship #software development

Alayna  Rippin

Alayna Rippin

1603782000

Interested in Learning to Program? 13 Reasons to Start Now

Software development is something that is gaining popularity at lightning speed with the development of technology. The demand for regular developers is high compared to most other mainstream professions. But, what are the other reasons for learning to code?

Given my experience as a software engineer and Java tutor, I’ve come up with many reasons, and, in this blog post, I am going to share them with you. I hope they will lead you to make an informed decision.

1. Generous Salary

Salary is a frequently discussed subject in a programming environment. Compared to many other industries, software engineering allows specialists to receive a way higher average wage.

To avoid being verbose and prove that you are a future high-demand expert, I will give you real numbers based on data from Glassdoor, the job and recruiting website. The salary rate is the average between the length of service and all geographical data. It also depends on the coding language you are mastering.

  • Java developer — $79,137 / yr
  • Python developer — $76,526 / yr
  • JavaScript developer — $79,137 / yr
  • Go developer — $75,715 / yr
  • Ruby developer — $75,715 / yr
  • C Net developer — $75,715 / yr
  • Swift developer — $75,715 / yr
  • C++ developer — $76,526 / yr

2. Stability in the Industry

Software development is one of the industries that show comparatively stable employment. Unlike many other occupations, computer professional activities face a significantly lower unemployment rate even during a pandemic. See the table below.

Although the industry is stable enough, the technology moves fast, which means the specialists will hardly be able to use all those skills they have now in 2–5–10 years. The good news is that many IT companies contribute to the professional development of their software engineers because using modern tools consequently leads to their business success. So, if you constantly update your skills, you don’t have to worry about losing your job.

3. Professional Opportunities

When you are good at coding, you have more options. You can decide whether you want to join a large company or a small one as a programmer. You can start your own startup or choose to work as a freelancer without being tied to a place. You can most likely get an offer and move to another country for relocation. Everything depends on your goals.

4. Additional Skills to Put on Your Resume

Knowing how to program not only improves your way of thinking, but it also makes your CV stand out among others, even if you’re engaged in the indirect activities, like software testing, digital design, system administration, business or data analyst. Mentioning you are good at programming gives hiring managers a better understanding of your ability to think critically and grasp advanced topics quickly.

#programming #software-development #software-developer #software-engineering #software-engineer #computer-science #learning-to-code #coding