Live data from Hacker News

Ask HN: How did you become a software engineer?

news.ycombinator.com

51–60 of 83 posts

Re: Ask HN: How did you become a software engineer?

#51
> How did you first get into programming?

I stumbled upon a book titled 'The magic and mysteries of the command line' when I was ~13 and I've been hooked ever since.

> Were any books, blogs, forums, or people particularly helpful for your growth?

See some of my earliest posts, they are hilarious[1][2][3][4]. In each case kind strangers provided valuable insight, for which I am very grateful.

[1]: CMD pls help

[2]: Is in this code something wrong, my CPU is that bad or its normal this code

[3]: Hello, I have tryed to code simple aplication for calculation of linear equation (like x + 1 = 5) but i ended cca here:[...] but dont know, how to finish it and above all i think it isnt coded werry good. Please, can you help me with it?

[4]: Hi, I have disassembled virus (which btw stolen my WoW password few years ago) using W32DASM to get it's includes, and it contains only one function (KERNEL32.ExitProcess). I'm sure that isn't the only thing the program does. Is there any way to get real list of functions of the program?

I also had a great friend whom I met while playing World of Warcraft. He was about 15 years older than me and we exchanged >100k messages about programming. When I mention this people assume some ill intentions but I wanted to meet him in person and he wasn't interested, and we're still in touch. What a kind man. He even wrote a PHP tutorial just for me. There were a few more experienced developers to whom I reached out who had a significant impact in the early days.

I can't think of any books other than the aforementioned magic and mysteries that had a profound impact. The source code of major projects is the best resource. Learning Scala had a positive impact, even though I don't use it these days, because it enriched my vocabulary of programming paradigms. It also helped to complete all the standard theoretical CS courses at university which is also more about learning to think than being able to solve some concrete problem. Anyone can take these courses for free thanks to MIT OpenCourseWare[5]. MIT OCW is the most valuable resource other than source code.

> What is it about coding that got you hooked?

It was during a rather unfortunate period for my family and I was certainly trying to escape reality. It was an escape, an alternative reality that was much more interesting than the real world. Part of it is also my curiosity about how things work which I probably take from my father who is an extraordinary craftsman and a self-taught expert in many areas.

[1]: http://programujte.com/forum/vlakno/5618-cmd-pls-help/

[2]: http://www.rohitab.com/discuss/topic/28776-cpu/#entry1002881...

[3]: http://www.rohitab.com/discuss/topic/30229-linear-equation/#...

[4]: http://www.rohitab.com/discuss/topic/36006-w32dasm-includes/...

[5]: https://ocw.mit.edu/courses/find-by-topic/

Re: Ask HN: How did you become a software engineer?

#52
I started out as a mathematician, interested specifically in formal logic. Got into a well-regarded undergrad program on track to to a PhD. My particular area of interest was and remains logical systems that _appear_ correct but ultimately turn out to be flawed. What is the nature of that flaw? How did the nature of Proof factor into the flaw? How was the flaw ultimately detected and what was its consequence?

Anyhow, I'm a pretty good mathematician and that doesn't really cut it these days. I saw pretty clearly some of my co-students were _much better_ in the field than I was and knew from the experience of older friends that even the very best struggle on in a life of low-pay TA jobs, shuffling from school to school. My undergrad work in math had gotten me interested in proof assistants and I was increasingly interested in how the proof machinery itself work. Aside from some assembly programming on an Apple IIe that was more just copy and paste I had never really been interested in computers as a mechanism but that changed very much in my early 20s.

So, I bailed on math and bailed on my fancy private school and went to a well-funded state school doing neat work on the "multi-core crisis" and had a lot of Haskell luminaries kicking around. I gradually came to learn I really enjoyed and was pretty good at systems programming, especially the tricky bits that deal with machine non-determinism but must obey stated semantics. For me university was a truly excellent experience, coming at the field cold. I learned that I really enjoy the mathy side of computer science and that computers as machines are delightfully flawed logic systems. I was also exposed to the humanities in a way I might not otherwise have been in undergrad. Without that appreciation for literature and history I would have been poorer in my person and my later work would have been naive.

My first gig was in undergrad while I was at school and I was not at all qualified for it, looking back. My first actual I-am-good-at-this gig was at AdRoll working on the real-time bidding engine. Very interesting work, even if I don't love, looking back, on what that work spawned. Understanding failure in software at high-scale led me into statistical reasoning in a way my logic background never did, likewise into the work of Joe Armstrong and Jim Gray. I was also forced to understand the machine properly from the point of view of building machine sympathetic software. From the AdRoll experience I got the two dipoles of my career: systems programming and fault-tolerance.

