The question: If I were to start my career all over again, would I still pick C# or Java? Why?
I got a nice message and a question from one of my readers – Mike and decided I would make my response a blog post. The short answer to the question in the blog title is [jump to the end]. If you have not jumped to the end, there are some things you will gain from the in-betweens. Let us start. Please note, I will share only from my personal view and experience.
I decided for C# sometime in November 2010 in my first year at the university studying computer science (you do not need a CS degree to be a programmer/developer/software engineer). Would I have picked Java? – maybe. I did a Java course in my third year and I loved it, but C# had already got my fancy by then. Java and C# are remarkably similar in the way they are structured. Both are
- Strongly typed
- Object oriented
- Free (Java to a wide extent (check OpenJDK vs Java SE vs Java EE), C# all the way)
- Kinda descendants of C and C++
However, there are some subtle differences that makes C# shine more for me,
- 100% Free and open source
- Ease of installation for a beginner
- Easy learning curve (probably because it was my first love)
- Effortless application to various platforms (check this)
- Lightweight – for the PC configuration I started coding on (although these days, it is not an issue)
Getting a dev job with C# vs Java (In Nigeria)
In my personal experience (90% of my career has been in the enterprise space – so my view may not be so wide), there is more demand for C# developers than Java. Yes, I have seen lots of Java developers – mostly on the backend side of the gigs – but not as much as C# developers.
Most of the scenarios I have seen Java excel in the Nigerian enterprise space is through outsourcing partners of such enterprises that build back-end systems and integrations for them. Java excels a lot in the fintech space for some of the core banking ops in Nigeria.
The apps you use in Nigeria
Most of the solid apps and solutions I have seen built in the last 3 years in the Nigeria fintech space (I have my biases) have been with C#. You will see most of them mix this way (Note: ASP.NET, Xamarin and Razor are development frameworks with C#).
- ASP.NET Web API, Flutter Mobile, React Front End
- ASP.NET Web API. Xamarin.Forms Mobile, Razor Front End
- Java Web API (Spring boot), Flutter Mobile. Angular Front End
- Node Web API, Flutter Mobile, React Front End
- ASP.NET Web API, React Native Mobile. React Front End
There are a few (older institutions) you will see with this combination
- ASP.NET Web Forms, Java for Android, Objective C for iOS
- ASP.NET Web API, Java for Android, Swift/Objective C for iOS, Razor Front End
One of things that may interest you to know is that most of the banks use outsourced solutions for managing their core engines – so you may want to find the companies they outsource to and find out what techs they are using and base your learning on those.
So far, I only know one bank that built their own core banking system – Kuda Bank. You probably have seen this in the news.
You may then want to ask, is it just in fintech that I can find a job as a developer? My answer to that is no. There are many other industries that employ programmers – eCommerce, logistics, start-ups, oil and gas, telos, and lots more.
If I were to start my career all over again, would I still pick C# or Java? I would still pick C#.
These days, I do more CICD and cloud deployments and automations than I code – did C# contribute to that skillset? – Yes. Any other programming language would have also.
One of the things I advise programmers starting out is that you should decide on your target tech niche on the start of your career. Can you diversify? Definitely.
When I started out, I picked Microsoft technologies as my niche and decided, and I would know as much as I could about it – from coding to productivity to the cloud. Today, that is what I’m mostly known for – aside from being a saxophonist and a lover. Have I dabbled into other niches? Yes. I have deployed React, Angular, Python, Java, and many other languages apps and services during.
So, my advice would be
1. Find the niche you want to be known for
2. Research the languages/tech needed to get into that niche
3. Start your journey by learning the basic entry point
4. Stay focused
5. Document your journey (I did a small video for that) and amplify it
6. Make friends in your niche
7. Get that job
8. Grow in it
9. Pay it forward
I hope this answered a bit of the question. What do you think? Let me know in the comments. Thank you.