In 2008 I came home after my last day of school for the year and dad greeted me at the door, curious about the report card. After we finished talking about school he asked “Son, what do you want to do for the next six weeks while you’re at home?”. I shrugged.
“That’s what I thought. See, there are two options. Option one: you find a job in a factory to go and make some money. Option Two: You come and work for me. I have plans for software tools you can build for me”.
I didn’t have to think long to choose option two. If there was a chance to spend 6 weeks on writing code, definitely I’d go for that.
On the next morning, we sat down and he briefed me on the new project and got to work.
At the time, I was just learning a new language. All other custom-built tools Dad was using at the time were built in C# by another developer. So I was learning the language to eventually help out and team up with that other developer. I knew the basics but I definitely lacked knowledge around production-ready code. These six weeks where a good opportunity to lay a foundation and gain new knowledge. I learned how to handle exceptions properly, how to develop a basic algorithm from scratch, design a user interface and build an installer so that users can install everything.
I can tell you, it’s been so much fun but paired with a lot of frustration.
I started my day usually around 08:00am – 09:00am and worked until the late afternoon. I had a lot of questions on my mind, such as “How do I design a user interface that’s easy to use” or “How do I pass data between windows of my application.
The internet was of help for sure, but some questions were just impossible to find answers to. The developer who was working together with Dad offered to mentor me, so I could email him my questions and either he’d respond with another email or we’d do a screen sharing session to go over the question and solutions.
Coming back to school after these six weeks was interesting in the sense that the others spent their time off vacationing where I made significant jumps towards professional software development. This showed in my marks and also paid off massively two years later when I got my first job.
Now, what can you learn from this?
The first learning is consistency. Software development is a craft that requires a lot of knowledge and practice. The more experience you have the better you will be at what you do. But how do you build up this knowledge and experience? I did it over a 6 week summer break and I acknowledge that this was a huge privilege. But even without school breaks or 6 weeks of vacation time you can accomplish this. The key to this is consistently sitting down each day and practice. Spend an hour each day to learn programming. The first few days it will be a lot of effort to show up but with this you’re building a routine. It’s like practicing a new sport. With every consecutive day you do it you will get better.
2. Continuous Learning
At no point in time you will be done learning. The IT world is changing so fast – every day new programming languages come out, new technologies developed and shipped.
It’s impossible to stay on top of everything, but when you follow along major trends
t’s your job to maybe not just stay on Top of everything but keep an eye on it so that one the time comes for learning a new programming language you know which one to choose because there in high demand or the right tool for the job that’s where software development differs from other jobs where at some point you might be I don’t completely done learning or not learning as much anymore as he used to.
Find somebody who can help you on this journey. You will be able to solve and learn many things yourself but sometimes you will need somebody with more experience to guide the way, as in which language to learn, what concepts to dive deep in, etc.
What do you think? Let me know your thoughts in the comments.