Nearly 18 months ago, a person emailed me out of the blue asking for advice on breaking into software development.
He was a full-time student, trying to start a career in software development, but was paralyzed with the worry of making the wrong choice.
My response was applicable, I think, to anyone trying to get into software, and Iâm going to leave it largely unaltered.
I want to offer some thoughts based on what I see as main themes:
1. Getting your foot in the door in software development
I had to spend 2 years taking non-dev jobs, with the express understanding that my goals were to become a software developer, before I was able to assert my role in one job as a developer (after a pretty fierce battle to do so).
Just about any dev job you get is going to be just fine. Seriously, you can relax about that. The first couple are supposed to suck. If they donât, you wonât know what you donât want in your own company someday.
Thatâs not to say you should necessarily take the job in front of you, Iâll address that in a bit.
2. Setting long-term goals
You know how you have no idea right now which direction to go in? Get used to that feeling. Right now, a bunch of Rubyists are nervously looking around as they watch their platform stabilize while JavaScript takes off like a rocket. Nothing is set, nothing is guaranteed, and the notion of long-term goals is flat-out stupid.
Itâs crazy. Eleven years ago my job was to get lunch for people, and I decided I wanted to be a graphic designer. So I got a Mac and got really good at photoshop and illustrator. Then I got a video camera, learned Final Cut Pro, and decided to be a video editor. Then I got MCSE certified and decided to be a sysadmin. Then I started writing website copy and got into marketing for 5 or 6 years. Then I decided to try to learn to program and here we are. I defy anyone to look at that and determine a pattern that could tell me what I should do next.
So no, none of us know where we are in 5 years. But what you do want is a platform. You want to have a set of internally-consistent values that, when followed, add up to the kind of person you want to be, doing the kind of things that make you happy.
Maybe, at your age, all you can hope for is to have lots of different experiences so you can observe yourself in lots of different situations to learn the things that excite and motivate you. I donât know what that translates to when some douchebag asks where you see yourself in 5 years, but that question is dumb.
The only thing I know for sure is that 5 years from now thereâs basically no chance Iâm working for someone else. And I know I like helping other people understand their own capability. And I like building things. And I like technology. So advancing those things help me build my platform. At some point in the future, these things will converge in surprising and unforeseeable ways.
3. The role education plays in your career and future opportunities
I work for a CEO who wants to only hire CS-grad developers. If you want to do hardcore shit, a CS degree is often the first hurdle hiring managers will set up. But here I am, college dropout, contributing alongside my CS-educated teammates. Iâve not run into a situation where someone has said âyou have all the right experience, if only you had a degreeâ, while grads actually are likely to hear the opposite from time to time.
If I need to tell you why a bubble sort is inefficient or implement a binary tree search algorithm, Iâll just keep borrowing that knowledge from people who paid good money to go get it.
Iâve got a real problem with formal education in todayâs world, and Iâm sad to say that when it does matter, itâs about the piece of paper. Schools are no longer the institutions that push the boundaries of what is possible (they can no longer keep up)⌠thatâs going to happen at your workplace.
Hereâs whatâs crazy to me: Youâre becoming book-smart at school and street-smart on your own time. How in the world does that not make you completely unstoppable? (Hint: it does make you completely unstoppable).
4. The type of culture to select for
The underlying question is: how âyouâ can you be? Youâre always going to deal with cultural values that donât match your own in various degrees, but my time at my last employer felt extremely constrictive in that regard. It was like wearing a cultural straitjacket.
And you know what? It was totally fine. Glad for the experience. Wouldnât do it again, but I have no regrets.
But developers are a lucky bunch, and get to pick the kind of places they want to work. Youâll soon be in a position to say ânoâ to a lot of places, and Iâd recommend you evaluate culture on this alone: How comfortable are you being exactly yourself in this space? Thereâs stuff you value and do automatically, is it rewarded here? Or do you have to sort of pretend to be something youâre not?
5. Building your mentorship
Iâve received a bunch of advice by asking one-off questions at local meetups. But it all pales in comparison to that first couple of jobs. You donât have to announce that you need a mentor. Youâll just work with smart people and steal fire from the gods.
With dedication and patience, this will provide a mentorship to you that will rival anything you could have done by taking one of these bootcamp-style âbecome a developerâ programs.
Itâs up to you to stitch it together, but youâre doing all the right stuff.
6. Practice shipping
When I was just getting started, I felt like I had to know everything about everything, so I could ship something impressive. This is ego and it is folly.
I remember a meetup where a new developer demoed his first public work, and I had to stifle a chuckle, it was so naively built, simple, and unattractive. And then I bit my lip in shame when everyone heaped praise on him, because he showed up and shipped software.
If you donât yet have all the skills you need to ship your idea, youâre thinking too big. Start smaller. Donât worry about the design. Donât worry about doing it perfectly. Donât worry that itâs unoriginal, elementary, or even embarrassing.
Youâre on the second rewrite of your sample app? Did the first one work at all? Ship it. Did it almost work but not quite? Ship it. Was it ugly? Ship it. Untested? Ship it. âIf it doesnât embarrass you, you shipped too late.â
That lesson, the ability to let go of perfection and get something into the world, scales up as you become more broadly skilled. Learning that is vastly more important than learning proper CSS technique or TDD. True story.
7. College degrees are not for job applications
I very, very rarely offer blanket-statement advice to people. But here is some: you should go to college to learn and do the things that fascinate you. Period.
As time marches on, when itâs time to wave your piece of paper in front of someone, it matters less and less what that paper is for. Most of my favorite developers are former designers and writers. These are people who approach code from a variety of philosophical angles, rather than a predetermined set of problems that need the right algorithm to be solved.
Youâre obviously a sharp written communicator, and that bodes well for you as a developer, as theyâre strikingly similar pursuits in many ways. More importantly, communication skills open doors for you in areas of software that are typically closed to engineers who prefer to let their code do all the talking for them.
College is not the networking opportunity that it once was. Thatâs all extracurricular now due to meetups, groups, Twitter, etc. If CS continues to fascinate you, go crazy, but if youâd rather go into the humanities, philosophy, accounting, whatever, please do what your heart dictates and donât put your as-yet-undecided career goals in the driverâs seat.
Lastly, a note about tailoring your degree to get jobs:
HR people post jobs. HR is a relic. HR is a joke. HR speaks buzzwords, degrees, and checks off boxes. Prerequisites like years of experience, technology-specific requirements, and even college degree requirements are a lie.
Youâll get damn few jobs through the traditional Apply => HR Screen => Interview process. Maybe your first couple. But itâll snowball from there and itâll all be your existing body of work and your reputation, until the only people that hire you are people that want just exactly you in a role that they know will suit you perfectly. So itâs pretty shortsighted to tailor your expensive, multi-year, potentially mind-expanding educational experience to please some resume-shuffling HR rep at one or two companies youâll only be at for a year.
8. Switching jobs
I think a given developer is 6â12 months from being proficient in any language/framework of their choosing. Donât let 5-to-10-year veterans intimidate you: many of them have had the same year of experience, 5â10 times.
In fact to prevent this, you should plan right now to switch jobs frequently (every 18 months or so), at least at first. Youâll watch your experience diversify and your pay jump up ferociously. (But donât get addicted to the money⌠it levels off after that and studies show over $75K actually decreases happiness.)
So in essence: Ignore money, and pick the place with smart, helpful coworkers and a technology stack that you want to develop your skills in.
A note on self-effacing honesty:
What people refer to as âhonestyâ or âhumilityâ in your cover letter (and your telling people in no uncertain terms that youâre âjuniorâ in need of âmentoringâ) is actually pessimism. Pessimism is a precursor to depression. Many of my bouts of depression can be directly traced back to prolonged moments of pessimism, masked as âhonestyâ. Go buy the book Learned Optimism. Seriously. Do it now. The book wonât solve all your problems, but it will open your mind to the idea that you have the ability to change these thinking patterns.
This self-effacing form of pessimism is one of my big downfalls, even up to this very day and minute. If you want to get a 10-year jump on me, start projecting an undeserved air of confidence, because you deserve it more than you currently know.
This advice is for me as much as it is for you: Stop apologizing for what you donât yet know, and take some damn credit for being bright and hardworking enough to know it in the future.
Iâd suggest trying to load that into your brain and taking another crack at your cover letter. Youâre a startlingly bright dude, and Iâm delighted that you donât yet see your absolutely limitless potential because Iâll get to steal some credit when youâre a big famous programmer.
Thereâs a lot more Iâm sure I could say, but Iâm too tired to think straight right now. Iâm glad to know you and excited about your prospects.
To him, these choices were life-altering. Choosing one job over another, being rejected by potential employers, pursuing higher education⌠all these seem like life-or-death situations at the moment, but with the benefit of time & an external perspective, a person can relax about most of it.
This person I barely knew at the time is now one of my closest friends, and I think the advice was helpful. With the benefit of 18 months of additional hindsight, Iâll doubly endorse the words above for any aspiring or new software developer.
If youâre looking to break into software, hit me up here or on Twitter, Iâm curious to gather peopleâs experiences and questions for a proper blog post in the future.
Originally published on brandonhays.com on April 5, 2014.
I found this post super informative and decided to share it here with the permission of Brandon Hays. Let me know if you also found this informative.
Here is another article you might like đ "I underestimated the responsibilities of UI/UX designers"