Skip to main content

Make it work and then make it perfect

If you feel that the world is racing at a tremendous speed and one lifetime is not enough to grasp it all and know everything there is, if you are an Astronomy/Astrophysics/Physics PhD holder (or researcher) who cannot handle the sight of their written thesis and want to start a brand new project (and life), a project that ACTUALLY contributes to society somehow, with the skills that you have acquired during your research years then this post is for you.

When you work in Astronomy/Astrophysics, you will have to deal with computing skills, not just writing a code that works and serves your wanted result, but one that is beautiful. You need to know how to work with servers for example, or how to speed up your code, or how it could be used by and delivered to others. This "meta" knowledge will serve you in the long run. You will develop a curiosity to how things work in the background. Things like software engineering, data science, data structures, version control, web design, web development, etc.

And here is where you get lost, you have no clue where to start: so many terms, so many definitions, so many perquisite information. You have the urge to start from point zero, but that's not a good idea.

Let's say you want to dwell more into computer science (heck if business major people are getting hired in tech then why not you right?). First, you would need to be familiar with the terms in CS, and what people actually learn in CS. Second, start watching crash courses randomly on the Internet just to get familiar with the terminology and topics.

Third, don't spend too much time on a specific topic. For example when I was curious about front end web development, I started with those 2 hours lectures on how to use the syntax structure in HTML and CSS and Javascript [*], but that was just a waste of time. What is important is to have a familiarity on what these are and how they are used to create websites, and that's it.

Dig into the details only when you have a specific project in mind. Maybe you would like to write a blog or build a website or design a game or a mobile application. Then, you have to specify the wanted functionalities, maybe you want to rant about random stuff in your mind, maybe you want to blog about your programming experience or to make available some programming projects that you have done.

Side note: Making your codes available to others and blogging about your work is good for you. It helps you understand things better, and you find yourself under constant pressure to improve the way you code.

In my case I wanted a website that does all of these things [†]. Once you have a project in mind, seek out for the appropriate tools, you might not need to write a website from scratch, there are a lot of python packages for example which allow you to write static or dynamic web pages, you will only have to edit the configuration file, and understand only what you need to know in order to make it work.

When you make it work, take some steps back and try to improve your project, you will have enough knowledge by then to proceed to the next skill.

Finally, stick to ONE programming language and always work on improving it. Being an Expert in one language is better than having a shallow knowledge in many languages.


[*] Here is an useful website that I am using to learn web development.
[†] Here is a Python package which allows you to create a static blog. You would have to do some effort to change the configuration file and make it a website.