Learning to code faster and better, 12 tips

Young programmer typing in a laptop

Becoming a better programmer

what if You can become a better programmer. I believe you are able to learn to code faster and more efficiently, just by having the right approach and instructions.

I started programming years ago. Out of need. I started working in a web design team using PHP. My (amazing) boss considered writing code in your Windows Notepad not only acceptable, but the proper way. I had to learn, fast.

Later, after switching roles, I wanted to do things for my org that were not possible with the existing tools . Like data analysis of BIG files. Or manipulating existing data to get insights that were not available anywhere else. I wanted to build or deliver results, so I had to learn how to ship those.

These are some tips around learning how to code. Things I have found useful to improve my programming skills. I have always been thinking long and hard about how to become better at learning. I enjoy learning. Even with the constraints of having to do it in a fast paced environment, with little margin of error.

A quick caveat, most of the references and links are for learning JS. I am going deeper into solidity now. The examples that come to the top of my mind are for JS as in the last years I have spent more time with that stack.

The joy of learning also comes from being successful at it. Understand that you need to some extent to perceive your progress and improvement.
Our ego is at the centre of all we do, learning something that goes nowhere is usually not fun at all. We need to feel the car is moving towards the right direction. This is not about reaching a particularly far destination, but about progression. Tracking your progress and measure it.

Ask what are the best books about what you are trying to learn and devote time to read them. In my case, “javascript the good parts” and “JavaScript: The Definitive Guide”.

Being grateful about having to do pull reviews. This is probably my number one, having a great person working with you and reviewing your code is amazing. Try to be that person for someone else. Learn how to do a useful pull review.

Get the best possible teachers. If we are talking about courses, go for the best possible ones. Sometimes more expensive does not mean necessarily better. Ask around. Disclose what are your learning goals (it does make a difference). Filter recommendations. You have access to the best universities of the world, and top-of-the-line educational material from MIT, Oxford, Harvard, Caltech, University of Helsinki… no excuses. Learn to code for free, or almost free, is possible.

Some people out there are creating epic content for a fraction of what costs a traditional education.

Study how other people code. Looking for people setting the standards for your industry, first-rate individual contributors. Check their GitHub projects, learn about how they structure stuff, and what approaches they have to their code. What do they use? what do they avoid?

Learn to handle your own frustration. As with anything important, it takes effort. The important thing is the long game. You are not gonna become great from the very start, but you can target to improve your skills and polish your craft. Not giving up on becoming better, being okay with sucking at first.

Ask questions, no matter how dumb they sound. Getting feedback and filling the gaps in your knowledge is the way to go.

Take notes of your journey. Every day, write down your coding experience. What you find, what is useful, what is not. It can be a simple folder with notes. Eventually, you’ll find the same blockers down the road. By taking notes about it, you’ll keep a backlog of solutions, it will help you debrief situations.

Use your notes actively. Do you know what is even better than writing down everything you learn? remembering it. I use Anki to create flashcards and help my brain retain and recover what I learn. It does make a difference.

Learn from your code. Allocate time to go back to your code and do a post-mortem exercise. Be disciplined about your approach. Sometimes we do not have all the time we would want to plan. Once things are calmer, find time to go back and think about how would you have done it better.

Test yourself, push your limits. What are they asking for the kind of positions you are targeting? What do you need to learn to build whatever you need to exist? how can you do X with your code?

Learn by doing. Practice, practice, practice. Smart, dosed, spaced repetition… Lots of research around the best ways to learn something (an obsession of mine), go look for it and apply it to your field.

Effective learning is something I care about deeply. A recurrent topic in my conversations and my tweets. I have never stopped learning. I see myself as a perpetual learner. I love having those epiphanies about concepts. Magic connections that happen between fields that theoretically are not connected at all.

I cannot stress enough it enough. Having a structured approach to your learning can make a huge difference. Having systems in place, avoiding waste energy and increasing focus. It all will help you overcome your challenges and learn at a faster pace. Do you have your insights? share them!

Sense of Agency

Sense of agency

Some concepts are pretty powerful. In the sense, that just being aware of them provide higher odds of succeed in life. Some are non obvious or even counter-intuitive. One of those is the sense of agency.

So, what is sense of agency and why is it important to have a strong sense of agency? it refers to the feeling of control over actions and their consequences. It is the feeling of being an agent, of a connection between our actions and the outcomes, when not explicitly thinking about it. Experiencing control over the outcomes. There are different theories that explain how it works and how we measure it. My take away for you is that its impact is transformational.

Your sense of agency is intrinsically connected with your context. In my case, moving from working in a big tech company to operating independently. As consultant and founder, provided a higher and deeper sense of agency. I had it before, I am not saying you can not have leverage in a company. My point that the output of your leverage; The extent of impact. As well as your perception of control are influenced by your environment.

