Thursday, August 9, 2018

Become a Software Developer

become a software developer


Tips on how to become a software developer

You’re considering becoming a software developer? Great, you’re in the right place! We’ve got an amazing team of developers here at Advices, and after talking with them, they all told me that it can be really difficult to know how to start, or just where to start when to become a software developer. For that reason, I thought it would be a great idea to write about this topic, to guide those out there that are not quite sure on how to begin.

So I will start off with the first tip: choose how you want to learn to be a programmer. What do you think would be the best way for you to learn? In fact, there are 3 main paths to take. But it all depends of the type of person you are. There is no right answer. Are you usually self motivated? Do you feel like you need to have more flexibility in general? Are you able to self train or do you need it to be all planned out for you? Will you be able to keep a schedule and organise your time? One thing is sure, no matter which path you take and which way you decide to learn how to become a software developer, hard work is what will determine your success. Always think about practice & theory, read academic books but also write code. Build and create.


HOW TO BECOME A
SOFTWARE DEVELOPER.

How to learn programming?
In general. you've got 3 different paths to take. It all depends on your personality and what you would feel more comfortable with. Choose one path.

Path1: Getting a degree. Acquire knowledge regarding software design. path laid out for you.

Path 2: Go to boot camps. Learn about what is important at the moment. Intensive programs. Learn more about how to code.

Path 3: Learn by yourself. You need to be self organised. Build your own program. Very flexible.

Now that you have chose your path, here are a few tips that should help you get started!




Choosing the best way to learn programming



Getting a degree in software engineering or any other related field

Most of the software engineer positions will require a degree. This usually provides you with very important knowledge regarding the design of software. Of course, you’ve got many different options (computer science, computer engineering, software development, game programming, etc.) but my goal here isn’t to recommend you on what to study. The idea is to know if you would rather get a degree or if you would prefer considering other options (that I will mention right after this). The basics you will learn here are quite important and you will have a path that is kind of laid out for you, which can be very convenient for some type of people, and less for others. Keep in mind that all the theory you will learn is good, but it’s not enough. Actually you need to know much more, because there’s a gap between the theory and the practice. One isn’t better than the other, it’s just a matter of how you manage things.

 

Boot camp for developers

A bootcamp for developers is a sort of training program where you will learn things about programming, which are the most important in the market at the moment. You usually learn how to write code and how to build applications. You have to be motivated and really want to do it because usually, boot camps last between 2-3 months. Programs are quite intensive, going up to 10h/day! The thing is that you will learn to code, and very quickly. But you won’t really know much about all the software design, the architecture and how to really make it scalable or solve complex problems. To get to that point, you will have to read, you will have to talk to people, and with experience & knowledge you will be more ready when it comes to engineering.

Become a software developer without a degree, learn by yourself

Finally, the third option is to just learn by yourself. Obviously for that you need to be self organised and self motivated, because it will all depend of you and only you. Many developers just look at the curriculums of others, check out boot camp schedules, programs layouts, etc. and get inspired by that. They end up building their own program based on the research they did. It’s obviously much more flexible but can be frustrating sometimes if you have no one to talk to or to ask things when you have doubts. But then again, you can attend workshops, meetup & Hackathons where you will meet other people that can help out when you have doubts! This is a very good option but as I said, you have to plan it.

After choosing how do you want to learn programming, I recommend you follow those tips on how to become a software developer, they apply to the three previous options.

9 tips on how to become a software developer


1- Learn the basics, get a strong foundation. Learn how to, how to solve problems and how to find problems.

First, you better start off with learning the basics, to get a strong foundation. Learning a language shouldn’t be the first step. You must learn how to program, how to solve problems and specially how to find problems. After that you will be able to use your programming language.

2- Choose a programming language. Don't stick to one language, but you have to start with one. Do some research, ask around and choose one!

In my opinion, you definitely shouldn’t only stick to one language (I mean you could), there are so many to choose! But you have to start with one, and for that, you should read, do some research, check job offers, see what is in demand, check out the communities, ask people around you, and you will then be able to determine if there is one that you like more than others. Here are programming languages that might grab your attention.

New programming languages   

2016 – Ring

  • Ring is a dynamic and general-purpose programming language.
  • It can be embedded in C/C++ projects
  • The supported programming paradigms are imperative, procedural, object-oriented, functional, meta, declarative using nested structures, and natural programming.
  • The language is portable (Windows, Linux, Mac OS X, Android, etc.) and can be used to create console, GUI, web, game and mobile applications 

