39

I completed my undergrad in computer science 6 years ago. The only reason I had majored in CS was because of some family pressures even though I wanted to be a writer. After I graduated, I had promised myself I would give my dream of becoming a novelist a shot. I was an average engineer in college too, just doing well enough to get a 3.4 GPA.

After 6 years of failure and rejection to get my work published, I have failed miserably. I haven't programmed in 6 years, but seeing my avenues close, I feel like there's nowhere to turn to but my degree.

However, as you can imagine this seems like an almost impossible task. I have bought "Cracking the Coding Interview" and taken some Udemy courses but I almost have zero self confidence. I'm 28 and just need an idea on how to get started again. I can do basic programming questions from the book but I seem to have a lot of gaps on my basic knowledge.

What should I focus on to get an entry level SDE role in 6 months? If there's anyone that can provide an suggestions/input, I would appreciate it.

6
  • 34
    @JoeStrazzere that is also a good suggestion. A job in technical writing or as a PM might be in OP's wheelhouse. There might be a less technical position that still leverages their CS background in an interesting way. Commented Mar 4, 2019 at 11:26
  • 1
    I will look into those options as well, but I still want to continue building my skills since I have sort of come to the realisation that passion doesn't count for much. I see my close friends from college, living lives that I see myself living someday. I am smart, went to a top 20 school in the US, so I feel I can at least become a moderately succesfful engineer. Or maybe a PM. Another aspect of being an SDE that attracts me to it is the fact that, it's one job that can be done remotely and will exercise my analytical abilities. In my mind, right now, following that path seems 2 mike sense.
    – rdpro
    Commented Mar 4, 2019 at 11:35
  • I don't know if my thinking is correct or not but that's sort of what is going on in my head. I'm defining my goals and the parameters of my success based on what my peers have achieved. I don't know if it's a good strategy but that is what I am thinking right now. Low self confidence obviously also has had a part to play in all of this.
    – rdpro
    Commented Mar 4, 2019 at 11:37
  • 4
    Alex, thank you. You've given me something to think about.
    – rdpro
    Commented Mar 4, 2019 at 11:57
  • 4
    The average GPA is closer to a low 3.0. You were, if nothing else, above average in school.
    – Rich
    Commented Mar 4, 2019 at 14:50

11 Answers 11

65

First off, that you spent six years of your life pursuing your passion shows tenacity. That you knew when to cut your losses shows good sense. I know it's disappointing that things didn't work out, but there's nothing to be ashamed of in failing to start a career as a novelist. It's a brutally hard and arbitrary industry, and any worthwhile employer should be able to recognize that.

Now, you've taken some good first steps in shoring up your technical skills. Go over the usual interview prep books (Cracking the Coding Interview, Programming Pearls, etc.) and start applying to entry-level jobs. See if you have any friends in SE roles that might be able to get you an "in" at their companies. If your university has a solid alumni network, it might be fruitful to reach out to someone in your class. If you had a good relationship with any of your former CS professors, they would be a good resource, too.

You should also consider applying to programming-adjacent positions, ie. those that make use of your CS training, but don't require you to program all day. Good technical writers are in short supply. A role as a program manager might be in your wheelhouse, too. Think outside the box in terms of industry, too. There are good, rewarding, technical jobs outside software firms. (Thanks to @JoeStrazzere for thinking about this in the first place)

Also, it might be a good idea to talk to a counselor, a therapist, or even a family member or friend re: your self-confidence. There's no shame in reaching out to others for help when you're down. Your technical skills will return and even improve with practice, so it would be worthwhile to start a toy project, contribute to an open source project, or even just do some practice challenges on prep sites (eg. HackerRank, LeetCode, etc.).

Best of luck!

