"If a junior in high school were asking for your advice, what
would you tell them? What tips would you have for going into
'computer science'?"
(Please comment your tips - asking for real high school kid who stopped me to personally ask for advice)
"Last night the next door neighbors kid stopped me in the drive way..."
I was pulling into my parent's drive way - usually swing by my child hood home a couple times month.
Last night when I pulled into the drive way I heard
"Hey!!! Is that Zak?"
It was, I'm Zak, I'm a software engineer - and I have been for over half a decade. I never went to college and make a great living. My child hood neighbors kid who is about a decade younger than me knows this.
He wanted advice about going into the computer science field.
Before I had time to process what I was saying I spat out, "Well, I don't recommend college."
Looking back to last night, I'm not confident that was the best initial piece of advice to go with - but hey, I wasn't prepared.
I decided to take a pause, asked for his number and email, and told him that I'd think on it and get get him some solid tips by mid next week.
If a junior in high school were asking for your advice, what would you tell them? What tips would you have?
This kid is smart and as far as I can tell has the makings and characteristics to be a software engineer...I just want to make sure I'm providing the best, most non-bias advice I'm able to.
With that, any tips and advice you can offer up - I'll make sure to pass along to Stevie.
Latest comments (38)
I think I'd echo a few of the same things mentioned here.
Financially its a great choice and the industry is growing so you'll always have opportunity to move around and try stuff.
At its core, the job is problem solving. You use code and tech to solve problems, but you're always looking at, understanding, and solving problems.
The industry is still pretty new so there is lots of new ideas every day about how to do things well, build teams, and all of that. So on the one hand its kind of a new frontier, on the other its a total mess sometimes. Living with a lot of imperfection is part of it.
You don't have to LOVE anything about it. It can be just a job. Don't let people tell you you have to code nights and weekends or love coding or you won't make it.
One of the cooler aspects about software is how you can build something once, and it can be available to millions at the push of a button. You have the ability to solve problems for millions of people almost instantly. That is a pretty cool thing, though day-to-day it doesn't feel like it.
Go full crypto. Go full crypto right now and never look back.
Program as much as you can, try developing as different types of programs as you can, learn "crazy" programming languages (Scheme, Haskell, Prolog, Forth) while you have time for that.
Learn as much Discrete Math as you can, especially Math. Logic (but Combinatorics, Graph Theory and Abstract Algebra too).
Learn Statistics. Statistics turned out to be paramount not only to programmers but pretty much to every single person in the current world. I predict it becoming even more important.
Kinda surprisingly lately I wish I'd learn as much Topology as possible while I was in a university. But that's related to my personal interests, you might become interested in completely different things.
If you really want to make an impact on society through science and technology or work on the bleeding edge of science and technology, forget about Computer Science and programming and learn Biology, Genetics and Bioinformatics while you have time for that. Gene Engineering and Editing is becoming new "Computer Science".
Thanks for the step by step breakdown Alexander!
That's the second time I've heard statistics pushed as one of the most important subjects to learn in today's era of technology. I might just have to take a Statistics course myself.
It's not step-by-step and not even in the order of importance, just several distinct points.
If you're going to learn statistics from zero prior knowledge, please consider this book: drive.google.com/file/d/1awJBpfse5...
Enough has been written about education that I won't add to it, but don't be cynical of it either. There be marketing expertise behind what's on offer, so the occasional short-course needs to be looked at very carefully, by going through the contents list and determining if you can't find the same information somewhere anyway. And sometimes places like Udemy or O'Reilly can be plain convenient in timesaving against searching, even if it does not offer any impressive certificate. The big warning is that the marketers play/prey upon newcomers responding to the allure of a (false) image of someone sipping a latte in a trendy coffeeshop with high$ e-bike parked nonchalantly nearby etc. etc. that you will join at the close of their course.
Yeah, sure Ma - every day of the week.
Anyway, what I really want to offer is that computing is coming out of infancy as an industry, and the wide open frontiers that once were are now relatively fully serviced by software in some way. All you may end up doing is finding work at catching-up with compatibility to new standards, which is becoming a drag on the CEO's that will pay you. They no longer see you as their charioteer to the wide open unconquered plains, but a necessary evil in what once worked, but somehow no longer does through planned obsolescence, of which you may be a continuance. Not the nice welcoming interview promised by education.
My big advice is to become a people-person, not a tech-head. I'm finding work at the micro level, writing custom-apps for situations in rural industries that are side-loaded to whoever needs it to solve his or her immediate problem. But I don't let my app do all the work, I construct them in such a way that the people themselves increase as a result. even if it is to the point they don't really need them, but find it a convenience from an ISO 9001 series record-keeping point of view. ( There be devilry in that phrase you will find out - I won't talk about indemnities brokers, which are a whole 'nother universe of evil if you get to have to need them).
Qualifications are looked at by some employers - if they're caught up in that same evil - but largely it's referral from one client to another. Can you do the work? Can you perceive the problem from the PERSON who is faced with it's point of view? Referral from your last satisfied customer is better'n any hi-falutin' donger from academia, but that's just me.
I'm the sort of person that lines up behind the only open checkout I'm in at the large hardware chain, even though there's new groovy speedy techno-savvy self-serve checkout. I want to give someone a job. If they're broke, then the money I save from the chain not having to employ them is devalued more than if I just handed it over. There's a b-i-g frontier waiting to be challenged, where tech-heads seduced CEO's with computing power, but falsely so.
Become a people person.
Golden advice:
This is invaluable. No matter your industry, raising your eq over your iq will always be beneficial to your career (and life). Love this advice.
Also love this quote, we're learning new things every day as an industry. One of the reasons I feel college degree's can be more harmful than helfpful in computer science is because the cirriculum is always behind the current era of technologies in our industry.
Thanks for your comment!
I teach computer science to kids up to 18 years old.
I always tell them about the financial benefits of programming but that's not enough they need to have a passion for solving problems, those who like maths and physics tend to enjoy it more. Of course there are exceptions (pun intended) it'll need to be handled.
Programming is a skill that can be used as a fall back even if they didn't use it straight away, it's a skill that stays with them for life.
Programmers see the world differently for example, they see everything as a problem that requires a solution which in turn can be automated to make money. Abstraction, decomposition and computational thinking makes you smarter and these are all transferable skills and instantly makes you employable in many sectors.
Otherwise money isn't enough to motivate lots of young kids. Tell them to try some exercises on scratch, freecodecamp or even codecademy. The last one is great though not free they get to make some real world projects using latest technologies. It's a great starting point to see if they'll get into it.
Just a my few pence. Hope it helps.
Thanks @tmblog ! Great advice, and keep doing your think as a teacher. Having a teacher's input is awesome!
Just as a side note here in response to your comments on math:
I personally hated math...until I got into programming.
Have the immediate feed back loop of trying, seeing if I failed, and then immedietly being able to attempt another solution changed my entire outlook on math.
Writing down a 5 to 25 step problem in the traditional pencil and paper way felt hellish to the way I think and improve.
Appreciate your comment, and I'm really happy to be able to send Stevie a teacher's two-sense on the topic of computer science. Thank you!
Get involved in Open Source. A GitHub profile that proves competence goes leagues further than a 4 year degree.
Agreed! Thanks @lukeleber !
I mulled over this overnight, and of the myriad of things I'd want to say managed to narrow it down to just two things:
Regarding college, I'm one of the people who managed to go through it. I won't make a recommendation, but will instead just share my experience.
The fundamental thing I learned is this: college teaches computer science, but jobs require software engineering. Another way to phrase it, college best prepares you to become a college professor, not an industry worker.
5 weeks of training at my first job did more to prepare me for the job (and other adjacent jobs) than 4 years in university. Things I learned in those 5 weeks that I never learned at college include:
All that said, college did provide an opportunity to learn a bunch of things I was able to transfer, mostly tons of raw practice on stuff I was unfamiliar with, exposure to a diveristy of sub-fields, git and linux, and algorithmic problem solving. I wouldn't have landed my job without any of that. Could those things be learned elsewhere? Almost certainly, as long as it doesn't sacrifice Point #1 at the top.
I remember college for the experiences I had with a bunch of people going through the same thing. In the end, it was less about what I learned and more about who I was with while learning.
You are right, I have been spend my high school life on Point #2. But without college, I believe I won't get the Point #1.
Thanks for this awesome, well thought out response Timothy. I really appreciate your personal take on college and what you benefited from your experience going to a university.
This will be one of the comments that will most definietly give Stevie from insight into the college vs. non-college paths.
Thank you for investing the time to create such a thoughtful response.
Run, run for your life, become anything else! 🤣
Seriously though, my advice would be to think of something you want to see in the world and build it, make mistakes, ask for help when you need it and keep going.
Oh and if you go on Stack Overflow to ask questions, grow a thick skin!
By the time you finish school you will probably already be employable so can save yourself thousands in tuition fees (if you don't want the experience of Uni of course!).
By the time your friends are thousands in debt you could be on 6 figures a year and helping make the world a better place!
Finally (as I am biased) learn about accessibility no matter what type of development you go into, we need our next generation of developers to do a better job including people!
Great advice @inhuofficial !
Love this quote:
If you don't mind me asking, do you have a personal reason inspiring you to towards pushing developers towards remembering to develop with accessibility in mind?
I love that you're pushing it, I'll be the first to admit that with all of the other responsibilities we have while building software I'll often times forget about accessibility all together.
It's important and the right thing to do, it just often times gets lost in the chaos of all the moving parts.
No I don't have a personal reason, other than I see a huge problem in the industry that is excluding people.
I am a very unusual accessibility advocate as I do it half for the betterment of the human race (anyone got a vomit bag for the massive cliché?), half because I see a massive market that is being ignored!
And massive markets with unmet needs (and providing solutions for those needs) are what make people rich!
I am probably the most selfish accessibility advocate on the planet (oh, maybe that should be my new thing instead of "the angry accessibility guy")! 🤣
Above all it is an interesting area of expertise, which is why I like talking about it.
Once you start learning about all of the little things that you should be doing and why, it can really make you a better overall developer. You start to think of things from the perspective of others and you tend to make much better choices when it comes to UI design and UX, or at least that is what I believe.
This right here, is the way we get even more people into development, you should write a whole article on it! It isn't about writing code, it is about what that code can do! Loved that whole comment but that open sentence was near perfection for me!
I might just have to do that, I'll be following you moving forward @inhuofficial both on dev.to and twitter (twitter.com/InHuOfficial)!
I have been enjoying some of you other posts too!
Looking forward to the next one, have you managed to rest a bit after your all nighter?
Appreciate you @inhuofficial !
And oh yah, we're on a much better sleep schedule now. I joined one of the smart devices team as a dev for Amazon starting this past Monday.
Was on that stereotypical programmer night schedule and had to push to stay up for the entire day to re-regulate my schedule. It was a rough day shifting it back over, but we're on that healthy sleep schedule now😊
Oh cool and congratulations!
I bet that will be interesting working on smart device stuff!
Glad you got back to days and a normal schedule!
College is good for some people and bad for others. Without really knowing an individual I could not say whether or not someone should go.
Regardless I'd tell them to practice building real software. Not academic functions, not to-do lists, but real flushed out pieces. Map out what you want to accomplish, go through building out utilities, tests, features. Because at the end of the day that is what you will be doing on a cycle. Then all the debugging that goes with it. Besides that...pace their selves, because burnout is terrible.
Highly agree with you buphmin. Learning through doing, age old advice that is invaluable to hear a thousand times over.
Don't go to college. You'll be thousands of dollars in debt and barely have an understanding of how to actually write code. Colleges teach "Computer Science" not software engineering. There is an overlap, but not enough to make a CS degree worth the cost. Go to a technical school or a boot camp if you don't have the discipline to teach yourself. Even better, find someone to mentor you and do an apprenticeship.
Love the college debt point continually being brought up. College debt, in my opinion, is as close to evil as we have in todays era.
Do you have any additional insights on boot camps or technical schools Curtis? I'm thinking I'll just show this blog post with the comments directly to Stevie (the highschooler who was asing me about the computer science career).
I don't have any personal experience with boot camps or technical schools and would love to have something based on someone's real world experience to show him.