2015 – Rust programming language (by Mozilla

  • It first appeared in 2010 but the first stable Rust 1.0 was released in May 2015 and the newest version 1.10 was released in December 2016.
  • This programming language is used for writing reliable and fast software, all of that having fun doing it.
  • Rust is well known as a new systems programming language focusing on safety, speed, and concurrency. In fact, reviews say that it is a programming language that runs crazy fast, that prevents segfaults, and that guarantees thread safety.
  • Rust has very similar syntax with C++, complete with curly brackets and keyword-based control flow.
  • It doesn’t support all C and C++ keywords and uses its own keywords which are not found in C or C++, such as match and switch.
  • Rust is implemented in Rust, implying that to build a copy of Rust, you need a copy of Rust.
  • Being a very new language, the community is small, but very helpful. 
  • Rust was the third most loved in the list of programming languages in 2015 and jumped to the 1st place for “most loved programming language of 2016” in the Stack Overflow annual survey.
For many developers, Rust has become one of their favourite programming languages due to the fact that it has “powerful abstractions, no null, no segfaults, no leaks, yet C-like performance and control over memory” or because it is “more approachable, safer and often more productive”.
Day by day, Rust’s popularity is increasing but as it’s very young it makes us wonder whether it will still be that popular in the upcoming years.

2014 – The hack programming language (by Facebook

  • The Hack is an open source programming language for HHVM that appeared in 2014. 
  • Hack lets programmers build complex websites and other software very fast, always ensuring that the software code is well organised and almost free of flaws. 
  • Its type system is called gradual typing, which enables programmers to use both dynamic and static typing.
  • Hack has deep roots in PHP, in fact, it was designed to work with PHP.

 

2014 – Swift programming language (by Apple

  • First appeared on June 2014 and Swift 1.1 was released in October 2014 and the latest version was released in May 2016.
  • Swift won the first place for most loved programming language in the Stack Overflow Developer Survey 2014 and second place in 2016
  • Swift gained a top 20 spot in the The RedMonk Programming Languages Rankings: June 2015
  • Swift was described as “drawing ideas from Objective-C, Rust, Haskell, Ruby, Python, C#, CLU”  which means it combines many of the benefits of modern dynamic languages (for iOS, OS X, watchOS and Linux) with the benefits of a strong type system, in a language that produces fast code.
  • Swift feels familiar to Objective-C but many developers said that Swift is cleaner and more readable than Objective-C
  • Swift also adopts safe programming patterns and adds modern features to make programming easier and more flexible
Swift did not only become famous because it comes from Apple, it also has huge advantages compared to other programming languages; mainly due to its dramatically cleaner syntax and its less low-level juggling of pointers. In 2014, Swift was forecasted as one of the most important programming languages that would define the future of coding.

2012 – Elixir (by José Valim)

  • Appeared in 2012, Elixir is a language that runs on the Erlang VM. It’s a functional language designed for productivity, scalability, and maintainability.
  • In fact, it is considered as a friendly functional programming that is very scalable. It has great development tools used for building, managing dependencies, testing and deployment.
  • Elixir is mainly used to build web applications.
  • Today, huge players like Pinterest & Moz have trusted in Elixir. 
In the last 10 years Ruby and Python have been popular choices for the web. I believe that it is very probable that in a few years, Elixir will be the most popular language for new web projects.

2012 – Julia (by Jeff Bezanson & Stefan Karpinski

  • First appeared in 2012, Julia is defined as a high-level & high-performance programming language.
  • It is mostly used for technical computing, with syntax that is familiar to users of other technical computing environments.
  • Its compiler is great and fast, distributed parallel execution, numerical accuracy, and an extensive mathematical function library. 
  • Julia is largely used in finance services, asset management firms, insurance companies and investment banks firm and helps to avoid rewriting the code as in Java or C++.
  • Julia can produce native code on different platforms and it is fast. Very simple to work with for people who don’t have much experience programming.
Julia is still quite young, but it is developing very quickly and in 2012, was highlighted as one of the programming languages that was destined to make a major impact in the future.

2011 – Dart programming language (by Google)

  • Dart was revealed in 2011 and was designed to make it easy to write development tools for well-suited to modern app development capable of high-performance implementations.
  • It is used to build web, server and mobile applications and for IoT devices.
  • Dart is a pretty fast language, and it has wonderful syntax.
  • It adds nice stuff as user-defined operator methods with lightweight, readable code and lightweight syntax for anonymous functions which is used a lot in web programming.
  • Dart has many similar features of JavaScript but still has some differences from such as:
    • Only true is true
    • No undefined, only null
    • No automatic type coercion with ==, +, and other operators
  • Dart intents to be faster, more regular, and more scalable for programs larger than javascript.
  • Dart natively supports libraries. 
As there was such advantages, in 2011 people were wondering if Dart was going to replace Javascript. However, updates of Google said that they would not be importing Dart—a language that was designed to eventually become the next evolution of JavaScript and that would focus on improving the capabilities of compiling Dart to JavaScript.

“Dart code could also soon be used for microprocessors (like Raspberry Pi) and microcontrollers (like Arduino)”, Hracek said. It was predicted that he future of Dart would be a language designed to be used for advanced Web applications and an alternative to server-side platforms for real-time communications.

2011 – Kotlin ( By Jetbrains)

  • Kotlin is a statically-typed programming language that runs on the Java virtual machine
  • Can be compiled to JavaScript source code or use the LLVM compiler infrastructure.
  • While the syntax is not compatible with Java, Kotlin is designed to interoperate with Java code and is reliant on Java code from the existing Java Class Library, such as the collections framework.
  • One of the main applications of Kotlin is Android development.
  • Kotlin was announced as an official Android development language at Google I/O 2017. It became the third language fully supported for Android, in addition to Java and C++

2009 – Go programming language (by Google)

  • Go was released in 2009 and since then has enjoyed explosive growth in popularity. It took almost four years to stand in the Top 20 by RedMonk firm, Programming Language Rankings: June 2015.
  • Go or Golang, is an open source programming language that makes it easy to build simple, reliable, and efficient software. It is considered as a great language that is improving fast and that showed it can be used for all project sizes.
  • According to some, it is faster and easier to learn and master.
  • The creator of Go said that it was “an attempt to combine the ease of programming of an interpreted, dynamically typed language with the efficiency and safety of a statically typed, compiled language”.
  • Go is also popular because of Docker. Why? Docker is a container startup which has revolutionized how to build, ship and run applications and is all written in Go Language.
Go language is growing a lot, specially because it is neatly designed and is used by Google, which holds a major influence in the Computer science field. Together with Rust and Swift, Go is considered as a language that will have an important role in the future of coding.

I had a small chat with some of my colleagues that are very passionate about back end. Many of them told me that their favourite programming language so far was Node JS for several reasons. First, it’s javascript so every developer can learn it easily. Second, it’s lightweight and efficient. Moreover, it has NPM, a great package manager, making dependency management very easy.

They also mentioned they like Swift, Go and Scala due to the power of each. This post did not mention Scala or other great languages because its purpose was to focus on new promising programming languages since 2009.

3- Join different communities: Being active in the community of your interest is a great way to meet people, share knowledge & experiences.

Joining communities is something that everyone should do. It’s a great way to meet people, share knowledge & experiences. And you can find all sorts of meetups for all the topics that would interest you, going from work methodologies to programming languages. Be active in the community! If you are in Barcelona, you should subscribe to our monthly newsletter to stay informed about workshops & meetups as well as latest expert tips.

4- Practice is key. Learn by doing; build things and improve what you're doing wrong.

You should always practice, work on your own projects, fail, fix it. You have to learn by doing, that’s how you learn the most. You have questions and doubts? You ask other developers, the community, and you then re-practice. If you don’t try to build things and work on what you’re doing wrong, you’ll never get better.

5- Learn to be patient, you will need it. It takes time, practice, and experience to be able to write a good code. A everyone, you will need to go through hundreds of thousands of lines!

When you start programming, you can often feel that you’re no good, that it’s not for you, that you are frustrated, that progress is slow. Well it’s normal. It takes time, practice, and experience to be able to write good code. As mostly everyone, you will have to go through hundreds of thousands of lines before you become a software developer with a high level! You can start off by using the right tools.

There are many options when it comes to which software or platform you decide to use for your daily tasks at work. So I decided to write a nice & robust list of common software development tools that we use in our development department because I thought it would be helpful for everyone else out there.
Trying out a new software takes a bit of time to adapt and get used to it, know how it works, shortcuts, etc. It has happened to any of us to be in a situation were you’re not really satisfied and have to start all over again with another tool. Let’s just admit it, it’s not a great feeling!
If you ended up on this page, it’s most probably because you know how important software development tools are and how they increase the efficiency and productivity of a team. In this list you will find great programming tools we use here at Apiumhub.
You won’t only find programming tools, but it’s still what we use on a daily basis as programmers!

17 Software development tools you need

 

Terminal

We all use our terminal. It really depends what you are working on, some of us use it every day while others could be using it once a week. But at the end, we all use it! The terminal is a command line where you can execute processes. It’s quite useful and makes your job much faster, you can be moving between files, downloading apps (and many other things) with just one command instead of going through the whole menu.

 

Tmux

When it comes to working with various opened terminals in different processes, tmux is one of the most useful multiple means that is used. What is Tmux? It’s a “terminal multiplexer“ that enables you to have several independent terminals in one terminal. So it’s about dividing the window into panes or tabs within the terminal and makes it easier for us to move through it.
If you’re interested, here’s a short tmux cheat sheet that might come in handful.

 

Docker

What docker does is that it provides a software containerization platform that will enable you to package your application/software in a filesystem. This container could be moved and executed anywhere. So basically you will find everything that you need to run: code, system libraries, etc. This means that the software will be running the same and will not depend of its environment.
Why should you use docker? Well, as containers have a different architectural approach, they are more efficient, they can run on any computer, on any infrastructure and in any cloud. Docker enables you to spend more time on creating new features, fixing issues, and shipping software. It also makes it easier to collaborate between developers and system admins because it creates a common framework. Finally, docker will permit you to ship & scale the software faster.

 

Intellij

Intellij is an Integrated Development Environment. An IDE integrates all the tools that you need to develop a platform, so it has a code editor, a compiler, a debugger, etc. What we like about Intellij is that it has an auto completion, it’s really user friendly and therefore easy to use. It also helps to quickly navigate through your code, provide error analysis and offer handy quick fixes. To be honest, it increases a lot our productivity.

 

Slack

Slack is an amazing app that we all use for team communication. It’s great because we can use it basically everywhere (it have a native app for iOS and android), and to be honest since we’ve been using it it has reduced emails sent internally. We have a team for each department but also have one for the whole company! It’s quite practical: you’ve got “channels” which you create for whatever you want (different project, team, topic, etc.) and you can easily navigate between channels. You also have the option to have direct private messages with certain members of your team. The drag and drop is really nice to use, you can share all sorts of files and add comments to them, or tag people. And another great thing is that you can search your full history.

 

Chrome

Everyone uses a web browser obviously, and Google Chrome is one of the most popular out there. I love chrome because it has a clean and simple UI, I found it to be very fast and I love that it syncs my bookmarks on all my devices, there’s a huge library of extensions and add-ons, it fills out the forms automatically and I can search straight away from the address bar. Finally, the developer’s console is very quick and easy to use, and makes life easier for front-end developers.

 

Feedly

Feedly is quite nice to use. It’s a sort of news feed where you can easily read the news that interests you. It’s very easy to use and has a minimalist design and personalised interface where you can organise all your favorite publications, youtube channels, blogs, etc. and you then receive updates if there are new stories and videos that are published! Very practical to stay up to date with what interests you.

 

Jira

Jira was developed for Agile teams to plan, track and release software. Obviously as we breathe Agile, we also use Jira. It helps a lot when it comes to project management. We found it great because it’s very customisable and has powerful features and tools for every phase of the development. In one place, you can manage the team backlog, visualise the work in progress and generate reports.

 

Git

Git is an open source version control system for software projects. When a developer is working on something, he has to regularly do changes to the code until he reaches the last version.
What a version control system does is that it saves every change made, allowing others to collaborate, make changes and contribute. You will also find a copy of the code of every developer’s work. Git enables you to synchronise team work and to work with the code, actualising it at any moment. It’s one of the most popular because it manages very well conflicts (focuses on the file content) and permits you to create ranges of code. I personally believe that if you don’t find GIT on a list of software development tools list, you should absolutely skip the page.

 

Github

Github is a Git repository hosting web. It’s a type of dropbox for software projects where you can find code. When uploading your project, you have the choice of putting it public or private. It’s a great place to network and meet like minded people, share projects, discover others, etc. The community is huge and the project base even bigger.

 

Stack overflow

Stack Overflow is the bible of any programer. It’s not because it’s not on top of this list of software development tools that it’s not one of the most important! It’s a question/answer site with the largest community of programmers. In this library you will find all the answers to your questions, going from how to change the color of a text to how to change the kernel of a Linux. It’s a great place to learn and share knowledge.

 

Sublime Text

Sublime Text is a text editor for source code and we don’t only love it for it’s nice user interface!
There’s a lot of shortcuts that enable you to open files and jump between lines easily. You can change many lines at once due to the multiple selection option. You don’t need to go through the menus, you can just search for what you need. You can also switch between projects easily. The plugin API is strong!

 

Jenkins

Jenkins is an open source automation server, more specifically a continuous integration server. You can this software development tools as if it were the middleman between your code and your build server because it regularly looks for changes on your server and once it’s found, it sends them to the build server.

 

Confluence

Confluence is a software that we use for team collaboration. We can put together ideas, requirements for the product we are working on and documentation to build it better. It’s great because it’s very easy to create projects and everyone can contribute. You can also find company information, so basically everyone stay up to date on the same page.

Spotify

Spotify, our favourite music service. It gives you access to millions of songs, you can play your favorites, discover new tracks, build playlists, really easily. Amazing user interface, you can play music on all your devices, the mobile app is as good as the web app. An one amazing option of the premium account is that you have access to your music offline. Oh and yes ofcourse, we listen to music while working!

YouTube

We use YouTube for almost everything (personal and professional reasons). But it’s quite nice to check out tutorials & tips of other pro’s in the industry, meetups we’ve missed, etc. Also, there’s always a funny video out there!

Skype

We actually use Skype quite a lot. We’ve got a team in Barcelona, one in Vietnam and another one in Andorra, we sometimes work with clients that are in different countries, we also often work remote, etc. We’re very flexible, but we still need to work in teams. So this means that we often have to get on a call with a client or with our team. Skype is great, connection is good, they regularly make some updates and it’s totally free. You also have the group call option which is quite nice!

I really hope you enjoyed going through this list of software development tools. This doesn’t mean that it’s the only programming tools we use or that those are the only good ones, it’s just what we use here and what we believe to be helping us a lot in our daily work as software developers.
If you’ve got other suggestions of software development tools, leave it in our comment section we’re always happy to discover new things! 


6- Have a reading schedule. Do a reading schedule, goals you will need to reach,. Something realistic that you will commit to.

As I said it earlier, reading is important. So have a schedule. Put yourself some goals & objectives that you will respect. I won’t tell you that you have to read a book per week and that that is the right amount. What i’m saying, my idea, is to have a schedule that you will follow, something realistic that you will commit to. Because you can say you would to read book and end up never doing it because you got caught up with other things. But having a schedule makes it more organised and planned.

7- Have a mentor. Find your own mentor: Someone that will help you get a clear vision, answer your questions and to who you will listen.

Having a mentor is key. You will have someone to listen to, that will guide you when you have doubts, that will be here to answer some of your question, that will help you have a clearer vision. Someone to look up for, that can give you some feedback and a different perspective.

8- Analyse yourself

Analyse your work methods. How quick do you work? What are the errors you often do? Why? This will help you increase your productivity and make you aware of what needs to be improved.

9- Look for internships. Do internships: It's a great way to learn by doing and from others, meet people in the industry, see if you like the company, and if you do, work and prove you are worth hiring.

Internships are important. Of course you can become a software developer without it but it helps. You can read all the books you want and know a lot about programming, but the fact is that employers like to know that you have work experience. It’s a great way to learn by doing and from others, meet people in the industry, see if you like the company, and if you do, work and prove you are worth hiring! If you’re already looking for a job, here are our job vacancies, who knows, you might be interested in joining us!

Conclusion


I hope this article was helpful for you and cleared a few doubts you had on how to become a software developer. Obviously there are many other opinions regarding how to start your career plans. As I mentioned, meeting people is very important as you could get other tips from those that are already in the industry. 

If you’re interested, read about the career path of a software developer at Apiumhub and check these interesting articles about developer team performance and team productivity


1 comment:

Lily said...

Your article is extremely useful.Everyday your diary inspire ME nice deal} and helped to develop one thing new like I actually have developed a replacement app spotify premium offline apk
: this is often great and pleasurable.Thanks for the awing posts , please keep updated often.