Total beginner guide 101

Hey there guys!

I am on my final year of architecture school, but don’t see myself in the future working as an architect.
I am really interested in switching my career to blockchain developer. This year got pretty much addicted to everything crypto related and have so much ideas I want to develop.
But the problem is next: I don’t know anything about programming and computer science.
Only thing I know is that I would like to build one day dApps and smart contracts on Cardano blockchain, because I find it more superior than anything else on the market.

That being said, I built myself a roadmap for learning. I would appreciate if you would help me with your recommendations and advice for each step of the road.
I plan to learn as followed:

  1. Computer Science, Mathematics etc. theory needed for programming and blockchain development (What books/courses would you recommend me? What should I focus on and what is not that important? etc.)

  2. Blockchain theory and technology (I think I found a lot of quality material already)

  3. Programming (Should I just start learning Haskell as my first language? What languages should I learn along Haskell? etc.)



regarding 1) Emurgo offers some blockchain development courses.

regarding 3) I suggest learning a basic language such as Java or C++.

All best,


Thank you Julien!

So you suggest first C++, after that Haskell and then Plutus? Or can I just start learning Plutus after I get good at C++?

What about the theory of programming before learning C++? I know I should understand very well algorithms and data structures. Do you maybe got any books/courses to recommend in regards to those 2?

If you get to haskell this is the best tutorial I found:


I think the best way to learn programming is by start to build stuff and google every details on the run. If you want it to be funny and entertaining I suggest to start watch the Unity3D tutorials. (But you will need some basic C# knowledge before that.)

I want to chime in to mention that you really don’t need to waste time on formal qualifications like comp sci or maths unless you are planning on joining the IOG engineering team.

My advice is to research the kinds of development you want to focus on, what I mean is:

If you are planning on developing apps for accounting platforms, then your research would probably lead you to learn C#
Same again if you are going to develop for multimedia, like AR, C# is where you are led.

If you want to develop actual smart contracts then you are going to have to learn plutus, tons of resources hosted by IOG themselves that can help.

Then there is Haskell, which I view as an engineering level language that you probably don’t need to worry about, Plutus was developed using Haskell from what I understand.

I personally wouldn’t go down the C++ road at all, in any case start learning vanilla Javascript, it is the foundation that you need and it will also let you start making money on web dev gigs while you skill up.

Build an app that connects to a DB and an external API and you are most of the way there.

You could then move to C# where you will be concerned with strict data types and performance if you want to shoot for that engineering money.

Then the main event, Plutus and the world of functional programming.

Do not waste your time or money on paying for a formal course though, literally everyone in this industry is currently self learning the whole damn thing.


This looks really interesting!

I am a software developer by profession and education. My advice is to be very targeted in your approach. I mean study or focus on only the programming languages you need to write a DApp for Cardano. Time is of essence. So, don’t waste it on learning irrelevant languages. I would build my roadmap focusing on the languages of choice for off-chain code (C#, Java, Javascript, etc.). One or two but not all of them. Next, focus on languages of choice for on-chain code ((Haskell, Plutus, Marlowe). In the process of learning the languages of choice, you will be introduced to common Computer Science constructs and algorithms. Don’t get me wrong, you still have to do some additional research. However, let your research originates from the languages of choice that you are learning. I am a C# full stack (Javascript, SQL, HTML, etc.) developer, but I wished I had learned Haskell first. Haskell changes your approach to solving complex problems. It helps you become a better problem solver not just a coder who applies language syntaxes. First research what languages you need for your potential DApp project. Then, try learning, researching, and coding examples in those languages. Don’t waste your time learning needless languages to appease your confidence for not earning a Computer Science degree.