Over a decade ago I completely changed the trajectory of my life from becoming a lawyer to becoming a programmer. I learned from a C++ book then made some pathetic iOS apps for about 4-5 months. I then moved to Silicon Valley to start my career. I’m sure you’re reading this thinking ‘what a genius!’, but sadly the truth is far from that. I’m definitely proud of what I’ve accomplished but often think about the missteps I made along the way and continue to make to this day.
Hi! My background is in cinema. At least that’s what I studied in college. I then tried to get work in the industry with mixed results. Fast forward 10 years and I’m living in Paris teaching English. It was there that software engineering peeked my interest. You see, I was teaching English to a class of students who were learning programming. Further, they were coming from non CS backgrounds and taking their carrier path in a completely new direction. I started to believe that a 40 year old guy like me could do the same. I decided I would get a masters in CS and then try to get a job. I soon found out that going from a film bachelors to a CA masters is no easy task. Now I’m taking community college C++ and Python classes to build my knowledge and reach a level as to fulfill prerequisites to get into a masters program. So far I’ve taken one C++ class and one Python class. I’m currently taking my next C++ class and plan to take at least one more to get to an advanced level.
My question for you is 1. Do you have any advice for those who want to change their careers to software engineering in their 40s? I want to bring my film knowledge to software engineering to maybe work in the AI/creative space. 2. Is there value for for someone who has domain knowledge? 3. I know there is ageism in the programming industry. How much of an uphill climb am i facing?
I really liked your article. Any advice would be appreciated!!
You have taken a great first step and taken some CS classes. The problem I see in software engineering, is that someone does like the author and reads a book and writes a few simple program and all of a sudden they are a software engineer. There is a big step between a computer programmer and a software engineer. Programmers know syntax and can implement algorithms. Engineers understand why one construct is better than another, what implications the target hardware have on the programming style, why one language may be better than another for a particular application.
So, is your goal to be a programmer or an engineer? If you want to be an engineer, and actually claim the title, the only way is with a 4 yr ABET accredited degree. And in most states taking a state issued exam. Plenty claim the title without doing either, but there are not really engineers. Engineering has allowed the title to be diluted, and it’s unfortunate, but it is what it is. It would be no different than someone taking a few first aid classes and claiming to be a doctor, but everyone knows that’s not ok. For some reason engineering doesn’t have the same clout.
1a) Take classes or do research on languages. Just pick one. Doesn’t really matter. Once you know one language well, others are easy to learn. The basic constructs don’t change, just the specific syntax changes on how to implement them.
1b) Take classes or research on computer systems. Understand how the software interacts with the hardware. Be it a PC system or an embedded system. There is a significant difference in programming for a PC (application progamming) vs embedded (firmware). Neither is better than the other, they both have their place, but the style and considerations are worlds apart.
1c) Understand cybersecurity. Not to make a sales pitch, but look up Cybrary. They are a free online class model focusing on cybersecurity. They are great. With everything interconnected now, not understanding how security fits in the puzzle is foolish.
2) Absolutely! Understanding the domain and how end users in that domain think is invaluable. Leverage that.
3) It really depends on where you are and what you want to do. If you are passionate about learning and really understanding the field your age won’t matter too much. Let your skills talk for you.
Good luck to you. It’s an exciting and widely varied field. Opportunities abound.
- I don’t think what you should study and work on depends on your age at all. Learn the fundamentals (Inside the Machine is a great book for that), then learn a language with manual memory management C/C++. Alongside you should learn about software design and architecture. You should be able to answer questions like ‘How does malloc work?’, ‘What happens when I make a web request’, ‘Explain a distributed system’
- Since you have previous domain knowledge you should ask yourself how you want to apply your domain knowledge. There are a lot of options from working on compute graphics systems to companies like Wistia that provide video hosting and services. So figure out where you see yourself and learn and build everything you can that is relevant
- Ageism is unfortunately a thing. But if you have the skills no one can take that away from you. So just focus on yourself and be as prolific as possible in what you learn and build
Good luck my friend
This is probably the most genuine stuff I read about how a developer developed into a developer. lol. That was repetitive.
I’ll bookmark this so that if someone ever asks me how to become a developer, I’ll shoot across this link to them.
Thanks for sharing about your journey becoming a developer with such probity. I think if you have the zeal towards learning/becoming anything, you will achieve that no matter what the circumstances.
Awesome man! Cheers.
I’ve been in the field for decades. Through many roles, mostly programming around operations teams for past 15 years. Been around many self taught devs as well as those that came with fresh degrees in their pocket. While I would say that a degree gives you a leg up on that first job, theory wise and beginning salary, still a lot to learn. Having a degree in software engineering doesn’t make someone a software engineer.
Much of that comes from the long years of experience mentioned. Learning the craft and understanding not just the theory but also how to troubleshoot your’s or someone else’s Code when something blows up in production. How to build testing suites, running code through performance, integration with other applications, list goes on. The old 10,000 hour rule to become an expert still applies.
Interesting to see an inexperienced dev, frustrated because their code that “should” work keeps failing. After decades of coding, my code still fails at times, then the fun begins.
@the-self-taught-dev Thank you for this honest account of your experience becoming a developer. My situation is very similar to where you were 10 years ago: I completed a year of law school, decided I hated the profession, and found a C++ course. Although I think C++ is a little above my abilities right now, I absolutely love the thrill that comes with creating a working program, regardless of how basic and trivial it is.
And I think you are absolutely right about curiosity…even though I’ve only been writing code for a few months, the biggest leaps in knowledge/ability have come from simply being curious about a particular function and following that idea to its logical endpoint. Anyway, thank you for writing this up, it’s refreshing to see this kind of honesty from mid/senior level developers.