Hacker News new | ask | show | jobs
Ask HN: How to fill holes in my knowledge
16 points by LostProgrammer 3544 days ago
Hi everyone,

I finished CS Uni, after that I worked at a startup as a generalist, and after that I worked as a freelancer on a couple Android projects (and now I am in between projects).

I feel like a really bad programmer (28yo atm), and no I don't think this is impostor syndrome. I never had official Android dev education, but I have had learned JAVA at Uni. On Android projects I worked I always worked alone and never have I had an opportunity to work with someone more experienced.

I think I am missing some parts of knowledge. It is like I have holes, so I am missing some basic stuff, but I know a bit of advanced, but holes are there also, I hope you understand. On projects I worked on I just googled away and created applications that worked BUT behind the scene is a Frankenstein monster code of bad programming practices (or at least I feel so even thou I don't know what a good programming practice is for android).

Is it possible to acquire a good Android dev knowledge without working in a team and/or company? I could probably find some 'entry level' job at a company, but I don't think I could join as a freelancer on some team because of lack of skill.

I am trying with some tutorials, and books, but not sure how successful I am being.

8 comments

> I am trying with some tutorials, and books, but not sure how successful I am being.

What tutorials and books? First off I totally get you. For several years after graduating I felt a hole in the pyramid of knowledge I felt university should have provided me. Our program leaned heavily on how to use Java and Microsoft technologies to fix problems big companies had. There was little room to stretch our foundation and dive deeper into algorithms or understanding programming without a language or framework attached to the material.

I’ve been fixing this by reading books and doing simple projects to fill in that base layer of knowledge in that pyramid. These don’t really dive into frameworks or even languages, but the basic building blocks of what we do.

Being effective with languages like Java or frameworks like the Android SDK is nice. But I know for myself and many people that feel a tinge of imposter syndrome that it’s due to lacking foundational knowledge. We either rushed through this period or skipped it entirely. But it’s this through this period where we develop on confidence with our craft.

There’s plenty of Ask HN threads on what to read to develop a good baseline of programming knowledge (SICP, Code Complete 2 and Pragmatic Programmer will be mentioned a lot). What I think is important is also to have a clear goal or reason for wanting to read a tutorial or book and only follow through on material that actually helps you accomplish your goals. Assume most tutorials and books are fluff that will not actually move the needle for you.

If you're trying to fill holes in your android development skills, you should consider doing the android nanodegree on udacity.

It was developed by Google, so you know it'll cover almost everything and give you best practices approach to developing android apps. It's also well structured and can be done in your free time.

https://www.udacity.com/course/android-developer-nanodegree-...

If you don't want to pay for the nanodegree, you can also take the courses individually for free (without getting credit).

I already started this a week ago. But thank you for confirming the validity of this course.
Well, perhaps you can find a mentor to help you understand your holes and how to fill them.

Do it slow and methodically. Don't try to cram to fill all the holes at once. Go slow. Identify one hold and learn how it is filled. Do examples, write a small program to get practice. Ask someone to review your code.

Programming now-a-days is a marathon, not a sprint. Programmers need a pretty deep understanding of their language of choice along with how to use it correctly. I think the last piece lacks in a uni education alone.

Practice, practice, practice. I don't know java or I would offer to help. If you get around to C or C++, email is in my profile.

Thank you, will definitely try something along that path.
You could run your code through a code analysis tool and then fix and understand the mistakes. It should point out bad programming practices.

The best thing you can do is keep programming and aim for best practises. Ask questions on stackoverflow, programmers stackexchange and codereview.stackexchange.com

I never used tools like this, but honestly I am not sure if a code analysis tool can show bad practices. Maybe it can show badly implemented algorithms or something like that. Anyway I will look into in, thanx.
I currently work as a Junior Developer--straight out of uni-- and I find it really helpful to have someone more experienced review my code and give me feedback. So in your case I would say try to work on open-source projects or just join a team environment.
Yeah, I think that would be the best approach. The only problem being that I live in a country where difference in pay when you work in a local company and if you work freelance is 7-8 folds. Literary. If it were like 2-3 folds I might think about sacrificing that for knowledge but this is just crazy.
I haven't finished uni yet, but I feel just the same. I've come to the conclusion (at least in CS) that uni isn't enough to become a programmer. Experience in a job and coding together with more skilled programmers are more important than passing exams. Uni gives us a general understanding on the subject, while specific skills we need to develop by ourselves. This is just my point of view, sorry if it doesn't help much.
Open source projects seems to help if you know what to look for (like search for top 10 android project/plugins/whatever) - breakdown each part you would like to learn (architecture/codeStyle/asyncTasks/compatibility/images/UI/tests/perf). Concentrate one at a time.
Thank you, I think this approach will be useful as well.
Practice Hacker Rank challenges until you can't anymore.
Hacker Rank can teach you algorithms, a bit of programming way of thinking, and how to solve problems. But not how to actually organize code and have best practices implemented.