How to become a successful software engineer

academics career advice computer science software engineering
By Neal P.

The realm of software continues to evolve, as does the architecture within education to become a software engineer. While some experts come from various university programs in Computer Science, others break into the industry through boot camps or self-guided study programs. Unfortunately, not every program can cover every base, and as the field becomes more and more competitive, here are the things I wish I would have known before I even started undergrad. Without my mentors, school resources, and industry professionals to guide me along the way, I don't know where I would be; hopefully, this can help you avoid the mistakes that I made. 

1. It's your own prerogative - and responsibility - to build your skills out.

Most university programs and 4 year degrees teach the same curriculum - an introductory course, some data structures and algorithms, finishing with computer architecture and operating system work. If you go through an accredited engineering program (typically a BS degree at a school of engineering, as opposed to a college of arts and sciences), you'll most likely get the chance to build a senior project. However, most of these courses will not prepare you for the hottest industry demands. Front end engineering, machine learning, functional programming, and big data are all concepts that you'll encounter outside of a standard curriculum. It'll be on you to take early initiative to find resources – be it online videos, university electives, or ongoing projects – to serve as a medium for your learning. 

The largest overarching concepts that I feel every student should know at the most basic level are mobile app development, front end development, machine learning, distributed systems, game engineering, and back end development. 

2. Learn to learn on your own.

As new languages arise, and new concepts in programming and system architecture take over the industry, you'll find that your education will become outdated. New computer programming languages don't come with a free 4 credit course, so it'll be up to you to learn how to learn. This means being able to read documentation, understand the different types of common syntax used, and being comfortable trying and failing to read and write code in an environment you're unfamiliar with. Luckily, the internet is a vast library with all the information, documentation, video explanations, and samples you could ask for. 

I personally recommend the O'Reilly series if you prefer learning out of a physical textbook; LinkedInLearning, Udemy, and FreeCodeCamp if you prefer structured video curriculum; developer.mozilla.org for open ended docs for a more self guided experience. 

3. No side project should feel like a chore.

For me, I could never embrace front end engineering. I was someone who enjoyed problem solving, writing new algorithms, and discovering how to manipulate data as efficiently as possible. To sit down and learn about different web protocols, understand all the various javascript libraries and frameworks, and try to use React was a burden. I felt like I was forcing myself into it every time I wanted to work on my project. In reality, I could never see myself doing this as a career, so why was I bullying myself into it now? After about a year of attempting, I quickly shifted gears into pursuing projects and coursework that I loved - object oriented programming, game engineering, and core backend development problems. I ended up learning more in 6 weeks about a software concept that I enjoyed than I ever have learned about React. 

The best place to get inspiration for a side project? Ask your friends! There may be a web scraper that would help them in daily life, or an API to get information for their coursework. Whether the tool exists already or not, being able to build software for it from the ground up is a powerful asset to put on your github and resume. 

4. There will always be someone intimidatingly more experienced than you, and that's okay.

Walking into any computer science class, there'll be someone with hundreds of more github commits than you, and a much more thorough understanding of current events, ongoing development, and news related to the topic. This person may very well be the combination of every cousin, family friend, and sibling you've ever been compared to. However, a career in computer science isn't a competitive sporting event. Your peers and coworkers should never feel or seem like threats, but rather resources. Asking questions, and building out your own education path, at your own pace, with a senior's guidance is the most helpful thing you can do for yourself

5. The most important language to know is English.

No amount of python, CH, Rust, or ReactNative experience is as important to hiring managers and recruiters as being able to efficiently communicate with your peers, managers, and clients. Being able to consume and understand what is happening conceptually and explain it to fellow engineers and the users involved is the most valuable asset. Advanced communication skills and collaborative energy is the core engine that makes a powerful software engineer, and what drives a team forward at a rapid pace. This is the very reason why project managers exist; a communicative person is worth a six figure salary to streamline the flow of ideas, capital, and code between engineers, designers, and all other parties involved. 

6. You will get a job, and you always will have time.

The demand for engineers will not dwindle in the way the media may scare you to believe. With each no innovation in automation or artificial intelligence comes 300 roles to build it out for each company. Even if you're about to graduate with no idea of where you want to take your career, many new grad roles exist with rotational structure and curriculum included for you to explore your interests. Many engineers take a pivot after finding out what they do or don't like many years into their full time careers. Hopefully after reading this blogpost, you're able to explore and comfortably dip your feet into your interests and set a path for yourself as soon as possible, but I want to promise you that you'll be okay. You'll always have hiring potential, and the world of software engineering is waiting with open arms for you to break out of your comfort zone and into your future career. 

Neal is a graduate of NYU, where he earned his BS in Computer Science. At NYU, Neal was a member of their NCAA Division 1 Fencing Team, and served as President for their Mathematical Finance Group and Deputy Head of Model United Nations.

Comments

topicTopics
academics study skills MCAT medical school admissions SAT expository writing college admissions English MD/PhD admissions strategy writing LSAT GMAT GRE physics chemistry math biology graduate admissions academic advice ACT interview prep law school admissions test anxiety language learning premed MBA admissions career advice personal statements homework help AP exams creative writing MD study schedules computer science test prep Common Application summer activities history mathematics philosophy organic chemistry secondary applications economics supplements research 1L PSAT admissions coaching grammar law psychology statistics & probability legal studies ESL CARS SSAT covid-19 dental admissions logic games reading comprehension engineering USMLE calculus PhD admissions Spanish mentorship parents Latin biochemistry case coaching verbal reasoning DAT English literature STEM excel medical school political science skills AMCAS French Linguistics MBA coursework Tutoring Approaches academic integrity chinese letters of recommendation Anki DO Social Advocacy admissions advice algebra artificial intelligence astrophysics business cell biology classics diversity statement gap year genetics geometry kinematics linear algebra mechanical engineering mental health presentations quantitative reasoning study abroad technical interviews time management work and activities 2L DMD IB exams ISEE MD/PhD programs Sentence Correction adjusting to college algorithms amino acids analysis essay art history athletics business skills careers cold emails data science dental school finance first generation student functions information sessions international students internships logic networking poetry resume revising science social sciences software engineering tech industry trigonometry writer's block 3L AAMC Academic Interest EMT FlexMed Fourier Series Greek Health Professional Shortage Area Italian Lagrange multipliers London MD vs PhD MMI Montessori National Health Service Corps Pythagorean Theorem Python Shakespeare Step 2 TMDSAS Taylor Series Truss Analysis Zoom acids and bases active learning architecture argumentative writing art art and design schools art portfolios bacteriology bibliographies biomedicine brain teaser campus visits cantonese capacitors capital markets central limit theorem centrifugal force chemical engineering chess chromatography class participation climate change clinical experience community service constitutional law consulting cover letters curriculum dementia demonstrated interest dimensional analysis distance learning econometrics electric engineering electricity and magnetism escape velocity evolution executive function freewriting genomics graphing harmonics health policy history of medicine history of science hybrid vehicles hydrophobic effect ideal gas law immunology induction infinite institutional actions integrated reasoning intermolecular forces intern investing investment banking lab reports linear maps mandarin chinese matrices mba medical physics meiosis microeconomics mitosis mnemonics music music theory nervous system neurology neuroscience object-oriented programming office hours operating systems