Germán Cutraro

@germancutraro

Abilities that makes you a better developer

Jackson Brown, like some many others, gift us a great phrase respect vocation and passion: “Find a job you like and you add five days to every week”. In my opinion the fact to be developer is a job that we have to do it with vocation, i mean, the inclination or interest that a person feel inside to dedicate a determind way of life or job. The tech world grow every day, so if you hate learning, you are out…

If we have passion for what we do, why not try to be a better professional every day?

Right now, i will show you a list of topics that will transform you in a better professional. Is important to say, that learning all this stuff is not easy, and is not a fast travel, so we are going to need a lot of effort and perseverance.

The last thing I will tell you is that it is not necessary to be an expert in all these subjects, if you are, good for you, but as a developer if you are interested in learning more you will be better. The more knowledge you acquire your preparation will be better.

Mathematics:

Mathematics is going to give you a logic necessary to program in a better way. Learn about arithmetic, algebra, discrete mathematics, geometry and statistics.

Algorithms and Data Structures:

For me, this is one of the three/four subjects that are fundamental. The more knowledge you have of algorithms and data structures (do not depend on the language) the more efficient you will be when it comes to solving day-to-day problems. Learn about piles, trees, Linked List, Queue, ordering methods, graphs, etc.

Databases:

This is the other subject that, in my opinion is fundamental. Like as developer is probably that you are going to be in contact with a database manager. Study and learn about SQL and NoSQL databases and when to use each one. This theme will make you grow as a professional in an extraordinary way.

Computer architecture:

Know how to a computer works is are going to give you a top picture of how and why things work. Learn how the microprocessor works, hierarchy of memories, hard drives, etc.

Operating systems:

You must know how your operating system works. Basically the O.S is the most important software, learn how it works to have a better approach when developing. Learn about commands, memory management, etc.

Networks:

Nowadays everything is connected, therefore knowing about computer networks is fundamental. Learn about protocols such as TCP / IP, FTP, HTTP, how the Internet works, servers etc.

Paradigms and Design Patterns:

This will give you a better way to develop computer programs, in each language there are different (sometimes not) paradigms and design patterns. Learn about object-oriented programming, functional programming, reactive, SOLID principles, etc.

English:

If you are not a native english speaker, like me (this is a good oportuniy to say sorry if i make any english mistake), know about english is fundamental, especially technical english, because most of the books, documentation, blogs, articles are written in english. Learn to speak, write, read and listen english.

Teamwork:

Today is mandatory to know about version control to work as a team. Learn about Git, Github, SCRUM etc.
If you are in a team, humility is fundamental, you can not put yourself above your teammates, because it is a TEAM. And a team needs everyone helping and learning every day.

Other Stuff:
 ◾️ Ux Design.
 ◾️ Computer security
 ◾️ Robotics
 ◾️ Leave another one.

Some Online Resources:

Mathematics:
◾️ Saylor Academy
 ◾️ Khan Academy
 ️◾️ Coursera
 ️ ◾ edX
Algorithms and data structures:
 
◾️ Introduction to Algorithms
 ◾️ Programming Pearls
 ◾️ Cracking the Coding Interview
 ️◾️ CodeFights
 ️◾ Udemy
Databases:
 
◾️ Database System Concepts
 
◾️ Database Management Systems
 ◾️ Understanding MySQL Internals
 ◾️ NoSQL Distilled
 ◾️ Elasticsearch: The Definitive Guide
 ️◾️ The Ultimate MySQL Bootcamp: Go from SQL Beginner to Expert
 ️◾ The Complete Developers Guide to MongoDB
Computer architecture:
 
◾️ Computer Organization and Design
 
◾️ Computer Architecture: A Quantitative Approach
 ️◾ Computer — High Performance Computer Architecture
Operating Systems:
 
◾️ Operating System Concepts
 
◾️ Operating Systems
 ️◾ Modern Operating Systems
 ◾ Udemy
Networks:
 
◾️ Computer Networking: A Top-Down Approach
 
◾️ TCP/IP Illustrated, Vol 3: TCP for Transactions, HTTP, NTTP, and Unix
 ️◾ Udacity
 ◾ Cisco
Paradigms and Design Patterns:
 
◾️ Head First Design Patterns
 
◾️ Design Patterns: Elements of Reusable Object-Oriented Software
 ◾️ Clean Code: A Handbook of Agile Software Craftsmanship
 ️◾ Functional Programming in JavaScript
English:
 
◾️ edX
 
◾️ Duolingo
 ️◾ Others: write articles, see english courses, read books, talk with people, etc.
Teamwork:
 
◾️ Pro Git
 
◾️ Git & GitHub Tutorial for Beginners
 ️◾ Scrum.org
 ◾️ How to Win Friends & Influence People
 ◾️ Humility: True Greatness
Others:
 ◾️ Teach Yourself Computer Science
 
Network & Security
 ◾ User Expericence
 ◾ UX: Don’t Make Me Think
 ◾ Software Development
 ◾ SoloLearn

I must mention a developer that i admire a lot, that gave me the idea to do this article: Alan Chavez

You have my Github if you wanna follow me, i will thank you!

Thank you 😊

More by Germán Cutraro

Topics of interest

More Related Stories