Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: What is your programming training schedule?
23 points by muzani on Sept 10, 2017 | hide | past | favorite | 12 comments
Like athletes, there needs to be some time allocated to training yourself to perform faster, better. Time needs to be allocated to resting too, so it might not be optimal to learn more on weekends and nights.

Good training usually involves something tough, that strains you to your limit. A big part of it is scheduling that training properly so that you can keep improving, and yet aren't too exhausted to get work done.

How do you keep improving yourself? Learning new languages & libraries, shortcuts, better tools, etc?




Here are some things I've down over the years in no particular order.

Work on algorithm problems during slow times at work, or when I know I'll be interviewing soon. I'd just search google for tech interview questions, then implement so that I really understood the solution.

I used to write 2d games as a hobby, I made Tetris, the most ambitious game I completed was a jump n run with a simple level. This taught me 2d graphics, animation, simple physics, and managing state of a lot of interacting entities.

I implemented software 3d with flat shaded polygons and used that to make a demake of an old game. This taught a lot about 3D, matrix math and modeling.

I've implemented parsers and interpreters for simple languages multiple times. I personally think this is the most bang for the buck type of project, you learn a lot about working with text, recursion and tree data structures.

I wrote an emulator for an old architecture. This taught me a lot about assembler and how machines operate.

I wrote a couple of simple games for gameboy color and ran them on an emulator using homebrew tools. This taught me a lot about assembler programming an old game consoles.

I wrote client server library kind of like zeromq. This taught me a lot about socket programming and threads.

There was other stuff. Note all these projects were for my own edification and amusement and were never released anywhere. It was all basically an excercise in "ok that's how that all work", then moved on. There was never a goal or schedule. These were just things that interested me.


I spend a lot of time learning new things. For the past couple years I've been focused on learning Javascript but also boning up on CSS and HTML5.

I do most of this on a "need to know" basis most everyday, and on a "curious to know" basis when I'm curious, which is pretty often.

As for improving, first I labor on getting my code working and that, for me, can be a pretty messy process. Afterwards I look for ways to improve it and clean it up. I generally learn a lot doing that.

Aside from that, I read "How To" articles (a lot), and also spend time browsing APIs, and as soon as I need to figure out how to do something I do a web search on it and go read up on it.

For example, I saw a link about "Learning Javascript" here a week or so ago and went and read the article. It was pretty good and I learned a bit from it. It had an exercise to find numbers in a "fibonacci" sequence which was fun. It was pretty simple exercise in logic but since I'd never played with it I found it interesting and kept poking at it a bit more :D


I decide what to learn mostly from looking at job requirements of similar fields. Most companies usually adopt things that work and save them time. This was also how I picked up on the Kotlin wave before it went mainstream for Android.

If something makes me uncomfortable, I try to look at it. Usually it's things that seem really powerful, which people hate, but don't really justify why. React and MongoDB are prime examples.

I find that most of the "fun" and interesting tech isn't really that helpful to work with. The best tech is tiresome to learn, especially in Android.

I freelance, so usually I would allocate a couple of days just to grind up programming skills in certain things. I used to do something like 30 mins a morning to warm up my typing speed, but it doesn't stick when I have to deal with deadlines.


I prefer to learn from books as I find it easier to pace oneself. Every day, I check out what book packtpub is offering for free. Aside from that, I also subscribe to safari books (they have a free trial - no credit card required, check it out). Every now and then I see something that interests me and I spend at least a week or two going through the book. If a topic interests me enough, I'd check out another book, look at online courses, spend my time on the forums delving deeper, and maybe start a project.

Link: https://www.packtpub.com/packt/offers/free-learning


Do you have any particular way of reading? Like just read the same book in your spare time, or flip between books as long as they hold your interest? Or even a way of choosing which books to read?


Most of the time, I flip between two books. The trick is to pick books that complement each other. Like say maths and machine learning, or a book on JavaScript and a JS framework. I usually read on the mornings & weekends and then spend an hour or two doing the exercises/projects at night, after work.


These days I only practice at work, because it's the best place to practice if you can manage it: more time, better motivation, specific tasks in mind, help more available, realistic problems, and so on.

E.g. as an example, learning a programming language: https://codewithoutrules.com/2017/09/09/learn-a-new-programm...


Feel free to ignore/downvote me - just wondering: is this a thing people do?

I certainly understand and support it, but I have never seen it happen at work (and I work in a start up, not some old boring enterprise shop). After eight hours, if I want to program at all I'll probably mess around with some new language or whatever, not "train". Same with my coworkers. Maybe I am lucky, but the things I do at work challenge me such that I learn something after every project.

Anyway, I did ask a similar question one time, check it out:

https://lobste.rs/s/uu6v1o/what_is_deliberate_practice_for

To give you a direct answer, how about doing LeetCode exercises, starting from the easiest and building up? If you take your time and note down how you solved each problem, you will start to notice patterns and can apply those at work to solve stuff quicker. But IMO, if we are talking about performing "better" at work programming, it's more about the skill of taking business specs/feature request and fitting them with the existing codebase :-)


I think it's less likely to happen at a startup, because there is more work to be done. Larger companies often have some kind of official training (even the boring enterprises). I know this, because I freelance with a training company and often do things like training courses to teach a bunch of companies how to do Material Design.

It takes a lot of time and error to mess around, and some libraries have such immense productivity boosts that it's a waste of time not to do them.

In my case, I once bought an ergonomic keyboard and realized that I was typing the wrong way for years. My typing speed halved for about a week, so I did some 30 min/day training routine until I got it back up to an acceptable rate. But I think that I could actually be typing a lot faster if I bother to practice with it. There are some other things - debugging tools, keyboard shortcuts.

And there are some major things like learning RxJava, Kotlin, Butterknife, or some architecture, which isn't always possible with 30 mins/day, but may cost productivity if delayed and something you want the whole team up to date with.


I read programming websites and whenever I read something seem to be useful and get excited about it, I try it out.

Has worked well so far. Been reading HN since from the very beginning and tested most of the stuff which was added here, some of them snatching me a job in Europe(I'm from a third-world country).

And also has been able to keep me pretty much well on the market. I could have had better results if I just sat down in one tech, but I find it boring.


I have an hour and a half commute (each way) and majority is spent on the train. I have a hotspot and do all my fun programming on there. Learning a new language, learning a new framework or just creating something. It's a great way to pass the time on the long commute.


You would like to understand user experience (UX) and DevOps, or want to make sure you’re designing secure databases, Global Knowledge has a course that will teach the latest technology trends and embed lifelong application development and programming skills.




Consider applying for YC's Fall 2025 batch! Applications are open till Aug 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: