Some questions about the Solidity language

Hello,
I’m a new programmer and don’t know anything about the Solidity programming language. Is it a good language for the beginners?
How about its future? Could it a good skill for job hunting?
It’s just useful for the Ethereum?

Thank you.

Hi @hack3rcon!

I’ll try to go through your questions 1-by-1.

I’m a new programmer and don’t know anything about the Solidity programming language. Is it a good language for the beginners?

In one of our AMAs one of the Solidity team members, Kamil, responded the following to a similar question (link to his original post):

Solidity is not a big language so there’s no reason not to learn it right away if that’s your ultimate goal. But yeah, the real difficulty is not in knowing the language syntax but in the details like avoiding security problems, being able to optimize your contract to use a reasonable amount of gas and designing your functions well so that you don’t have to change them down the line. If you’re new to programming, it will take some time before you have enough background to tackle these. Depending on how long term is your plan, either focus on getting that background or don’t sweat the details, just try something like https://cryptozombies.io and try to build something for fun even if it won’t be perfect.

To be honest, in many dApps the smart contract is just a small part that’s not updated often. A lot of work goes into the stuff that lets users interact with it. And building that part requires a completely different skillset than the contract. UI design, creating a web or phone app, for one thing. The domain specific thing that’s the whole point of your app for another. In some cases your app might require a full-blown P2P client. If you’re just starting out, you won’t be able to focus on all these things at once so you have to choose the part that interests you the most.

If it’s the contract development that’s the main attraction for you then I’d suggest a low level language like C or Rust. This would give you a good basis for understanding concepts like the ABI, memory/storage layout, inline assembly, the limitations of the stack and all the other low level details you need to know to create a well optimized contract. Just be aware that it’s not very flashy and you might get bored if you’re not a person that likes this stuff. The low level coding does not appeal to everyone.

If, on the other hand, you’d be more motivated by creating something that looks cool and is nice to use, you should not emphasize Solidity all that much and focus on the language that will let you build the app instead. You’ll most likely want to get familiar with HTML and CSS because that’s what is often used to describe the UI these days even if your code is not running in a browser. In addition to that you’ll need a language to implement the functionality. For a web client your only choice is currently JavaScript (or something that can be compiled to JavaScript). If you want a phone app then Java/Kotlin on Android and Objective C/Swift on iOS are the most popular choices. If go with a desktop application you have a wide array of languages to choose from but you have to worry about Linux/Mac/Windows portability, making it easy for users to install it and also selecting a GUI framework (Qt is one option) on top of that. If you go this way you’ll also want to get some understanding of how the current web works because this will give you some necessary context to conceptualize the communication with the blockchain.

How about its future? Could it a good skill for job hunting?

I can’t look into the future but I can tell that currently there is a shortage in good Solidity developers and many jobs available. Of course this can change over time. Currently, my personal opinion is that learning Solidity can be definitely a great skill for job opportunities. Even better if you don’t only know Solidity, but also some other programming language, e.g. see this guide to “Full Stack Ethereum Development”.

It’s just useful for the Ethereum?

Solidity is an object-oriented, high-level language for implementing smart contracts. It is designed to target the Ethereum Virtual Machine (EVM). There are many other blockchains (other than Ethereum) that are EVM compatible. If you’re interested to learn more I recommend reading the Introduction to Smart Contracts section in the Solidity docs.

1 Like