A beginning is a very delicate time.

Shout out to my boy Frank Herbert for that one.

On May 22nd I start the Iron Yard, and a new chapter of life. It was far past time to take the plunge and man, did I take it. No money, a bunch of debt, car broke down; that’s how the Cinderella Story of Tech starts, right? Sure, it can. I can also end up selling brooms to strangers with the blind guy in Broad Ripple. That man is a treasure by the way, and we could all learn a thing or two from him.

I’ve already learned a lot though, and some very important learnings they are. I don’t know who’s going to end up reading this, but if it’s someone starting a new endeavour like this, there are some things that it might help you to know.

First, you’re not going to school to learn how to code. Sure you’ll be banging out lines and files and projects, but you’re not learning how to do it. You’re just going to do it. What you’re learning how to do is think about problems and how to solve them, how to build a toolbox and how to know what to reach for. You’re learning how to think in a new language and once you’ve got that, you’ll just start speaking it. Look at this:

public class Main {
public static void main(String[] args) {
}
}

I don’t know what this does, exactly. I know why it’s there, I know you need it to write functional Java, but hell if I know what a void or an args is. In my CS 102 class in college tests were fill in the blank, definitions, know every granular piece of information about every keyword and replicate, regurgitate. No wonder I got a lot of sleep during class.

To me, coding is isn’t a puzzle with a pile rigidly-defined pieces (there’s some of that but not exclusively, or even importantly), but it is a puzzle that needs solving, in the abstract. It’s a conversation with an idea in your head. You have phrases, expressions, methods of communicating your idea to a computer that need to be plugged in and manipulated to make your idea make sense. You wouldn’t cut pieces to fit the picture on your coffee table or use a piece from a different puzzle, but you kind of can with code, so I don’t think of this discipline as learning a programming language, but as learning the language of programming. Nailing down the rules of syntax and grammar come after learning how to think.

Michael Hartl of learnenough.com calls this technical sophistication, knowing how to think about problems, how to evaluate possible solutions, and sure, ultimately how to implement them, but definition and implementation are secondary to being able to communicate with your idea and find the right ways to translate it.

Next, this will be both easier and harder than you think. I’m 31(?). My neuroplasticity is shot. Making fundamental changes to how you approach problem-solving and learning to think like an engineer is going to be like backing an elephant up a flight of stairs. That said, the changes cascade. It’s one of those things where “it’ll just click” is a real thing. It’s why programs like the Iron Yard take a lot of pride in saying that they can take a 45 year old housewife and turn her into a software developer. There aren’t a lot of secrets in programming, it just really looks like that when you look at a wall of code that looks like a seizure made out of letters and numbers.

The hard part is going to be you, being willing to be malleable and let yourself think in ways you’ve never had to, and to understand that if you’re not getting something, it’s not because you’re bad at it or incapable, but that your fighting against X number of years of linear thinking building some damn high walls in your brain. That wall’s not coming down because you strike it once, trust your mind to adapt as you put time and effort into telling it to think this way, not that way.

Finally, don’t be afraid to use your resources, and you’ve got a hell of a lot of resources. It’s a shoulders-of-giants kind of thing: everything you want to do has been done, probably in about ten different ways. Stack Overflow, CodePen, w3schools, instructors, classmates, and a thousand different other things are out there for you. You’ll lean on these a lot even as a professional, so it behooves you to learn how to navigate them now, add to that technical sophistication we were talking about. I mean that’s cheating, but it’s not cheating. You’re not cheating, you’re fine.

Really though, there’s no reason to think that you need to figure all of this out on your own. Software development is a community effort and the name of the game is effecient use of resources. Don’t be afraid to crib a bit from the efforts of others; sometimes it’s alright to know that something works before you know why, especially when you’re learning. Making something work and figuring out how after you’ve seen it go can be a powerful educational experience.

Much of this is opinion and inference and I expect it to be challenged both by other people and by my own experience, but after I adjusted my perception of code school and how coding works as a discipline it feels a lot more managable. I hope all this sticks for me and if you’re reading this and just starting something new as well, I hope it helps you, too.

Like what you read? Give Joshuastronomy a round of applause.

From a quick cheer to a standing ovation, clap to show how much you enjoyed this story.