More Techincal Skills for Becoming a Successful Developer
Tags: career, productivity
Published: 2020-07-05 02:19:01

**Subscribe to my email list now at http://jauyeung.net/subscribe/**

**Follow me on Twitter at https://twitter.com/AuMayeung**

**Many more articles at https://medium.com/@hohanga**

**Even more articles at http://thewebdev.info/**

If you want to become a successful developer, you have to learn more than writing code to become successful.

In this article, we’ll look at some technical skills that you need to become a successful developer.

Networking
==========

Most apps in the world don’t work in isolation. Instead, they communicate with other computers via networks, with the Internet being most common.

To learn about internet communication, we have to learn about the HTTP protocol thoroughly.

HTTP is the main protocol for communicating over the Internet. We have to learn about GET, POST, PUT, and DELETE requests and how they’re related to database operations.

They represent read, create, update and delete operations in databases respectively.

Also, we have to learn about request and response headers and what kind of data they can contain.

Lots of times we have to make authenticated requests so we have to learn about how to make authenticated to different servers with OAuth and API tokens.

To transmit data, we often use a standardized format to do that. Oftentimes, we transmit and receive data in JSON format.

Also, we have to learn how to transmit files with other data in HTTP requests with form data.

To do real-time communication, we have to learn about WebSockets. They let us send data back and forth between different computers in real-time instead of making requests individually.

**Automated Testing**
=====================

We’ve to learn about automated testing so that we can write tests to make sure our program is working after we made changes to it.

There’re a few kinds of tests, including unit tests and GUI tests. Unit tests test small parts of our program in our code like individual functions or classes.

GUI tests actual test our program like a real user by manipulating our program within a browser or the operating system.

GUI tests are end to end tests that test the whole system.

There’re also integration tests that test a bigger part of a system than a unit test but smaller than the end-to-end GUI test.

Integration test tests parts of a program like unit tests but may include actions like database manipulation that’s not done with unit tests.

Tests are run in test runners like Jest for JavaScript and JUnit for Java, so we have to learn how to use them to run our tests as well.

**Cross-Platform Compatibility**
================================

Cross-platform compatibility is important for any apps. For web apps, we have to make sure that they work in the most popular browsers.

Also, many apps also have to be compatible with mobile so that we should use to make sure that it looks good on mobile if our apps have to work on mobile.

To make them work on all platforms, we have to make them responsive, which means that the styles adapt to the size of the screen appropriately.

Security
========

We’ve to learn about security issues with apps and common attacks like code injection, cross-site scripting, cross-site request forgery, etc.

Also, we’ve to learn about cryptography so that we can store secrets securely.

Code injection is where we let attackers run code in our system by providing places for them to run malicious code.

Cross-site scripting is code injection attacks on the front end, where attacks can inject their own scripts and run them with our apps.

Cross-site request forgery is where attackers make unauthorized requests as if they’re an authorized user.

With cryptography, we have to learn about symmetric and asymmetric cryptography. With asymmetric crypto, we have to learn about how to generate private and public keys.

**Software Development Life Cycle**
===================================

Since we’re working on developing software, we’ve to learn about the software development life cycle so that we can get used to the development process faster. The cycle consists of the following:

1.  Requirement gathering
2.  Feasibility study
3.  Design
4.  Implementation / coding
5.  Testing
6.  Deployment
7.  Maintenance

Conclusion
==========

Networking is important because apps communicate with other apps and APIs via some network.

Also, we have to learn about testing so that we can make sure our apps work after our changes.

Security is also important since attackers will take any chance that they can attack our systems.

Finally, the software development lifecycle must be learned so we can get used to the process.