10
  • 1
    Hi Alex, Thank you for a kind, thoughtful and positive response. I am currently in Therapy, but do you think besides doing these challenges, should I also focus on a certain set of skills more useful for the workplace? Python is my language of choice and something I feel slightly more comfortable with, but should my focus be more on Javascript or a something in more demand?
    – rdpro
    Commented Mar 4, 2019 at 11:14
  • 1
    That makes sense. Thank you. I'll look up resources from various MOOC's and the practice sites you mentioned, however, if you know of any specific resources for revision, do let me know. And thank you for your advice Alex.
    – rdpro
    Commented Mar 4, 2019 at 11:19
  • 3
    Pursuing the most "popular" platforms/languages/technologies is advice that is good for employers but not necessarily for individuals. If you only aim for popular skill-sets, you will find yourself in competition with an ocean of talent and face not only lower chances of getting started, but also diminished salary outcomes and less promising career trajectory. Much better, I think, to find a niche where you have much less competition and where you can leverage your talents (whatever they are).
    – teego1967
    Commented Mar 4, 2019 at 12:10
  • 2
    That's a good point, but on the other hand picking something very narrow decreases the number of jobs you have to choose from and the locations you can live. Think of LabView, for example. Commented Mar 4, 2019 at 12:18
  • 1
    @rdpro Online sites help plenty, but to get back to your “university level” education, it might be a good idea to buy a book on software design in your language of choice (Java, C#, Python and Ruby are good starting points). Maybe a copy of Clean Code as well. Read the books, do the exercises, and apply the concepts to a personal project like Alex mentioned. In a few months you’ll be about the same level as recent university graduates who have little to no real-world experience. Then you can apply to entry-level jobs and work from there. With some practice you’ll be back at it in no time! Commented Mar 4, 2019 at 12:22
36

Okay: Back story, I had a stroke and couldn't work for 5 years.

So, here's how you do it.

You can brush up, and get recent experience by doing volunteer work. If you need to work somewhere to at least have an income, work retail, or fast food, or wherever so you have some income.

To get some skill back, I did volunteer work for a hospital.

Then, what I did was I picked a convenience store chain that had their own internal IT department, and then started applying internally.

You can also start doing a bit of freelance work for family and friends.

The key is that you just get out there and start doing SOMETHING in IT. That's your foot in the door. Once your in, you can build your reputation internally to that company, then climb the ladder, or apply to another company. People like to see initiative, and in my case, interviewers who saw my determination were impressed and that opened a lot of doors to get me back into the field.

I made it back, and so can you.

2
  • 3
    +1 for a positive real-world example! I think your last paragraph is definitely the most important though. Do something (anything!) in the field and build upwards from there. Once you have a starting point it gets a lot easier. Commented Mar 4, 2019 at 15:52
  • "The key is that you just get out there and start doing SOMETHING in IT". Pun intended?
    – user100927
    Commented Mar 6, 2019 at 11:10
8

Your question, in your title at least, was,

What to focus on

I do think there's good advice in the other answers, but I also think there's a very important point that's implied but glossed over:

Focus on finding a job that's rewarding for you - one you can perform well at - versus focusing on trying to mold yourself into what you think employers want.

Trying to be someone you're not - whether in a relationship or a job - is never fruitful for either party in the long term. As a hiring manager, I don't want to hire the person who tried the hardest to match my job description. I want to hire the person who has a passion for my job description. You can go pick the most popular languages and study how to do well in interviews, but unless your heart is in it, it's probably the wrong job.

7

You spent 6 years pursuing your passion of writing and you graduated with a Computer Science degree!

Companies are always in need of a good Technical Writer and with your experience and skill set, there's no reason you wouldn't be able to find a job as one! If you are still passionate about writing and you want to get better at programming then I think applying to be a Tech writer is the perfect avenue for you. You'll be learning CS related topics while continuing your writing passion.

3

Six months is a lot of time to brush up on programming skill and get to a decent level in one area of programming. It might vary a little bit on your location, but usually it should be possible to score a job if you have some commonly needed programming skills.

Figure out what the job market around you is like and you find most appealing:

  • If job offers are for embedded software learn C and C++
  • When you see yourself becoming a programmer of enterprise software, you might learn Java/.NET and SQL.
  • If there is demand for Frontend web developer, learn JavaScript, HTML and CSS
  • If you are more leaning to the backend side do Python plus some MySQL
  • ...

Then spend most of your time learning all about that area.

One way to learn the language is to go by web courses and tutorials, but these alone will not bring you to a decent level, because most of the time they present you problems in a sandbox and don't teach you problem solving and what you need is real world experience.

Do your own project: Write and host your own website. Write c and link code for a cheap embedded platform.

Make some contributions to an open source project. All the way from checking out the code, getting it to run, understand how it works, have an idea for an improvement, work on the commit, get rejected for a couple of times because of concerns, reiterate and get it accepted.

All of this will give you real world experience about software development.

While you are doing this, keep applying to jobs and try to get to interviews: This will keep your mind focused on the market, and always ask for feedback in what you can improve. A company might tell you what you are lacking knowledge about technology X and it will take you only 2 weeks to learn the basic of it, by applying it to your project.

E.g. if a lot companies ask you about kubernetes, it might be time to run your pet project in a container, afterwards you know more about kubernetes than the majority of the industry ;)

