"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.
Top comments (38)
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!
Hey, 14 year old developer. My advice to high schoolers is to start to love programming. This is so important because as teenagers you need to have passion in this field in order to continue programming as a job. If you want to have a programming job just to make money, you wonβt be a productive programmer.
I like this tip, but also am the first to admit that I don't love programming. I love what programming can do, the potential behind it, and that it's a craft you can continually become better at.
I love that software is a career choice that doesn't require you to go tens of thousands of dollars into debt.
I love that if you choose the non-college path in programming that you can be making six figures in around 1 to 2 years if you stay committed to the process - and you can have that income without the debt for college.
I love that I can reach the upper levels of the industry and make 200k+ a year at FAANG without a college degree (Using me as a personal example, you can make a hell of a lot more than that working at FAANG).
The way my mind works though, I don't need to love what I do - I need to be challenged with a craft where I can become better every day. I need that craft to have some major pay offs when I become damn good at it. And although I'll never be done working (wouldn't know what to do with myself), I need to see that all of my hard work has end game potential if I invest tremendous effort and play my cards right.
As someone trying to give honest advice and perspective to a kid thinking about the industry, do you think that my personal admission to not loving code and instead loving what code can do for my life and the world as a whole are similar enough? Is my view point rare (reaching a level of greater than average success as a software engineer when I don't love code but instead love what code can do)? In your experience, how many developers have you worked with who love to code compared to love what code can do.
Do you think those differences in what an individual loves to do is worth bringing up a high schooler or good advice what so ever to a newbie joining the industry?
Best case scenario, he simply loves code - but if he loves the potential of code like me and it's just not enough in 99% of cases to incite actually joining the computer science industry then I'd hate to recommend it based on my personal take.
I'd hate to recommend going into the industry when all you love is the potential and the outcome, and instead tell him to make sure you love coding itself - but that's not my personal take.
I'd also hate to tell him that you have to love code or you won't go anywhere in the industry and you won't enjoy the industry because that hasn't been my personal experience.
I enjoy code some days and other days I don't, for me it's more of a grind similar to running a marathon. I feel healthier when I'm doing it every day, I'm financially fitter for it, and although I don't enjoy the 24 mile runs personally - knowing I've made it through the grind and am better for it is a feeling I love.
Through code I've avoided college debt, joined the largest digital marketing company in the US, created multiple income streams via content creation and tutorials, built websites that are sitting and gaining value based on their domain (find.how is a domain I bought a few weeks back that'll gain value with age), joined an Amazon team that's working on voice/visual code APIs which provides insight into a different kind of business that I'd have the potential to start in the future, etc...
Through code I've done so many things that I'm intrigued and interested in, but code itself is just a tool in my mind. The daily coding grind is synonymous with daily lifting sessions and multi-mile runs in my mind. Not necessarily my favorite thing - I love some parts like I love living and I despise other parts like I despise running.
Coding is the tool, but I'd never go as far as to say I love programming. I love opportunity, entrepreneurial under takings, improving my over all fitness on a daily to do what others can not because I was willing to do the hard s*** no one else was willing to.
To me coding is the hard training sessions, and everything I'm able to do with coding is what I love.
I'd hate to recommend going into the industry when all you love is the potential and the outcome, and instead tell him to make sure you love coding itself - but that's not my personal take.
I'd also hate to tell him that you have to love code or you won't go anywhere in the industry and you won't enjoy the industry because that hasn't been my personal experience.
So anyways, apologies for the rant - but with that perspective and insight what would your thoughts be on loving code vs. loving what code can do for your life and the world?
Same
Lol, you sir, understand the definition of brevity π
K.I.S.S.
I guess it depends on what you develop as well, or if you know how to code but go into QA. People who love to tear things apart, see how they work can also do great things and with the Shift Left that blurs between being about to code, test, and do other things is also there.
I work as a toolsmith and have for years, developing build and deploy pipelines and test frameworks, while I can't say I live and breath programming I can get things done. Software Engineering has a lot of different bits than just programming. But that's usually the first thing people think of when they consider software engineering.
As a 15 year old developer, I think the best advice I could give is: be dedicated and self-sufficient. I learned so much simply by paying attention and studying the resources immediately available to me (ie documentation, stack overflow, and books). Courses are great, but I think they are often used as a crutch and provide less value than initially perceived.
Great advice Tarek! Learn how to find the answers and dig into the details to solve the problem yourself using tools like StackOverflow, Google, Documentation, and solid Books.
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.
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.
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.
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!
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...
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.
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βd recommend picking a niche and staying focused on it.
Ex: You want to do reactive front end.
Great advice JohnT! I love the big a niche and then "Staying focused" on it. For new devs that's huge
Itβs a big one! Thanks for continually great content btw, your JavaScript series is A+. 10/10 recommend
Thank you sir, it's a series I've invested a lot of time and effort into blogging on - hoping to create a youtube series with a video backing every one of the blog posts in the dev.to javascript series sometime in the near future.
Deeper JavaScript seems to be a topic that people are relating and reacting to, love seeing it!
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.