Now I work at Datadog on the Vector project, specifically focused on improving Vector's internals to make it machine sympathetic _and_ easy to work on without specialist knowledge. I love that I'm able to do practical research into the optimization of a serious product again -- haven't really had that since AdRoll and the field has moved on quite a bit, hello eBPF -- and push on the boundary some of what it's possible to do with a handful of machines. With regard to what I hate about my present job nothing, but about the _career_ I do really dislike how much we've managed to reward narrow-focus ignorance. That is, a goodly number of software folks have a lot of success just focusing on computery bits and not much else, fine, but the culture of software sort of sees the world through that lens solely. At its best you get a kind of narrow utopianism -- if only our computers were good enough something something perfection -- and at its worst you have folks of authoritarian bents with cash like you wouldn't believe. I wish the field valued monoculture less and broadness of education a little more.

Re: Ask HN: How did you become a software engineer?

#53
I started fixing PCs when I was a kid, I even started a PC repair and networking business. This all happened because my parents had a PC and I would tinker with it, break it and have to fix it before they got home from work. I also had a few friends of similar aptitude so we would all work together.

Quickly moved on from Windows to Linux systems. Got a job at 16 writing bash and Perl scripts as well as HTML for the local University. This was right around the time of the web taking off in 1997. I was lucky to have early Internet access at home etc... I then picked up python at some point. It wasn't until University that I finally grokked C++, Haskell and later Java. If anything I had too much hubris but in reality, I had always been afraid of programming because I felt it required too much math. I was also deeply unaware of the business opportunities in retrospect at every level... I think I thought things were supposed to be harder or difficult to be a real business. PC repair and networking certainly wasn't scalable though.

Today I work in machine learning after going through grad school. The best part of grad school was being exposed to the problems and working with really smart people. This was in the early days of bioinformatics. Today I think there's even more opportunity but it was foundational in retrospect.

Today my kids are working on Roblox games which I hope will motivate them to learn programming. Maybe we will build some robots too. I hope the ability to see the code in action will inspire them?

I bought them iPads and chromebooks and they seem to be doing well with them. I hope they will ask me to turn off the parental controls and some point so they can get into the internals of the chromebook at some point but right now they are a little too young and are just learning to use the mouse and keyboard after the whole touch experience. We probably need touch screen chromebooks I guess.

Re: Ask HN: How did you become a software engineer?

#55
The first time I dabbled in programming was making modifications to QBASIC files in DOS. I wanted multiple lives in Nibbles, and I wanted to make nuclear bananas in Gorilla.

I continued programming as a hobby, usually as part of some other project: making video games, websites, tools, or visualizations for school. Sometimes for pranks.

I ended up working as a developer for about 12 years, mostly in Javascript and Python, but also Ruby, Lua, and Java for a couple years.

During that time, I was also learning design, and I've since switched to doing that.

I take the weird position that design is not all that different from engineering, it's just working on another part of the process. What I like about programming and design is that they're about problem solving, and you are given a set of requirements and goals, and your job is to find a best-fit solution.

What I don't like about programming (the kind of programming I was doing) is negotiating a rat's nest of dependencies: these 15 poorly documented libraries, this hip new framework, and this methodology we're using now because someone wrote a persuasive Medium article. The constant churn of fashion-based engineering got to be a drag. I still like programming, I just don't do it for money these days!

I've never taken a CS or SE class: my degrees are in English and Library Science! My knowledge has been cobbled together on an as-needed basis. So, there are major holes in what I know, and I sometimes feel like a guy who knows a few tricks and uses them for everything. If I'd known what my career would be, I probably would have studied those subjects instead.

On the other hand, the best programmers I've ever met did not even go to college, they were self-taught. So, it's clear that you don't need a degree if you are motivated to learn.

Re: Ask HN: How did you become a software engineer?

#56
I was a law student who got sick of legal practice, and found my passion for programming through luck. I actually wrote a reflective blog piece on my journey recently if anyone is interested - https://medium.com/@fabianterh/celebrating-1-year-as-a-softw...