2

You can behave just as any other person changing their profession, with the added benefit that you actually have a degree in it.

I had my degree not in the CS field, but managed to build my developer career after 6 years in another field.

What worked for me is:

  1. Getting CS education - that's what you already did.

  2. Getting a hands-on development certification. In my time it was called MCPD - it was Microsoft's certification in .NET technology.

  3. Creating a small standard web project to show on the interview.

  4. Finding an entry level dev job in a small company with a plenty of responsibility for a little money. I started at about 2/3 salary from what a regular CS grad would start, even that I was 6 years older, more mature and had years of experience on a real responsible job. You'r still young and I think more mature age is to your benefit, as well as your more diverse background.

Additional good resource is https://github.com/jwasham/coding-interview-university - has pretty all the material you need to pass the interview successfully.

Confidence is built by doing stuff by hand and from failing interviews and learning from mistakes. I specifically was lucky, but I know someone who did more then 30 interviews before they landed a pretty decent job. The more interviews you fail, the more chance is that you'll pass on the next one.

I would argue that going to QA/tech writer/adjacent job is worth it only if that's what you want in the first place. I've seen people going adjacent route as a means to get into dev field, and I won't advise it. It shouldn't be that hard to find an entry level dev job and go up from there.

With all that said, you should be really decisive about starting to be a developer. It's very effort consuming and if you don't really love it, you have a chance to find yourself miserable and hating yourself. You know, sitting before computer all the day trying to wrap your head around all kinds of tricky problems... It's not that different from writing if you ask me :)

I love this field and that's why I didn't mind handling the hurdles. You'll also have to show somehow that you are really excited about your job and won't do it begrudgingly, saving effort for the all night writing sessions...

Good luck!

2
  • 1
    Creating a small standard web project to show on the interview I think this is the absolute best thing to do in OP's situation. Development is a hands-on learning process, and the best way to learn it is to do it. It gives you practice, and it gives you something to talk about during interviews.
    – Rich
    Commented Mar 4, 2019 at 14:57
  • @Rich – I would say that at entry level, desktop apps are easier to write and debug than desktop projects.
    – miroxlav
    Commented Mar 4, 2019 at 16:58
0

For a six month timeline, you've got a fair amount of work cut out for yourself.
I learned to be a web developer in under six months last year, so you can do it too!

I've never worked with Python, but it fills a similar role to Javascript in the current software industry, being primarily UI/Frontend oriented and used in web development.

Fortunately there is no shortage of jobs in this field.