It is literally one of the secrets of life according to Steve Jobs, “When you grow up you tend to get told that the world is the way it is and your life is just to live your life inside the world-try not to bash into the walls too much, try to have a nice family life, have fun, save a little money. But life-that’s a very limited life. Life can be much broader once you discover one simple fact. And that is everything around you that you call life was made up by people that were no smarter than you. And you can change it-you can influence ityou can build your own things that other people can use.”

It is important for you. It is paramount when you work in a product development team. Instilling it in your team mates. Nurturing the feeling ownership in the different stakeholders. The impact they make, it is the way to succeed creating great products. It took me some time to learn this. How crucial is to create space. To encourage providing inputs for less vocal members of the teams. Cultivating that sense of agency and autonomy. For all the participants in the production process.

There are relatively extensive research around it from a psychological point of view. The mechanisms in play as well as the different evolutive motivations for it. One of my favourite concepts!

A Quick intro to DAOs challenges

DAO challenges

In the next essays I will write about Web3, in particular DAOs. I’ll share some of my findings and takes. Developed in the last years, doing consultancy. As well as being a somehow hardcore user of blockchain-based tech. Somehow I thought it needed a bit of context. At least for a part of the audience with a shallow experience around most parts of the web3 universe.

DAOs are particular entities, that face new operational paradigms. Some of the ones any traditional organization has. Some new and exclusive from this kind of organization. This will be a quick review of the challenges they face. There is a complete DAO stack that is surfacing to solve those particular problems. I’ll touch base in the next weeks about analysis of specific areas and solutions in the landscape.

I like the way new situations create new types of problems. From time to time you have the opportunity to work on challenges that have a little background. You are an explorer in a new land and I find that appealing to say something.

My belief is DAOs will be WAY more impactful down the road than we can foresee now. Perhaps not in the actual form. In an evolved shape, resulting in overcoming today’s challenges. By learning about those challenges. About what kind of solutions are being developed around them. We can get a solid head start on understanding the future.

If you are familiar with what DAOs are, please, skip this part. I want to give a quick overview for someone who does not know what they are, providing a bit of context. Pretty hard to not know what DAOs are, but there is a world outside of our little bubble.

What DAOs are

DAO stands for decentralized autonomous organization. In essence, a group of individuals, aligned with a shared purpose. Using web3 technology to register its nature, rules and operational logic.

Smart contracts are at their core. They use blockchain-related technology to operate. Making use of web3 financial and operational instruments (cap table, treasury handling, tokenization of shares, voting mechanisms, ID management,…).

The autonomous part comes from it being a flat hierarchy org. Not connected to a central organization or institution. In theory, the members of the DAO. The theory implies fewer management layers. A learner structure. Value-based and with the consensus of its members being a driver of every workflow.

The first proponents of a decentralized structure go back to 2016. DAOs are relatively new, aren’t they? ergo a work in progress.

What challenges DAOs face now

They have a particular set of operational challenges. It will vary depending on what the DAO’s targets are. A social DAO does not have the same needs as an investment DAO. They will share some commonalities, regardless of the nature of their goals. Some of those challenges are:

  • Governance and decision making
  • Setting goals in a decentralized way
  • Handling the shared cap tablet, shared treasury, taxes…
  • Allowing participants to capture value in a healthy way
  • Keeping coherence and do not diverge from the original targets over time
  • rewarding contributions without encouraging pavlovian behaviours.
  • Incentivize engagement with the project, rewarding participation
  • Aligning resources with goals effectively
  • Onboarding and effective engagement of new participants

Defining business logic without a central structuring is challenging. DAOs are not only subjected to new dynamics and tensions because of their nature. They interact and live in the real world. They have to run and deal with trad organizations and structures. I find it extremely enticing to follow its evolution. Seeing new forms of organizational structures popping up is absolutely exciting.

Keep tuned if you want to know more about it. Something you’d like to know in particular? please, hit me up!

Unstoppable Sites, how do they work

unstoppable sites in the web3

I have been playing this weeks with deploying decentralized applications. Doing a bit of analysis on the landscape. What are the existing options, the challenges they face and the stage of the different parts. What would be a decentralized web3. Moving some of my notes into articles.

How do they work now?

Let’s take a step back and check how the web2 works. You have a DNS, Domain Name Service, a service able to translate IP addresses into human-readable addresses (i.e. “yahoo.com”). When you ask for a site, your ISP handles that request. Routing it to the entity you are looking for and retrieving the packages said entity sends back to you (data).

All this game of interactions. Between your computer, the application you are using, your ISP, servers, etc, is abstracted. To create a more user-friendly experience.

Here you have a nice graph (not mine) of how all that works. It is of course a simplification, we have built a lot of infrastructure over the years to deliver a great experience (CDNs, containers,…). You get the idea.

How do decentralized domains work then?