(It's not paywalled and I don't earn a single cent, so I hope this isn't against the rules)

Re: Ask HN: How did you become a software engineer?

#57
My high school had a comp sci class (this was 1997, so only the 2nd year they offered the class). My father did some programming when he was younger and suggested that I take it. The class taught Turbo Pascal, which can be a little difficult for some people, so even though it started with over 90 people, there was only 18 of us left in the end. All of us passed the more advanced AP test and I think 15 of us got 5s. Credit goes to the teacher (Mr. McCollum at Calabasas High School), since I think lot of us went into programming as a career with a really high level of confidence. I did IT when I was in undergrad, which I didn't really care for, but my first full-time job was as a software engineer at an media company. Also, not the best situation since the software team is really just a support group, which can be an after-thought for management. It wasn't until I started my own company, after graduating business school, that I really appreciated the opportunities and freedom that programming offered me. Best time of my life (career-wise) were the first couple years of the business when I people were excited to use something I built and actually paid money for it.

Re: Ask HN: How did you become a software engineer?

#58
M 37

> How did you first get into programming? Were any books, blogs, forums, or people particularly helpful for your growth? What is it about coding that got you hooked?

My family got our first computer when I was in middle school. A Pentium 90MHz with 14MB of RAM, a 200MB hard drive, SoundBlaster 16 sound card, 5.25" and 3.5" floppy drives, 4x CD-ROM drive, running MS-DOS 6.22 and Window for Workgroups 3.11. There was no consumer-facing internet at that time. Just figuring out how to play a game with a joystick required learning about CPU interrupts and DMA channels for the sound card (and telling games which to use for what), serial ports for the joystick, and adjusting memory allocation in `config.sys` and `autoexec.bat` for DOS because none of those things were done automatically back then and different games had different needs, particularly with the memory allocation, so making special 3.5" floppy boot disks was also common.

All of this required learning how to navigate on the DOS command line and editing text files by keyboard only, so it was a pretty high activation energy to play games on the computer instead of my Game Boy, but the difference in the experience drove me to get there.

One day I randomly stumbled upon `qbasic` and the `gorillas.bas` file, a fully working game of two giant gorillas standing on top of skyscrapers throwing exploding bananas at each other, that I could edit and run. It had a few global variables at the top with explanations of what they were for. I recall laughing at changing the gravity to 100x Earth's and watching the CPU player try to throw the bananas and having them drop instantly and explode itself.

From there I tried to make changes to the rest of the code below the commented constants but that usually ended in disaster. I eventually figured out the parts of the code that were used to draw rectangles, lines, and circles, as well as the random number generator, and I ripped them out into separate files and started making "screensavers" that would spam pseudo-random garbage onto the screen in different patterns as fast as the CPU could do it (because I just put the logic inside of an infinite loop, though I think I also had a space bar press check at some point so I wouldn't have to restart the computer to exit).

For as much shit BASIC gets (rightly, for the most part), that immediate feedback and ease of development let me experiment quickly and experience the almost magical ability of computers to turn your imagination into reality if you can make "the right incantation."

I knew that BASIC was too limited to do what the games I was playing could do, and I would need to learn a language like C to get to that point. I was also drawn to seemingly simple things like Microsoft Paint (and later Corel DRAW!) and the simple Sound Recorder application in Windows, and I could not comprehend how these tools were made.

Flipping through some books on Windows programming and OLE and etc in a local bookstore discouraged me because I didn't have the CS background and technical jargon knowledge to understand most of what I was reading. I projected from the simplicity of DOS to what I was seeing with Windows and assumed in a decade it would be even further along and completely beyond my comprehension, so I didn't push much harder than that in middle school.

In the summer between middle school and high school, my uncle gave us a copy of Visual Studio 6.0, which included VisualBASIC 6.0, which let me make desktop applications that looked like the ones I thought were impossible for me, which got me back into software.

My (public) high school was very forward thinking at the time, and offered electives in C/C++ (it was C but with the silly `cout The web class was a combination of learning HTML and Frontpage, but the teacher was very nice and didn't discourage me when I started experimenting with this JavaScript I found while poking around, and I made some sites that would make the text appear a letter at a time in a typewriter font as if it was being typed by someone, I made a Single-Page App in 2000 by putting all of the contents of the site into JS strings and having menu navigation presses replace the `innerHTML` property, etc.

That also made me aware of software development outside of what Microsoft provided to consumers, and I was getting fed up with the Visual C++ books I found in the book store that didn't explain anything but walked you through step by step on how to do things in "Wizards."

Near the end of high school or the beginning of college I found Red Hat Linux and I enjoyed playing with that alternate operating system that I could (theoretically) change any part of it that I wanted to. And I ran across a plain text C programming tutorial centered on GCC and Make that explained exactly what was going on and how a binary was made and how it worked with the operating system, and that's when I was hooked on Linux.

Even after that, I was still pursuing a different field from actual CS. I started with Physics and then switched to Electrical Engineering, even getting a Master's there. Along the way I also learned Perl and CGI scripts for web hosts and used that plus my Linux knowledge to help manage my Research Lab's 2U servers, and write helper tools for parsing all of the measurement data we were making.

I had actually entered grad school in 2007 because I felt like the economy was shaky and I had lucked out, avoiding the 2008 crash where I probably would have been fired during those layoffs. I stayed in grad school until 2012 pursuing a PhD, but a combination of getting married and having a kid, my wife also being in EE (and so our economic eggs being in one basket), and a part-time job at the university working on a CRUD web app for gathering, storing, and approving/denying animal research proposals pushed me to go for programming full time.

Since I had mostly happy experiences with Javascript (pre-jquery), I decided to learn Node.js in my spare time while looking for a job, and I started writing some OSS libraries for Node. Most companies I applied to rejected me immediately from "lack of experience" since I didn't have a CS degree, others would interview me but I was rejected by all except 2. One was a super tiny startup run by a husband and wife where the husband gave me a creepy vibe that I rejected, and the other was an early-ish startup that had traction and high growth, but was also having technical issues and had built a core piece of their technology in Node.js for some reason: Uber.

That was the wildest job I had ever held. The highest highs and lowest lows of my career were all there. I gained a lot of operational experience and architectural knowledge there, helped scale the Node.js-based dispatching system, part of the team that did the second version of Surge pricing, part of the team that built UberPOOL in 3 weeks, built a "hot rod" stream processing system from scratch in Java (the various Apache projects weren't reliable enough, not even Kafka) for the third version of surge, and helped build UberEATS' first and second versions of surge.

The technical side was great, but I was emotionally drained at that point and didn't like what I was seeing from the top, so I left to join another startup that had many technical similarities to Uber but in a different market, but it sold itself to a competitor two years later, so I left.

That's when I co-founded a startup with a friend and colleague from Uber since then, which gets me to the present day. Not going to advertise the startup, we're still too early-stage to have customers, but I've learned a lot about compilers, virtual machines, and type theory in this startup, things that high school me had assumed were beyond my abilities, and I really enjoy what I'm doing and the people I'm working with.

The uncertainty of whether we will be able to reach product-market fit and have the startup actually take off is what I dislike the most about the startup, but it's up to me and the rest of my team to figure this out. That uncertainty is the price that has to be paid for the freedom of choosing exactly what to work on, and I think I'm finally confident-enough in myself to be ready to pay that price.

Re: Ask HN: How did you become a software engineer?

#59
Most people I work with seem to have just fallen into it. I was set since I was a child in the 1980s to become a professional programmer as I played around with BASIC on a Commodore and QBASIC on a 286. But as 2000 came around, everyone told me that programming was dead due to outsourcing. That was the idea at the time. What was true was something in the middle- it was becoming a damaged field. With no professional organization / union mechanism to keep it afloat as a bastion of the middle class. So I went into networking and mostly took whatever job was available, doing systems work and then devops.

After seeing Azure and AWS come online, that felt like a field that would shrink to a few cloud engineers, rather than be a field of CI/CD experts. I took a gamble to leave my job and study up, as I did have VB courses in high school (I attended the local college while in HS) and Java in college. So I studied up on Python, not knowing if I would fail at this endeavor and going to plan B (devops). I ended up switching to the .Net space and C#, and after months of 2-3 interviews a day, 3-4 days a week leaving my head empty and buzzing at the end of the day, I finally got hired.

I've worked on a few projects ever since in that same job, and still enjoy the coding, but don't enjoy the time limits or the general disrespect that you won't get in other careers. You're making Fabergé eggs and you're treated like you work in a factory. If I were to do it over again I would probably have gone into welding or another trade. Work where you can't just hire someone across the globe for.

Re: Ask HN: How did you become a software engineer?

#60
Started in high school with learning Python on Codecademy then solving problems on Project Euler. Went to uni for a computer science degree, which was absolutely worth it to me. During uni I got an internship through a on campus career fair. Currently I write Go and Python for a multi-cloud platform startup.
Post reply on HN