How I should start as being a junior software developer

LORY
4 min readFeb 3, 2022

--

As a 13 years developer . if you just start 1 or 2 years as a developer, I need tell you this , to save your time .

No Roadmaps

Do not try to learn everything , do it step by step .those technologies will always there , do not afraid you will miss anything .you can always pick them up when you want .

But I will not list any roadmap here . they are just bunch of keywords , which has no priority , or just confuse or stress you (but ,they are good to be kept as a — “learning dictionary“) .

If you are backend developer , There are many languages javascript, c, c++, c# java, php ,python, golang, rust, ruby, R … many database mysql, marialDB, mongoDB, MS Sql server, oracle,postgre , neo4j, cloud Databases… different cache engine too : redis, memcache etc . Now you lost , so which ones to be picked up first ?

The new technologies keep changing , many of them just come and go . Please do not get confused, you can start with these (sort by priority) :

Linux (command and understanding)

Make sure you are mastering shell commands . specially the text processing(grep, sed, awk, cut, tail, head, less etc) ones, It will boost your productivity in development, testing, debugging, troubleshooting , automation, devops ,almost everything .

Understand how linux works , know the basic things, (strongly recommend this read).

Recommend this book : <<Linux Command Line and Shell Scripting Bible>>

Mysql

Except knowing how to do CRUD, write sub-query, case-when, group by, every partition queries . you should also try store proc, functions, triggers ,write recursive queries reach the OOM, setup cluster and manage the nodes, know how the index performance be affected in where clause; also why fragment can have a huge impact on performance (after drop millions of rows) ; try master-master setup and master-slave setup and fire thousands of read/write calls , compare the difference (num of deadlocks, RPS);you will likely have to write some SQL query everyday , make sure you are mastering it and understand the one database engine (innoDB) (so can pickup another one much faster).

Nosql is interesting to learn but should master SQL database first. I have went through 20+ software projects , just one of them we used mongoDB as main database. and the design was super challenging (document object growing rapidly because no joins and lead to performance issue).

SQL vs NoSQL is another big topic. i have been experiencing different issues ,should discuss in another article .

Recommended book <<High performance mysql>>

Nginx

This is just a preference . I put nginx here just it can serve almost anything .It could also be Another web server as well (e.g. apache ). The objective is for you to understand how a HTTP request header and body being parsed , processed and routed to application server ; how the nginx load balancer works; even not recommended , you should understand how url rewrite works ; try different nginx WAF (modsecurity) for security purpose see how sql injections be blocked. nginx not just can serve http(s) request, you could try websocket works with nginx ; nginx+rtmp for video straming could also be done ,its very interesting topic to research and explore .

Regex

When you type some linux command , write shell script ;or do sub-string searching , pattern matching; or configure nginx server , you will use it almost everywhere . there is a good place to practice it — regex101 .

Mastering ONE programming language

You only need one language , only one. but master it .

By mastering I mean you should know not just how to write a class ,new object, call method or web service and debug print see the result. you should also know the core ideas of a programming language is designed on. here are some of them .

Compiler and intepretor . For Java , java code > java bytecode ; or C# code > IL . the idea are exactly same .translate the source code into something could be executed during runtime (JVM, .Net framework) . the process is very much similar to every compile language . once you learned one , you know all . similarly for PHP or python how its intepretor works during the source code being executed line by line .

OO and closure. Inheritance (I don’t like it either, but sometimes still useful, in simple cases) ,decorators , interface , abstract class , factory , override ,overload . these are the common OO ideas in c++ ,java, c# even python , php has some in common ; javascript and python both support closure , spend some time understand why the variable still alive after the nested function exist .

GC .You should know how and when a variable or object be created and dead then cleanup by system . c++ has smart pointer, java and c# has garbage collector ,use reference counting + generation ; python doing same way, reference counting . but here golang concurrent GC idea is different , a bit more complex .

Async

In web app, when a http request hit app server , it will be async all the way until database or some rpc call . So you should get the idea of async-await call . many languages should already support it(java, kotlin, C#, Python), some need 3rd party libraries .

But Which one to start

I would recommend you to pick up Java or Python as start if you are on backend, javascript if you are doing frontend. reason is simple, there are more jobs in market means more opportunities, and these 2 languages both has a mature open source community support .

During language learning . I strongly recommended to finish leetcode 300–500 high rating problems . so you can practice algorithms + language at same time .

recommended to read : <<Code Complete2>>

That’s it .

Thanks for reading , hope this article helped you !

--

--

LORY

A channel which focusing on developer growth and self improvement