10 ms·
I am not doing any Sabbatical right now, but I am currently soul searching. I've been working as a fullstack dev for more about 5 years. I do have CS background
by christiansakai 7y ago
I am not doing any Sabbatical right now, but I am currently soul searching. I've been working as a fullstack dev for more about 5 years. I do have CS background, and think myself as quite a decent programmer. But in my day job, or I suspect in most day jobs out there, CRUD stuff, nothing is really interesting and it is really hard to make a leap in improvement in technical skills. Though of course, you improve bit by bit everyday just by code review, bug squashing, practicing best practices, do better tests, etc. But mostly these are the mundane tasks.
While you can argue that technical skills have diminishing returns, but I do really want to focus more on it at this point of my life.
I see it in HN, Reddit, everyday people make very cool projects and I wonder what it will take for me to reach that level?
Anyway, I decided to buy the book "Engineering a Compiler" and set a goal to actually finish it. I guess that's my soul searching direction will go for now.
- cjauvin 7y agoI'm currently going (slowly) through this fantastic book, which I greatly enjoy and recommend: https://www.craftinginterpreters.com/ https://www.craftinginterpreters.com/
- christiansakai 7y agoNice, I'll take a look on that one as well.
- munificent 7y agoI'm the author of "Crafting Interpreters". I really like "Engineering a Compiler", but it's probably not the best first book for implementing a programming language. It's primarily a textbook for backend optimization. It covers just enough front end to feel like a complete book, but you can tell the authors assume you've already taken an undergrad class in compilers before. It is an excellent second or third book after you have a working compiler and you want to start understanding how industrial-grade compilers make code go fast. It's the best textbook I know on optimization. Most other compiler optimization material lives in academic papers, which can be scattershot and difficult to absorb. One of my goals with "Crafting Interpreters" was to give people an intuitive feel for PL implementation so that they are better prepared to approach deeper works like "Engineering a Compiler".
- christiansakai 7y agoThank you for the response. I'll get your book as well. I got that book because it had good reviews on Stackoverflow survey that said prefer that to the Dragon Book.
- munificent 7y agoFor what it's worth, I'd probably recommend the latest edition of the Dragon Book before "Engineering a Compiler" too. The Dragon Book does a good job of establishing a lot of the foundation for a compiler. It is so dominant in the field that most other compiler textbooks either deliberately or inadvertently assume a reader is familiar with it. The Dragon Book has a repututation for being unapproachable and it is pretty dense and goes more into compiler-compilers than any normal person would ever need. But the latest edition isn't quite so bad and you can skim some of that stuff if you aren't interested in it.
- christiansakai 7y agoI just subscribed to your site, and currently enjoying it so far. I took programming languages CS course. We didn't exactly build a full compiler from scratch but we did do parsing, generating AST and bytecode. That being said, I still consider myself an ultra beginner in compiler, do you think the latest edition of Dragon book can be approachable by me?
- munificent 7y ago> do you think the latest edition of Dragon book can be approachable by me? That's a pretty personal question because everyone has different reading styles and approaches to textbooks. It's dense and not a lot of fun to read, so it will require some discipline and effort on your part. If you're the kind of person who has enough willpower to grind it out, you'll be fine. There's a difference between hard books and bad books. The latter are unnecessarily difficult because of the author's deficiencies. The Dragon Book is a good book, but it's a hard book.
- 7y ago
- z3t4 7y agoWhat are your short time goals? What is most painful for you currently? What do you need to do right now in order to solve it?
- christiansakai 7y agoThose are good questions and part of my soul searching as well. I think I want to get into top tech companies (financially motivated), but I've been studying DS&A a lot and definitely think it was a diminishing returns. I think my DS&A is pretty good but I'm still experiencing failure for FAANG interviews. I don't want to do more DS&A if I have to, but I want to get better so that I can move beyond just doing APIs and widgets. I am not that interested in management track. As I get older, I think technical skills aren't as valued anymore, except in top tech companies.
- z3t4 7y agoWhat will a higher compensation lead to ? eg. you land a job at FAANG, get a good salary, but what is the next step after that? eg. Step 1: get better at DS&A, step 2: Land a job at FAANG, step 3: ??? Is there anyway you can get to step 3 without going through step 1 and 2 ?
- christiansakai 7y agoTo be honest. I don’t know what will be the step 3.
- gdubs 7y agoSometimes it takes getting out of your usual box to make discoveries about what will motivate you. It might seem like a waste of time to explore something new — like film, or art — but often those explorations can spark some creativity that reinvigorates your work. As far as personal projects go - the challenging, the better as far as I’m concerned. But what really matters is that the end result is something that excites you and keeps you going when the project goes through the inevitable dull, trying patches.
- christiansakai 7y agoAh yes, I do have other hobbies that I pursue. But I do want to improve better in my technical skills. Idk, as I get older, I want to weigh what my options are, since going into management isn't exactly I'm excited about.
- ebrewste 7y agoMy personal tech journey has been doing more advising within the corporation regarding how to roll out new IoT stuff. Spending more time the with more senior people in the corp and seeing projects that are having problems because they don't really have a vision has been an eye opener. I'm a tech person and want to code or otherwise engineer my way out of every problem, but I'm seeing over and over, it's the clear customer value (customer can be anyone, including yourself) that gates success. Clear customer value can be tech heavy, aimed at tech users, but the tech by itself doesn't have much value. Things that I see that are cool really solve a problem. I am finding that I am doubling down on looking at the problem that is being solved before I deal with tech. Tech is critically needed and you learn useful stuff on the way, but what I am learning, repeatedly, is that the really cool stuff is the product of the clear customer value and delivering on the underlying tech.
- christiansakai 7y agoI am currently nowhere near your level. I am still a rank and file developers. Also I am not that interested in management track. If I can I want to be on technical track. It is harder to do as I get older.
- samename 7y agoHow did you get to that role, is it a management position? I’m in a junior dev role but constantly find myself focused on the bigger idea and vision that solves people experience everyday.
- ebrewste 7y agoI was on a team that would do present to groups about how to improve their products and would some short presentation on a tech topic, like rolling out Wi-Fi in real products. Being part of the team, I listened to all of the talks and participated in break outs with engineers. Seeing the commonalities was number one. Then coaching the really reluctant engineers. Little by little, by parroting what the business and C-levels were saying (when it resonated with me), I would see the light and polish my message. It's been a bit by bit journey, but I no longer avoid jobs like calling a bunch of customers to see what their needs are.
- admirius 7y agoHi Chris, I would like to get in touch with you if possible and if interested, what would be the best way? tried to pm but didn't see the option :) got something on my mind and you might be of help
- christiansakai 7y agoHi admirius, I just updated my bio to have my email, can you see it? I don't think HN has PM option so just email me directly.
- playing_colours 7y ago> it is really hard to make a leap in improvement in technical skills. This is true, particularly, if you work full-time, and your job is not connected to the subject of your passion. You will have few hours in the evening, but for a hard subject you may not have enough energy. You can try remote work, it worked for me. Currently, my client allows 2-3 days a week of working from home, and also now I’m looking for my next place for a full remote position. I save 1.5 hours on commute, 20 mins on lunch. So I have additional time and energy to focus on maths, building things, and running. There is an additional barrier to move into a different or more advanced field: most companies want to hire people already experienced in particular areas. It will be very hard to convince a company that you can learn fast and contribute and also that they can already benefit from your current skills and technical maturity. It looks risky for them, they may have relevant candidates, or do need such expertise right now. Our industry love talking about fixed vs. growth mindset, how crucial is the latter. At the same time, the hiring at many companies is a vivid example of fixed mindset towards candidates: your current skills matter infinitely more than you potential. The thing is it can also be hard to convince them that you actually can acquire required knowledge fast: you know, everyone says to be a “quick learner” in their CV. I think your situation is typical and for some people the only solution was to start their own business eventually, and outplay the system. So, focus on improving yourself in the evening and keep trying to find your way in!
- christiansakai 7y agoOne day I do want to start my own business. Once I have some leeway in terms of finance, and maybe found a niche that I can tap to.
- cerberusss 7y agoThe easiest way is to start subcontracting. It's easier to start saving money, and sometimes, you'll hit on a project where you spot a business opportunity. For instance, you learn the ins and outs of a particular industry, and suddenly spot a niche product. I haven't made the leap yet, because I like the subcontracting so much. But I've spotted many (perceived) opportunities.
- adjkant 7y agoIf I may offer, technical skills are only one part of a person and can be small or large in importance. It's completely okay for programming to be a day job. Personal projects can take many forms outside of the CS world, or sometimes they can use it tangentially. Sometimes CRUD is more fun when it's powering something you really care about personally :)
- christiansakai 7y agoIndeed. It's not that I don't care about the job, but after doing it so many times it loses its magic already. I do think stuffs that I am building during my day job is useful.
- Aperocky 7y agoI might be speaking from an unfair vantage point, but working for the largest cloud company has its perks, namely, the tooling that deal with exactly the problem that you described. While some CRUD is still necessary, most of that is abstracted away, we still have to be schema conscious, but since 1. Our team is dedicated to one back end product. 2. We have a lot of resources (and demand), we had to spend a lot of time thinking about more complex (and interesting) problems with scaling, distributed computing etc. It's a blessing for me because I'm sure if I was in a place where I need to be responsible for all part of the stack the job would turn into a mundane grind. But it's not just for work, I've been able to turn some of the stuff I learned into private projects and make them more interesting and less CRUDly.
- christiansakai 7y agoI hope I'll get to where you are one day.
- SquishyPanda23 7y agoIf you're soul searching, I recommend skimming several technical books before devoting yourself fully to one. And then just pick the one that most excites your curiosity. The process of deciding what to learn next is a type of skill that you can learn. And potentially it's valuable to learn that skill if you feel bored. The risk of just picking a book and committing to it is that it may not be the right book for you, or the subject for you right now, or any number of other things. Anyway it's worked for me; your mileage is likely to vary :)
- christiansakai 7y agoThank you. I agree with that approach. I do have an interest in programming languages. I played around with programming languages in my free time. I'll start with this subject, and see if I am good enough to do it.
- he11ow 7y ago>it is really hard to make a leap in improvement in technical skills. So true. I think it's exactly because of this that many professionals tend to reach a level and then expand their knowledge at the margin.From today's vantage point, it's incredibly difficult to tell which jobs will be around in 10, 20, 30 years' time. That makes me feel like learning new skills isn't a choice, it's a way to stay in the game for the long run. Except that I don't think that the way you learn a bunch of skills in college still works when trying to learn deeper into one's career. It's not just the time, but the relevance. I spent the last two years picking up skills in natural language processing, and the way I went about it was very different than reading intro books (personally, I found intro books least helpful).I've written about it on Medium, in case it's of interest: https://towardsdatascience.com/learn-nlp-the-practical-way-b854ce1035c4 https://towardsdatascience.com/learn-nlp-the-practical-way-b...
- christiansakai 7y agoYes it is. It is also hard to keep up in this expanding field. Like, keeping up with kubernetes is a full time job, keeping up with machine learning techniques is also a full time job, keeping with frontend is also a full time job. Best practices change all the time. CQRS was all the rage now people want to do away with Kafka. Thanks for the link, I'm reading it.
- cookiesboxcar 7y agoCare to elaborate on your comment about CQRS and Kafka?
- deleted 7y ago[deleted]
- mihaaly 7y ago>it is really hard to make a leap in improvement in technical skills. It is not supposed to happen that way. Only in dreams or under the right stellar constellation matching optimal circumstances. In other words: when being lucky. Mastering knowledge is a long process. Knowing a technique is one thing, applying properly in practice on a daily basis in combination with other aspects is the next, knowing when not to use it or in what combination or in place of something else in a given messy situation having specific set of resources and time limits is the ultimate one. But that ultimate one is unique and we will find no recipe for that, it is our task to come up with it. Guides, wisdom, advises, tips and tricks coming from books and others are inherently limited to the scenario where those led to success, they have their limits of applicability not always captured properly and explicitly - actually very seldomly done so - and may not be relevant anymore as the world evolves. We have to try to apply it ourselves, apply, check, repeat, improve. This is lengthy an can only be done in practice in real (typically messy) situations. I did some 'soul searching' before like the author of the article, had ideas and plans what to complete and master, but those had weak results due to two facts: - we never make things alone, each achievement is carried out as a team effort, - to reach a practically suitable level of knowledge it must be acquired in practical situations, hypothetical scenarios in trainings, be it given or self created, are only good for the very first steps of the learning process, to be a beginner, we need actual paid tasks to master how to make something that we can be paid for (except trivial tasks). The soul searching is good still, distance ourselves from the everyday hamster wheel to see the perspective. Easier to navigate if we have a birds eye view than being in the dirt all the time. Still, we will get down to carry out things in the dirt eventually.
- christiansakai 7y agoIt's like playing music. You improve as a musician by playing with others. That's when you listen to others' tempo and dynamic and combine it your own. But you can't just improve by playing with others. You need to drill your own repertoire by yourself, alone, for countless of hours.
- rs23296008n1 7y agoActual paid tasks / public use of your creation is definitely a good measure. It shows gaps as other people lean on it and put the weight of their own usage and expectations into play. Its the difference between making a tool for yourself versus sharing it with others. They will see it differently. Hopefully you'll receive enough constructive criticism that will improve the tool and your process as well. Followup thought: We can make things alone but are always surrounded by and connected to the greater community. This is not the same as teamwork. Private victory proceeds public victory.
- mrwnmonm 7y agowtf, are you me from another direction? I am exactly the same and was about to read chapter 2 in Engineering a Compiler right now.
- christiansakai 7y agoLol. I hope it will guide both of us in our journey!
- jiux 7y agoA paintbrush is simply a tool that enables a painter to bring a dream to reality. A piano is simply a tool that enables a pianist to bring a dream to reality. A programming language is simply a tool that enables a programmer to bring a dream to reality. Ask yourself this: “Am I a dreamer and a doer...or have I just been doing?”
- christiansakai 7y agoFor sure, all of these times, I've just been doing.
- blablabla123 7y agoYeah but there are jobs that actually do not involve only CRUD stuff but technically more advanced topics. But this might mean that other things at the place might be less nice, like a remote location, not so nice office, not so good payment, unstable job, unstable working conditions. In my experience at least one of them matches. Also sometimes there might be the opportunity to take jobs at not to tech savvy companies but that might strive to offer you to work on technically interesting things and give you some freedom on that. That said, working at such places might give you inspiration for side projects. Non-inspiring job = not much inspiration for side projects - at least that's my experience. Also don't forget to believe in your self. Many of the cool projects are - when taking a closer look - more like stub projects. It has a really cool part but it's oftentimes incomplete. So no crazy technical skills are needed, it's more about interested, being ready to explore something new and being pragmatic about solving things...
- nvarsj 7y agoIf you really want to push yourself - I strongly suggest looking into OMSCS. If you get in, you can take classes in areas you may not be familiar (ML, AI, compiler optimisations, many things). It will stretch your knowledge for sure and expose you to a wide variety of areas that don’t come up at all in typical web dev.
- lonelappde 7y agoPeople "at that level" were already at that level before age 20. Buying and reading a book won't change who you are, especially if that's why you bought the book.
- christiansakai 7y agoSounds like a defeatist mentality. What should I do then?