You can build that app you think you need a ton of experience for, right now!

06 Nov 2019

A lovely person reached out to me today on Twitter to ask me to be their mentor, which I agreed to on the understanding that we are equal, and it will be a mutually valuable experience. I'll copy in my side of the conversation below, because there are a lot of concepts that I think could help people in a similar situation. I won't be editing any of my replies, there are spelling mistakes and it's pretty conversational.

My side of the conversation (to keep the other person anonymous)

Heyy [name], It can be really hard to keep yourself going when you're learning by yourself. I started out learning web-development and was self-taught. Really appreciated feedback I got from a few experienced developers, which helped a lot. At the moment, I work at a startup where I'm doing mostly front-end stuff for both mobile and web applications, but I also work regularly with other members of my team to learn more about other areas. It has been a huge learning curve, but a lot of fun.

My first question is, how has your learning journey been so far, what have you been focused on?

Can understand that. Firstly, high five for sticking to it for so long when it's difficult to keep motivated. That's pretty resilient. Looking at the course, it seems a bit overwhelming and contains way too much information. It's really good for exposing yourself to lots of different technologies, but HTML, CSS, JS, and a backend language would be enough to focus on away from all of the frameworks, as the frameworks are written in the pure language themselves

Do you have any goals for the kind of things you'd like to be able to build?

Nah you're capable of becoming a full-stack engineer, or as I like to call them, a developer/software engineer to remove the web-dev box it implies

Why do you want to build a weather app, e-commerce site and a shop/gallery?

What is your aim with the portfolio?

I ask a lot of questions, because knowing what your why is will help me give better suggestions to help you take a short-cut, so that you don't spend years trying to do these things only to have to learn everything all over again in a new job

Which one do you want to build first?

Okay, if your weather app could only display one thing, one tiny bit of data, what would it be?

Or, what would be the most important thing to show, for it to be considered a weather app with that limitation?

Another question to make it easier to come up with this, why might someone want to know the weather? What would they want to do with that information? No wrong guesses here at all.

If you could only have one of those things (they are all right), what would be the most helpful bit. The reasons we'd use the weather data is spot on. In order to answer the question, do I need to wear sunglasses or not right now, what single piece of information would you need?

(I love you idea by the way)

your*

Too much :) you could know if you needed sunglasses right now, by knowing the current weather. not over 12 hours, though that's nice to have, it isn't as important. our aim is to meet our customers needs as fast as possible.

For example, A person lives in the country side, and there is no public transport available to get them to their new job. They ask you to build them a car (this is a virtual world). You could spend months building them a car to meet their exact requirements or, you could help solve their problem of getting to work by building them a pair of roller skates.

They won't be overjoyed, but it's better than walking.

Then you can build them a skateboard, because they said that they weren't able to stop themselves rolling down hills with the rollerblades, but a skateboard would let them put their feet down

Then, they say that their feet are getting tired from pushing the skateboard all that way

Towards the end of these constant feedback cycles, they realise they didn't want a car after all

because it wouldn't fit down all of the windy paths, So we build them a motorbike instead.

But what we actually did was slowly add on to our existing program, always thinking about the next most important thing, the next most important need to address.

So we could release something to them regularly, solve their problem and make it into something they didn't even know they needed, because we adapted as we learned things along the way.

Right now, we don't have a customer. Your goal is to make a weather app. If you hold all of the requirements in your head, it's really overwhelming. If you break it down into the next tiny most important thing, that becomes your only goal.

As a developer, you never build the same thing twice. So you can't say I have a bunch of projects under my belt, so I know how to build this. But you can say, even though I have no idea how to solve this problem, I can break it down into the next most important thing, and learn how to do it as I go

You could start building the weather app today, and get it done pretty quickly, even without knowing nothing about how to do it.

*anything - not 'nothing'

So step one. Can you create a webpage, that only shows a hard-coded temperature?

So a webpage that shows "30°C" and nothing else (you can pick a different temp if you want)

As you collect more puzzle pieces (have more experience), you'll be able to recognise patterns in your solutions and reuse your existing solutions. So it isn't always starting from nothing.

Not many tutorials teach this approach, but it's extremely effective

:)

If you take one thing at all from any of our conversations, it's that software is 'soft', it is meant to change, and adapt to meet the needs of the people we are building it for. People change their minds all the time. Many developers find this frustrating, "Oh my God I did exactly what they asked for and now they want to change it". Instead, say "Yes, I get to weild my developer super powers and make their wishes (even the wishes they didn't even know they had), come true"

learning how to do this takes a lot of time, patience, unlearning all the crap that the education system instills in us, and learning how to adapt better. But to get started, taking a series of baby steps will get you flying faster than most

If you do decide to do the webpage with a temp on, I can help with asking questions to help you do the next thing. Can do the same for the next project if you want. Then you should start to feel more confident doing this by yourself, so can switch to throwing curveballs at you, and introducing you to a few principles to help you practice responding to change. But please remember that this is your journey, you can take or leave my advice, but never take it without questioning it for yourself

My experience is one perspective, and learning right alongside you

That is incredibly kind of you. I'm currently writing a book about a bunch of learning strategies like this. Or at least, I'm working with a publisher to get the book proposal to a good standard. It's so frustrating to see a ton of articles and resources written by people who overcomplicate things or give outright bad advice

And sure, we can both be each others mentor, will be learning from you too, and hopefully you'll surpass me in many ways, and it'll be a case of skill tag :)

Entirely up to you. Though I think you could build it right now and learn the missing things as you go along :)

A challenge if you're up for it:

Instead of displaying 30°C on a webpage, can you display it on a live webpage? One that I can visit in real time?

It would mean getting a domain and setting it up with a host, I used webhost when I started, which is a free one

Can help walk you through setting it up if needed, or, you could add it to your existing site (you mentioned a portfolio)?

Or ignore me and not do that right now, but build it locally. The reason I'm suggesting it, is because it's another thing barely anyone tells beginners to do

But again, entirely up to you

Also, sorry, you're not a beginner

Impossible to be disappointed. I'm gonna look at the code I'm writing today and think ew next week probably :)

The industry needs more people who'll spend six months keeping up with a course when struggling to stay motivated. Imagine what you'll be able to do down the line

I have to go for now, back to work haha. But I finish at 4pm here in Australia because I started earlier (so I could leave earlier).

I'm at work, but sure. Might not be able to reply right away depending on what it is, Free to message any time if it's okay that some replies won't be quick.

I needed a blog as fast as possible because my immediate need was to share the things I was learning. Github pages let me do that without thinking about it. In the meantime, I'm designing it again in my spare time. Here are some of the potential screens:

I want my new site to pull out the best advice from my raw stuff, and be more about helping people and less about me. It's taking a fair amount of time to design for that in a way that would be easy to change. Plus my priority is learning which is why my blog is the way it is for now, raw, a ton of spelling errors, but an incredibly helpful resource to help me look up things I want to do again

That's pretty cool. Don't stress if you can't publish every day. 100DaysOfCode is awesome, but it can be a bit demotivating if you miss a day. Breaks are important too. But yeah, writing up what you are learning it is one of the most helpful things I have ever done, even if it means taking more time.