My strongest recommendation is to go away and build a web-app/website with Python, brush up on your knowledge from university (if you've still got the learning resources, take a good refresher through it)

Practical application is easily the best way to bring back forgotten knowledge.

Once you're feeling confident, scrap the project, build another one. This one will be an advertisement for your skills. Make it nice, make it look professional. Essentially use it as a second CV.

Now you can start looking actively for jobs!

While you hunt for jobs, try learning Javascript and work on web-development with that. Once you have a fair handle on it, add it to your job-hunt parameters, being able to say you know multiple scripting languages will look great.

Once you have Javascript down, Look into something like vue.js, it's a great toolset for modular web development, it's relatively new and trendy and it looks fantastic on your CV.

You should have a job by now. So keep developing your skills. Whatever your job needs, try and take it head-on.
If new tools crop up, take it upon yourself to learn them.

You want to be the low-experience high-enthusiasm dev. It's a good way to learn fast and establish yourself.

0

I was in the same situation. I majored in Computer Engineering and then switched to Computer Science. After college I joined the Military as an Intelligence Analyst for 6 years, then I trained soldiers as a civilian for 4 years. At some point the Military wanted to customize their SharePoint site, and I said I would take a look at it. I ended up winning a million dollar contract for a team of 6 building and managing several heavily customized SharePoint servers. I've been the lead on that contract for 5 years.

Confidence levels depends a lot on where you went to school in my opinion. I went to Clemson and was absolutely grilled on datatypes, algorithms, and database management. My senior year (2002) we focused on parallel programming, engineering and modeling. I was spending 40 hours a week in the computer lab for just a couple classes.

My wife went to online college for Information Technology emphasis on .Net. They didn't teach her very much IMO. She learned some basic logic, and was exposed to a couple languages. I taught her how to code before she went to school, and she got a job as Frontend SharePoint Developer (HTML, CSS, JavaScript, JQuery). She basically worked for me in our company so she had a lucky break that we couldn't find anyone else to hire, and the boss trusted me enough to give her a shot.

No matter where you went to school the only way to get into this is to DO IT. Find a personal project that you will spend 20+ hours a week doing. When I learned C# I decided to build a gaming engine for a turned based tile game. None of the other game engines could manage a large world, and I wanted to be able to load around 16 million tiles. I spent 3 months on it, and basically got it working. There are some serious bugs where edges of the sections of map sections don't always align right, but the point wasn't to make a perfect engine only to learn how to write C#.

First you have to figure out what you want to do in order to figure out what you need to learn.

Couple of examples:

Web Developer - HTML, CSS, JavaScript, JQuery, AJAX

Software Developer - C++ or Java or C#

Database Administrator - SQL, Shell, SSMS

Just do some research on what you want to do. You will be able to self teach much better if you are actually interested in it.

0

Way 1: Going fully into programming:

To gain self-confidence, try some hobby project where you create a program for yourself. Depending on programming area what you like or where would you like to work, it can be:

  • a home database with input forms helping you with hobby, consumption tracking, book registration, finance, ... what you like and need
  • a system utility helping you with routine computer work
  • a calculator for photography, astronomy, music, engineering, encryption, ... whatever you already know
  • a simple computer game, for example 2-D platformer using Unity engine.

You can implement these things as desktop app, as mobile app or as a website. Difficulty may differ. The desktop app is probably the easiest to begin with.

There is a ton of tutorials for each area so start with some and steer the development how you like or somewhere to the computer science area where you would like to work later. Before applying for a job, have at least something done.
 

Way 2: Going partially into programming:

Think about software consulting roles. In many of them:

  • You can start with low programming skills. Often it is an university degree + basics of Java.
  • Programming is typically only partial, many of the tasks need different skills: adjusting system settings, processing data, supporting the customer on issues and incidents.
  • Even as a senior later, you will be still programming only part of the day and only relatively easy tasks (compared to standard programming roles).
  • There you can benefit from your communication skills as well as from technical skills as some part of the day you will be sitting on meetings or calls with the customers, discussing, explaining, running down the task lists etc.

Consulting role is a good balance between work in programming language editor and work with people. If you do not feel like 8-hours-a-day programmer, this can be very satisfactory way for you to use wider scale of your skills.

0

First off, I want to say that I feel your pain. I've been where you are: I got halfway through a Masters degree in the field I'd always wanted to work in before realising I just couldn't cut it. Half the lectures went totally over my head, and it took every iota of brainpower I could muster to work through questions that my classmates could solve with very little effort. So, I'm going to suggest that you do what I did, which is to step back, and take stock. I sat down with a pen and paper and listed out what skills I was missing that were causing me to fail, and which skills I'd proved I did have. From there, I ranked them based on how much I actually enjoyed doing those things, and then started looking for career paths that focused on things that I was good at and liked to do.

Let's look at what you have:

  • a technical background, from your CS major, including technical concepts and theory. This won't have changed all that much in 6 years; I'm a software engineer, and I still use stuff from my uni textbooks that I got eight years ago.
  • a good command of language and experience at writing; you've written novels, revised and edited your drafts, and experimented with ways to express ideas.
  • the willpower to keep going at something even when it doesn't work out; rejection is incredibly demoralising and you stuck it out for six years.
  • the strength to choose something you need over something you want; you're now looking to leave your novels behind and go into a career that you never chose
  • the pragmatism to accept what you can't change and deal with it as best you can; you've accepted the idea of entering the industry at the bottom.
  • a willingness to put in the effort to learn what you need; you've been picking up books and online courses to try to improve your skills.

Basic technical grounding, willingness to learn, communication skills, pragmatism, strength of character. To be honest, that's almost everything I'd look for in a candidate for a software role. However, you seem to be missing one key element: enthusiasm. You said you never particularly chose software engineering yourself - your parents pressured you into it - so maybe there's a path into the industry that uses something you are more excited about.

Looking at your skills and background, I reckon you'd do well in the design and planning space. Any company who wants their software engineers to produce quality software should be backing them up with analysts, project managers, designers, and the like. The role of business analyst in particular jumps out at me. A BA is there to bridge the gap between the technical space where the engineers live, and the domain space where the customer lives. Their job is to understand the problem that the software is intended to solve, and turn it into specifications and requirements that the engineers can work to. Good communication skills are absolutely vital here, as well as the ability to put yourself in the mind of the user, and a little imagination - all skills that your time as a writer would have polished. A technical background helps; a business analyst doesn't necessarily need to be able to write the code, but if they have a basic grounding in theory then they can start to spot possible problems way before they happen, and either explore solutions or manage customer expectations, which is a huge boon. Strength of character and the pragmatism to accept things that can't be changed are both very useful too; it helps you push through when projects get difficult, stay positive, and keep your team motivated and focused. But most of all, for someone who originally wanted a career in writing novels, you might find it more rewarding to pursue a role where you engage with people, draw out their stories of what problems they're facing, and help them to communicate that effectively so that their problems can be solved. It's the closest you'll get to storytelling in the software industry, and it's a vitally important part of building quality software.

0

Many great answers, and I'm taking down the suggestions myself.

Important to note that your efforts at writing were not wasted. The Average, or mean (must look up the difference again) number of successful writers/novelists in all the millions who are working at it is zero, 0. This point was in a study in a Jordan Peterson talk on monetizing one's art work. The competition is truly murder. Surviving and moving on is an entirely respectable outcome.

Importantly you must resist any family pressure to go where they Think you should go. Long and sad lives are spent this way only to find the passion lies elsewhere. It looks like you are young enough and free of greater responsibilities that you can do whatever you prefer. Just because programming can make more money than other jobs is not the reason to choose it. You will only live happily doing a job that truly gives you pleasure. It is likely to be a few jobs away but don't close yourself off to more creative avenues in, about or adjacent to programming.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .