Where to search for a job or an internship !

I was looking for an internship last year, but unfortunately I was not lucky enough to find one. I think one of the reasons I failed to land a job/internship is the places I have applied to. I started to dig deeper on job/internship boards, and I found a quite helpful resources that  I would like to share with you. Here some of the recourses:

Things I have learn the group project

The project is a great exercise to to collaborate and learn new technologies. It gives a sense of what the workforce looks like. This group project is different from other group projects I have participated in other courses. It helps me build good teamwork skills and improve my ability to collaborate with others. 

The project enables us to learn from each other and come up with creative solutions. Looking at someone’s code is a great way to learn new techniques. Throughout the term, we have done two code reviews where we had to analyze the our code and give feedback.  

In these projects, I had to learn new technologies such as Dar and Flutter and apply the best practices. I learned the best practices to use version control which helps me with other projects as well. Our project mentor was quite helpful in our learning journey, who’s also an instructor who teaches a course in mobile development using these technologies: Dart and Flutter. As a group we learned valuable practices that will benefit us through our careers.

Technologies I have adapted recently !

Recently, I started learning to flutter and it became my favorite. Flutter has a lot of advantages. It’s cross platform. It works on iOS, Android, Linux, MacOS, windows and web. It also has high performance. Last month, the flutter team released Flutter 3.7 and a next-generation rendering engine named Impeller. It uses every pixel on the screen which boosts performance drastically. Flutter also has a large and growing community. There are also many online tutorials on flutter and dart. For those who’re interested in learning flutter, I highly recommend the course “The Complete Flutter Development Bootcamp with Dart” offered by Dr.Angela Yu on Udemy ( link ).

Flutter also comes with a customizable and large collection of widgets which makes it easier for the developer to learn and create a great looking interface across different platforms. I have tried to learn other technologies to use for mobile application development, and found flutter to be the best. 

Another technology I have adapted recently is google cloud platform. It took me a long time to learn the service that google cloud platform offers. I have been using it for a while and I really appreciate it. I have been extensively using google datastate and google app engine to deploy web applications and it works great !

The techniques I started doing to write a clean code!

Writing a clean code takes an extra step! Looking at the code I have developed in the past week, I found it difficult to understand the purpose of the code although I did commented  my code. Sometimes, if the code is concise  and names are meaningful, comments can be eliminated because the code explains itself.

Bad example

double functionA(var1, var2) {
return var1 % var2;
}

Good example

double performMod(dividend, divisor) {
return dividend % divisor;
}

One thing I found quite interesting is that a class structure that is too small, meaning that it does not do enough work on its own, should not exist.   “A class that isn’t doing enough to pay for itself should be eliminated” (Martin, 2008, p68). For example,

class Planet {
final name;
final description;
Planet(this.name, this.description);
}

class PlaneterySystem {
final name;
List planets;
PlaneterySystem(this.name, this.planets);
get numOfPlanets {
//return the number of planets in the planetary system
}
void displayPalents() {
//display planets info
}
}

The Planet class seems to be unnecessary; it does not do enough work to stay on its own. It can be replaced with another data structure for example a list, map would work better. The above code can be replaced with

class PlaneterySystem {
final name;
Map<String, String> planets = {};
PlaneterySystem(this.name);
get numOfPlanets {
//return the number of planets in the planetary system
}
void displayPalents() {
//display planets info
}
void addPlanet() {
//add another planet to the planetery system
}
}

Encapsulation is another  important  thing which keeps the integrity of the code. Most of the code I have written in the past did not involve exposing the code to other people as a service. For example when developing a plug-in or an  API, encapsulation can be crucial;private data should be protected and private. 

Code implementation is different from a programming language to another. For example, in statically typed programming languages, variables data type is explicitly declared. For example in C++

String star; 

The variable start is clearly a string.  However in dynamically typed programming languages, variables not explicitly declared and the data type is defined during the run time which sometimes makes harder to understand the code, if the code is not clean and well commented. For example,

Var student; 

Looking at the variable student is hard to determined its data type without looking at the rest fo the code. A good practice would make the code meaningful. If the name is not meaningful, a comment would be necessary !

For example, 

Var studentName ; //is quite clear that the data type of the studentName would be a String as the name suggests 

References

Martin, Robert C. Clean Code: A Handbook of Agile Software Craftsmanship. 1st edition, Pearson, 2008.

Cloud computing

Cloud computing is a hot trend. Many companies have moved to work remotely during the pandemic. The future of cloud computing is very promising and it’s rising. Among top cloud computing providers are – Amazon web services, Microsoft Azure, Google cloud platforms. 

https://www.statista.com/chart/18819/worldwide-market-share-of-leading-cloud-infrastructure-service-providers/

Amazon web services has dominated the market of cloud computing. It was the first entrant to the market. Both Aws, Azure and Google cloud provides a wide range of services at different cost and efficiency. I have personally used Google cloud platforms and I think it’s a great tool to run programs on the cloud especially RESTful apis. Google Cloud Platforms (GCP) provides good documentation of how to use their services. The default service is ready to use, whearse as in other platforms, there are more steps needed to get the services ready to work. For example, to run a web app on GCP, only two commands are needed to get the services up and ready: 1- enable GAP (google app engine ) in the project on GCP. Then deploy the project! It’s also easy to integrate other products of GCP. 

A great way to learn about cloud computing is to read the documentation provided by the cloud provider. I also suggest that you take the course CS493 which is offered online at Oregon State University.

Types of cloud offerings

  • Software as a Service(Saas)

 is a software licensing model in which access to the software is provided on a subscription basis. For example, Facebook, Twitter, gmail is a type of Saas. The  client gets very little direct control over features.

  • Platform as a service (Paas)

Paas provides the programmer with a suite of tools to build applications within constraints defined by the provider. For example, Google App Engine provides set constraints such as the standard environment and operating system that the application will run on.

  • Infrastructure as a service (Iaas)

Provides the programmer with greater control and flexibility. The programmer gets to define the environment, operating system and configure the hardware. Google computer engine is an example of Iaas. 

  • Functions as a service (Faas)

It provides greater level abstraction. The program only needs to write functions which can be triggered by a set of events. There is less work to do by the programmer. 

Comparison of cloud offerings

ServiceGCPAWSAzureService
PaaSApp EngineElastic BeanstalkCloud ServicesPaaS
IaaSCompute EngineElastic Compute Cloud (EC2)Virtual MachinesIaaS
FaaSCloud FunctionsLambdaAzure FunctionsFaaS

Find a job as a software developer

finding a job can be a struggle. I’m have been applying to many jobs and have not yet landed on a job as a software developer. I started diving deep in this topic and found some interesting ideas that can be helpful to land on a job faster as a software developer. The tip here is to contribute to open sources projects.

Why you should contribute to open sources projects

Contributing to open sources projects can build your confidence and improve your skills. By contributing to open sources projects, you get to learn new things and receive feedback on your work. By adding contribution to open source in your resume, can make your resume stands out and get the job that you wanted. Github is a good place to find and contributes to open sources projects.

Where to find open source projects

There are many ways to find open sources projects. You can just google and search for the projects with your technology your’e interested in. Here is a link to open sources projects on Github; there are about 321 projects you can choose from

Start contributing to open source projects

As you start contributing, try to find first timer issue. Here is list of issues(first timers issues) link.