4 ms·
I've been programming for about 12 years (rough timeline of my first ~5 programming years: TI Basic -> z80 assembly -> C -> C++ / PHP), which, as of one month a
by GuiA 13y ago
I've been programming for about 12 years (rough timeline of my first ~5 programming years: TI Basic -> z80 assembly -> C -> C++ / PHP), which, as of one month ago, is exactly half of my life. I also have a M.Sc. in CS (PhD dropout).
I've been working as a web engineer in the SF bay area for about two years. Before that, I was doing academic research, freelance, indie game development, developing interactive systems (openframeworks, processing, etc.), contributing to open source projects (mostly in the Linux world), worked as an iOS dev for 1.5 years, and a few other things.
I'm noticing two things:
1) I know more than a lot of people my age in SV about things completely unrelated to startups & web/app development, like ray tracing, assembly, the Linux kernel, how an X server works, the history of UNIX, obscure programming languages like APL/Prolog/Ada/..., APIs no one talks about like Qt, theory of computation, formal algorithm verification, etc. etc. etc.
2) But when it comes to things specific to working as a web engineer in the Bay Area (Agile, TDD, etc.), I still have tons to learn.
It's good and bad: good because I'm learning a lot and having fun doing it, but also frustrating because I don't get to use 90% of what I know on a daily basis. It also often feels like web dev is just not on the same intellectual level as something like graphics programming, which is frustrating to me (although I feel bad, elitist, and potentially misdirected for making such a judgement).
Anyone in the same boat?
- rayiner 13y agoIts different skills. I used to work on stuff I think is pretty "sexy" (software defined radios, networking algorithms, line rate packet analysis in high end network equipment), but I don't have the spatial skills at all to do web or GUI programming. That said, it is a little unfortunate how the trend towards hyper specialization and buzzword of the day-ism discourages people from being what I consider "well read" in terms of CS education.
- Osmose 13y agoI'm not quite in the same boat, but everything I do these days is related to webdev, and pretty much all of the sites I work on are not technically difficult (data is in the hundreds of thousands of database rows, tasks are straightforward "take data from here, do very basic aggregation, and put it there"), so I can relate to the sense that lots (not all) of web development is not on the same level of complexity. The thing that makes it seem that way is that webdev has a low barrier to entry. A person can get a website doing pretty impressive things from a user's perspective without understanding a lot of the fundamental pieces that are helping them along. What I've noticed is that webdev can be very complex, but in not-so-obvious ways. For example (and none of these are exclusive to webdev): - Web development brings together a stupid amount of different components. The number of acronyms between a string of text on your server and a rendered webpage on your user's computer is absurd, and learning the ins and outs of all of them is daunting. There's server software that actually runs your web app, the layers of networking that get the output to the user, the mini-Operating-System that is the web browser to render your output, and more. - Websites are very often meant to be seen by tons of people at the same time. Everyone wants to make a popular website, but that brings with it concurrency and scaling problems. - Most websites don't get to choose who their users are. They come with many different types of software, and have many different types of hardware, from many different places around the world. This has performance issues, localization issues, and UX issues. - The web technology stack evolves quickly for a bunch of reasons. You may have a strong opinion of trying out new tech vs. keeping a stable stack over the long term (what does long term mean for you, anyway? 5 years? 10? 50?), but there's benefits and disadvantages to either side, and generally it means you have to keep tabs on the latest developments so that you don't fall behind. If I had to shorten this, I'd say that the complexity in web development lies not in depth, but in breadth. An effective web developer is a jack of all trades.
- Retric 13y agoIMO, developers underestimate the actual costs of adding a new tech/layer/interface to their design which is why they use "a stupid amount of different components". I suspect that's also why new architectures/langues can catch on so fast. They don't really have to be much better just avoiding the cruft is a huge leg up until the next wave of small 3rd party library's show up and tracing a bug can once again involve tracing though 50+ files.
- Osmose 13y agoJust to clarify, by "stupid amount of different components" I meant more that a typical visit to website can involve tons of different, standalone components: Database, application server, cache, load balancer, CDN, browser, etc. Your comment seems more focused on libraries, frameworks, and languages, but I may be reading it wrong.
- Retric 13y agoAs a counter example. This website does not use a CDN, cache, load balancer, or from what I understand even a Database yet it's ranked ~1,515 in the US by alexa. Which is probably why it's also fairly low maintenance.
- Osmose 13y agoThat's a fair point, although there's a few caveats (HN uses CloudFlare I think, and replace "database" with "filesystem" and it's still another component to deal with). My counter-argument would be that HN is able to avoid a lot of the complexity due to the nature of what it does. Oftentimes the value in adding a new component is maintainability vs doing it the simple way, which is one of the tradeoffs I was referring to earlier. Imagine scaling Google Analytics.
- ftwinnovations 13y agoCreepy... That is the exact progression I had... Well, if you throw perl in there around the C/PHP part. What projects did you do with z80? I created the Usgard OS/shell with some stunningly brilliant kids from around the world for the TI85.
- geori 13y agoTI Basic -> Z80 ASM here too! Love it. I wrote a lot of stuff for the TI-83. I was out of coding for about 10 years (traveled, went to business school, worked in finance). Then I got back into it by moonlighting for a startup. Now I'm CPO of a startup and write backend stuff in Ruby. I rarely get to use any of my old ASM coding chops.
- Sir_Cmpwn 13y agoI'm _still_ writing z80 assembly for those calcs! Want to help? https://github.com/KnightOS/kernel https://github.com/KnightOS/kernel How about a kernel with preemptive multitasking, dynamic memory management, a tree-based filesystem, cross-platform binaries, and the comforts of Unix?