Hacker News new | ask | show | jobs
Ask HN: What can I do to be a viable developer?
9 points by jobsearch 4272 days ago
I returned from a year-long trip around the world a few months back. I worked as a lead developer for just over 4 years before leaving. I've spent the past 3 months applying for jobs primarily posted here but also from recruiters.

All that said, after many phone interviews and a few final interviews, nothing has panned out. I can recognize at this point that I'm not at the entry or mid-career level of working for the Googles and Dropboxes of the industry.

My question is what can I do to improve myself and get to that level? When given an assignment, I can accomplish it, but during an interview technical questions are my folly. I'm willing to put in the work, and if I must aim for companies that aren't as technically strong I will do so. I just need to know where to set my sights.

4 comments

I always used to tell people I'm an artist impersonating an engineer. I've never really felt like an engineer - let alone a good engineer. But I will never call myself a developer -- more on that in a minute.

Over the years, I must have had some daemon process running in my head that somehow managed to piece together the seemingly unrelated bits of engineering knowledge together without me really paying attention, because lowe and behold, one day I started to "get it". I am an engineer, first from what I know, and second from what I've learned and burned.

So let's talk about how to "get it" and get a job getting it.

Usually the first gate of high salaried engineering positions is good old fashion algorithm analysis. Get the basic data structures/types and complexities memorized to impress the desk jockies. Next pick a language, laser focus on the APIs, and try to implement the algorithm structures without using libraries.

I've interviewed dozens and dozens of engineers, and we always like to see that you know CS.

Next up -- we expect you to have some battle scars that only being in the trenches of engineering can give you. Learning the lessons on why and how you do things a certain way --- the common problems engineers face -- and the conclusions and solutions that have arisen out of them.

Also, have a narrative -- a story about your engineering background.

And stop calling yourself a developer! -- in some ways this simple word exposes your mentality -- let me explain why:

Developer in engineering land is another word for "hacker" -- e.g. someone who doesnt understand the nuances of programming, the finesse of refactoring, and the triumph of code that scales.

Dont be a hacker -- someone who brunt forces their way through a problem without the knowledge, wisdom and experience of doing things "more better".

The flipside is that most engineers start their careers as hackers... that is until we are not.

Once you begin to understand how chemistry, physics, math, number theory, language, and algorithms all tie in together to make this fantastical yet painful world of computing, you will know that you have gone down the right path.

Next??

Do you know what happens in memory when you execute a compiled program vs a high-level script? Do you know how code compiles, do you know what compilation is, do you know what an assembler is? Do you know what language theory is, regular expressions, turing machine, Alan Turing, finite state machine? Do you know what computation is, or how to manipulate bits and bytes to encode anything under the sun? Do you know the tenets of a solid API contract? What REST is? What HTTP is, TCP? DO YOU KNOW WHAT A POINTER IS?? Do you know what garbage collection is, do you know, do you know, the difference between ISAM and InnoDB?

There is a huge chasm between developer and engineer and you have to show that you've bridged the gap. It's like the difference between a jock and an athlete. One is faking it, the other one is making it.

All of this fundamental knowledge says nothing about the soft skills you'll need for success -- collaborative development, sharing code, translating business objects into engineering tasks, communicating effectively, etc. etc.

There is so much to KNOW and EXPERIENCE, but it's not impossible.

Learn all the things. Get your hands grubby, have some battles, tell a story. Above all else show that you can code, that you play nicely with others, and you make good engineering decisions.

This is all from the hearth of my engineering home. Others may have a different perspective, but this is mine, and if you sit in front of me and I interview you, this is all in my head and I'm 10 steps ahead of you when you need to be one step ahead of me. What does Potassium have to do with any of this? You tell me.

Finally, don't be a hacker (longer than you have to)

All else fails, fake it til you break it.

Bye, and Good Luck.

Thanks! This is incredibly helpful and I wasn't aware of the distinction between developer and engineer in engineering land. I can see the first major steps you've listed is algorithms, algorithms, algorithms. I think you described me to a T in that I'm closer to a hacker than an engineer. I know a handful of what you've listed (e.g., REST, HTTP, pointers), but I've got my work cut out for me.

It's time to get out of the developer world. Thanks again!

I wrote this almost subconsciously with my mind vomitting words. I'm glad it makes sense to you, but take another look I added stuffs.

Algorithms is a big part of it because it alone forms the major basis of why you write code a certain way. Is this code more performant, optimized, simple?

Get up to speed on engineering principles (Abstraction, Modularity, Simplicity, Scalability, etc) and object oriented programming (or if youre a JS lover like me the prototype chain) too!

I've re-read it, and I would say I have the soft skills down for sure. I like to think I did well at translating business to engineering, collaboration intra- and interdepartmentally, sharing and explaining code. I do at least the engineering principles you've listed. It still stands I have a lot of things to check off your list. Thanks!
It sounds like you're on track to be a very excellent project manager. Instead of engineering, you might consider being a technical project leader.

Looking back I'm shocked at how much I've learned, and if I had to do it all over again I might cry.

In my experience, it's kinda like dating. Nobody seems to want me unless I already have a girlfriend (so to speak). In that respect I think it's a framing issue, I would recommend just taking any old job (lower your standards), this lets other companies know that you're at least worth taking seriously.

Additionally, this would get you back into the rhythm of coding everyday. By my math you haven't been coding regularly in 15 months. Anybody would be rusty after that time off. Anybody would struggle over the technical questions in an interview. Once you start coding everyday you'll get that part of your brain back in shape, and things should go better.

Okay, I more than willing to take any old job. You're right on the timeline and rust. I've dusted off a fair bit by the end of these round of interviews, but I have a lot more to go. I think going this route makes a lot of sense. I just need to comb the market. Thanks!
What do you think is making you not attractive to these companies? What do you think are your strengths and some of your weak spots?
I think 'qodeninja nailed it on the head as for what I'm lacking. At this point I'm more of a hacker, someone who can put pieces together, rather than elegantly construct solutions. This comes quite quickly during the algorithm portion.

My strengths would be my quickness to adapt, and my ability to put together a myriad of technologies together. At my previous job I was able to switch between different development teams and get up to speed in short order. I created APIs, designed interfaces along with usability testing.

My weaknesses lie in the finesse. More algorithmic complex situations are tricky for me. Once I understand it, I can piece it together with existing solutions, but I would say my algorithm toolbox is pretty small.

Are you going to meetups? Do you have any projects you can demo and talk through?
I haven't joined any meetups. I have work projects I can talk through, but nothing public-facing.