How do web3 works? We have a similar problem. For starters, wallets have long, unfriendly addresses. Hard to memorize, share and prone to typing errors. We have Unstoppable Domains and ENS, Ethereum Name Service, whose job is to “translate” those into something easy to type and remember. Both allow multiple wallets in different coins (ETH, BTC, LTC, DOGE). As Well as add different records (content, discord,…). Allow you to point your domain to a site.

There are differences and similarities around how the registration process works. Price models, how ownership is handled, etc, but will not go there. The main difference between both services is their business model. ENS has a yearly payment structure, while UD has a one-off payment model. Not fundamentally relevant, but worth remembering.

The main caveat right now is that you need to use applications that work with said domain extensions.

The ICANN has not introduced those domain extensions in the standard. Regardless of how you host your site, your audience will still need a browser supporting your “special” domain (Brave). Alternatively, extensions that help you load crypto-related domains. It is very unlikely they will be incorporated natively in the future. Their creation and ownership are completely out of the control of the ICANN. A strong barrier to adoption, although not a definitive one.

What is the promise?

The promise is to have a decentralized web. Meaning your site infrastructure is not dependent on private entities, but organized in a way that your content would be theoretically more resilient. Your data cannot be taken down, disappear or be regulated.

This would enable to have always available information, reliable. Escaping the censorship in authoritarian governments. We all know the dark side of said promise as well, the dark web, the uncontrollable spread of fake information… Aspects not limited to a pure societal rejection, but also having strategic value. Being susceptible to manipulation according to particular interests. Weaponizing information is not new, but the scale and reach are.

Another aspect to take into account is that complete anonymity is not possible. Even not providing your personal information when registering. You are still leaking details about your wallet, IP address, etc.

The elephant in the room is they are still pretty much centralized. As they are now at least. First, you need the central organization (ENS, Unstoppable Domains) to provide the domain. You also need a said entity to allow the association with a particular coin or asset. Second, you still need a third-party browser or extension to route to your domain. Meaning that, as example, Brave could tomorrow decide to block your particular site and no user will be able to easily reach your content.

Great teams are working on providing the other (more significant) significant parts of the equation in an almost decentralized shape (message routing, container resolving,…). Making it possible running on-chain applications. I promise I will write more about all the work done by the IPFS and the Internet Computer protocol.

5 great ways to increase your understanding of your customer’s path to conversion

Path to conversion

Understanding your customer’s path to conversion is tricky. Conversion in the ample sense of the word. Conversion is the completion of a particular goal we need our users to accomplish. Some things that I find useful in the process of understanding said path.

Nurture your beginner’s mind.

The moment you write a line of code you are trapped. Or mocking a UX interface, or design a prototype. Pick your poison. You become a prisoner of your views about the product/service/feature.

There is a difference between being opinionated about your product. You better be. And being open to exploring possibilities and options. The best product people I know can play both. Looking at things with a beginner’s mind will help you understand potential blockers. Identifying knowledge gaps. Differences in expectations. All aspects that might be ruining your conversion rate.

Internalize that the conversion happens not at a point, but as a result of a path

It is the outcome of a process that starts way before. More often than not, it begins outside of your platform. Mapping your user journeys and the diverse challenges they face is essential. Go back as far as you can go. You might have a nice set-up available for that. Depending on the sophistication of your operation of course. Explore your analytics tools. Learn about the different attribution models. How they might be impacting your data. Using qualitative research and educated guesses should always complement your data.

Understand HOW your customers reach you.

The circumstances of that customer ending up in contact with your product do matter. One example. Users landing on your site from Search Engines (non-brand queries) lack context. They probably know nothing about the years you have been in the business. They ignore how your solution ranks against competitors. Know nothing about all your great points. The safe assumption is they don’t. Plan accordingly.

Ask yourself. What is your customer context? How does it impact their experience? what can I do to improve it? how can I increase the level of trust? How can I remove friction? Do the same exercise for all your acquisition channels or particular segments.

Become familiar with your customer expectations

The purchase criteria might be already defined in your customer’s mind. Way before the customer is even aware of your brand existence. Talk with your marketing team. Talk with your sales guys, or the founder (depending on the structure you are working on). Become an expert on your brand positioning. What is the category mapping the potential customers have in mind. Find out where EXACTLY they place your product.

Share your knowledge across your team.

Deepen the team’s understanding of the customer path to conversion. at various stages of customer marketing and product lifecycle through education and mentorship. Document your findings. Discuss your insights. Share nuggets of the interviews. Proof of the epiphany moments that helped you discover those insights.

In summary, be open and flexible with a learning mindset always on. Obsess over your customers. Become an expert in their perception of your product and their experience. Leverage that knowledge. Make sure everybody in your team is in the same page. Learn what is your customer’s journey, characteristics, needs and wants.

Previously oorei dot com | Comments are disabled