How would you build a software developer?
I'm a Marine Corps Veteran and was just accepted to a program that will pay for school, any additional training that would make me more hirable, and a monthly housing allowance. I'm starting at a local community college and looking to transfer to Santa Clara University in pursuit of a computer science and engineering degree. The estimated time of completion is around three to four years. I start in Jan 2022. To supplement school, I've looked into coding boot camps, self-paced classes, and youtube videos. The thought here is to try to get internships.
If you could go back and redo your path to your current role, what would you have done differently? What would have been dropped and what added? What advice would you give someone in my shoes starting the journey? What should I know? Are coding boot camps worth it? Anything else I should know? #college #technology #computer #computer-science #computer-software #software-developer #coding #phython
Thank you!
4 answers
Mickael’s Answer
Let me answer your questions one by one and then I will try to expand from it
If you could go back and redo your path to your current role, what would you have done differently?
My first thing I would do is never become a manager because that role was not made for me. I am a good leader per my peers but not manager. At least I felt annoyed by the job.
In terms of coding, I would have focused more on low level coding and real real time system.
What would have been dropped and what added?
I would probably have added more maths and more python. Maths because it is useful for some algorithms. Python because it is a language that is wide spread and used a lot in many of the companies I worked for.
I would have dropped Java which has been almost useless for me.
What advice would you give someone in my shoes starting the journey?
Practice, practice and practice. Coding means learning languages, and as with spoken languages, the more you practice the better you get. Start small. Work on small projects on your own. Fail, fix, repeat until you do not fail. Being a developer is like any other job, you learn by practicing and failing :).
What should I know?
In computer science there are two things you absolutely need to know:
- a coding language.
- data structures like array, lists, hash map (a.k.a. hash table or dictionary), binary tree and other more advance if you can.
Language is somewhat obvious. Data structures and when to use them is your base of the data management.
Are coding boot camps worth it?
yes, because boot camps make you practice and you can also see what the current coding fashion is.
Anything else I should know?
If you want to be a very good developer, know computer architecture. How does your computer run a program and your operating system makes a difference between a program that somewhat works and a good program.
Also learn basic architecture models (like micro-services, MVC, and all these architectures that were created overtime). Even if a given one is obsolete, it will give us some insights about the problem these people were trying to solve and so how they did. By looking at some evolution, you will then get more insight about what was fixed but what problem was added. And so on.
Learning about few API and protocols would help to. Kind of the same idea.
Databases: know they exist. If you need, learn one type of SQL language.
API: learn a couple of useful one when you use them during your projects
Algorithms: I do not like learning algorithms by heart, but studying an algorithm helps you set up your mind on some angle that you may not have thought.
The software industry is expanding because of this new "do everything from anywhere" approach that COVID accelerated. There are different level of works, different level of developer. Some develop firmware and drivers, some develop Operating System, some are high level and develop RESTFull API to interact with a system from distance. There is no good answer about which one is best, just what you like.
But, because this industry is always changing industry, you must be ready to always learn. If you don't, you'll get overwhelmed by new things coming in. Yet, that does not mean you will have to switch to these new toys, but just be aware they exist in case they can help you (in which case they will become tools, not toys).
But the main theme is practice: search for internships, bootcamps ... Companies in this domain like to have people that have some experience in the domain, even if it is just basic academics or internship experience. You may be surprised but some company offers advantages for veterans. Check Dell for example: https://dell.searchgreatcareers.com/military
I really hope it helped!
Dexter’s Answer
Mickael gave an amazing answer, but I thought I would answer this question too, just to give a slightly different perspective.
> If you could go back and redo your path to your current role, what would you have done differently?
I would have gained real life experience by volunteering at nonprofits and making to get internships during my college journey. Theoretical learning is good, but it can only get you to so much. I think real life experiences are worth their weight in gold, so I would seek out anything that gets you out of the class room and working on real production code.
> What would have been dropped and what added?
I would have done more research projects while in college. Again, the goal would be to gain real-life experiences (or close approximations of them) so that I would have more real-life experiences to learn from. I would have focused less on my hobbies while I was in school (reading, messing around with computers, etc).
> What advice would you give someone in my shoes starting the journey?
Learn to love solving problems and the grind of being a software developer. Contribute to projects on github so that when a recruiter looks at your github profile, they can see that you love coding (lots of colors through out the entire timeline, instead of a few bright spots every few months, which shows that you only contribute/code when you're working on projects).
> What should I know?
I would also take a few courses on communications. Even if coders are typing all day, we always need to interface with other people, and effective communications will improve your chances of landing your dream job.
> Are coding boot camps worth it?
As a hiring manager, no. I have had less-than-stellar candidates come through due to bootcamp experience, and so I would say that they are not worth your time and money. Rather, spend that time contributing to open source projects or to nonprofits. These real-life experience will count for much more.
> Anything else I should know?
Lots of private companies have programs and scholarships available, but they are not well advertised. So scour various companies websites when you find the time and see what opportunities are available. A good way to find resources is using LinkedIn to find recruiters who may be familiar with these programs and asking them for what resources their companies offer to college students who are looking for internships, scholarships, and programs to interface with.
I wish you the best!
--
Dexter
Nir’s Answer
If I could back I would have loved to study CS in college because it deeply interests me but I don't regret it because it wasn't on my radar back then. Everything worked out in this regard for me as the bootcamp I took led me to a job that I really love.
One tip I would give is don't compare yourself to others. These things have a way of clicking one day and it happens at different times for different people. However experience is the great equalizer, eventually you and your costudents will be very equal in time.
Jerome’s Answer
If you could go back and redo your path to your current role, what would you have done differently?
Not much. But I don't spend a lot of time looking back. We all get where we are by different routes, and the key for me is to look at what I'm doing now, determine if I'm doing it well, what I could do better, what I've learned and need to learn, and whether or not I feel I should continue doing it.
What would have been dropped and what added?
Dropped? Again, not much. Every bit (pardon the pun) of knowledge you gain along the way -- no matter where or what -- helps you in some way. As to things added... I guess a little more "theory" and math might have helped, but I picked up what I needed.
What advice would you give someone in my shoes starting the journey?
One thing that most "Here's what you need to succeed in CS and software development" gurus overlook: You need to have at least a basic understanding of electronics and computer hardware if you want to succeed. That doesn't necessarily imply a BSEE but it does mean that you should know how CPUs interface with bus elements, how memory actually works and how it's addressed, how I/O channels work and so forth. There's no way you can be a truly effective debugger and developer unless you have some clue as to what's really going on at the far end of the keyboard cable -- a little knowledge of assembly language can also really improve your high-level coding and debug skills.
A second piece of advice: Ignore anyone who tells you "Learn X and you're all set." or "Don't bother learning Y, you'll never encounter it." This is especially true where languages are concerned -- each one has its advantages and shortcomings, and each one comes with a pack of advocates and detractors itching to tell you why their viewpoint is the only accurate one. The more tools you have at your disposal, the more jobs you can do. There will be some that you prefer to use, but keep an open mind about the rest. You'll probably need them some day.
What should I know?
Don't let the money fool you. If you go into an interview and are uncomfortable, or if you look around the office and people are unpleasant to each other, leave. There's no salary worth working in a miserable environment. And always bear in mind: they're not offering you big bucks because they're nice people.
Are coding boot camps worth it?
Generally speaking, no. As mentioned above, getting involved in an open-source project (or starting your own) is probably a much better investment of your time. Unlike USMC Boot Camp, there's nothing in the way of standards enforced in this industry, so the quality of instruction you receive varies widely from vendor to vendor and instructor to instructor. 8 weeks is not enough to master even the basics of most topics in this field. You may walk out with enough knowledge to fake your way through an interview but that's about all.
Anything else I should know?
- If you have contacts inside a company, use them. It's often the only way to get your resume' noticed.
- As noted above, if a position looks too good to be real, it probably is. Get the details, and get them in writing.
- Burnout is too common in this field. From the beginning, set limits and take care of yourself and your family first.
- Never lie to an interviewer. If you don't know something, then "I don't know that, but I'm certainly capable of researching it or trying to figure out a solution" is a much better approach than trying to BS your way through a question.
Good luck with your career!!!