DEV Community

loading...
Cover image for First Month as a Professional Developer

First Month as a Professional Developer

alysivji profile image Aly Sivji Originally published at alysivji.github.io Updated on ・4 min read

This post was originally published on Siv Scripts

The best laid schemes o' mice an' men
Gang aft agley

I started a new job as a Mathematician / Software Engineer at a Chicago-based healthcare startup in October. It's my first proper development job and I could not be more excited.

I get paid to write code. It's pretty awesome.

Had always thought I would work in data, maybe transition into a data engineer role. But here we are. I'm working on a team of ~10 developers building a clinical decision support web application.

Guess this change isn't entirely out of left field; I had started to dig deeper into software engineering best practices over the past few months. Became fascinated by the different methodologies and frameworks that facilitate the production of good code. As a self-taught developer, I desired formality. There's only so much I could absorb by reading about other people's experiences and working on open source projects after work.

I needed to get my hands dirty and get some real world practice writing code as part of a team. Thought it would be good to experience the process-based workflow of a structured Agile/Scrum development environment; to understand the pain of working (effectively) with legacy code; and to have no choice but to write tests for the code I ship. And, preferrably, have those tests be written first.

It's only been a month, but I think I made the right decision. In one of my first commits, I made a change and took time to refactor code to increase readability ala Code Complete. Got a shoutout during code review. That felt awesome! Software Craftsmanship FTW!

I will say that I find myself constantly studying after work and on weekends so that I'm not completely useless, but I wouldn't want it any other way. Coding at the edge of my abilities will increase my skills exponentially.

While I eventually plan on going back to data, let's hold off thinking about when. Right now I'm enjoying life and want to stay on Mr. Bones' Wild Ride.


Mastering Development Tools

The main reason I took a backend developer role was to level up my dev chops. This means many different things such as writing clean code, being able to identify and correctly apply design patterns, recognizing anti-patterns (code smells), and, of course, learning the tools of the trade.

Over the past couple of weeks, I've started transitioning away from the friendly confines of VSCode and iTerm2 into the magical world of Vim and tmux. Even though I'm fairly proficient with a graphical IDE, I thought it was worth investing in tools that enable me to work as fast as I think.

By switching to a terminal-only development environment, I hope to reduce the context switching that occurs everytime I reach for my mouse or trackpad. As an added bonus, I can SSH into any machine and feel at home. No more having to set up rsync or use nano as a crutch.

Commit Strip - Terminal Forever

How I'm Learning Vim

  1. Worked my way through $ vimtutor. It's a rite of passage.
  2. Enabled Vim keybindings in all my text editors (VSCode & Sublime) to get comfortable using the h j k l movement keys. Being in a familiar environment where I could get work done without having to Google every command did help flatten the learning curve.
  3. Once I was able to make the cursor go where I wanted, I watched Learning Vim in a Week. Key takeaways:
    • Set up a basic .vimrc file and throw it in Verison Control
    • Remap [CapsLock] to [Esc]
    • Use plugins for development, with included recommendations
      • I recommend the vim-plug plugin manager

Last weekend, I installed tmux on my home machine so I could start getting familiar with how it works. My .tmux.conf is very basic, but all the pieces are in place to enable me to learn at my own pace. I just have to make an effort to learn a couple of new things every week. Like everything else in life, it's about putting in the reps.

You're only as good as your tools so it's worth making an investment into optimizing your workflow. We're developers and we should always be tinkering with the software we use on a daily basis. It doesn't have to be Vim and I'm not suggesting everybody go out and learn it. But do take some time to learn your tools and the plugin ecosystem of your IDE.

Shoutout to the folks who responded to my tweet with helpful suggestions. You Da Real MVPs!

Additional Resources

Discussion

pic
Editor guide
Collapse
bgadrian profile image
Adrian B.G.

Congrats! I hope you return each year with a story, it will be a great journey.

Speaking of text editors vs IDE's remember you are not a type writer, your job is not to write more code and faster (which VIM helps you), is to solve problems. Powerful IDE's like Intellij and Visual Studio solves your problems before you knew about them (query DB's, git conflicts, auto complete and task management, ) so you can focus on the Project problems. If the IDE can type your code and you can focus to more abstract problems so be it (see snippets, emmet, live templates etc).

You shouldn't connect to a machine (SSH and rsync) to update the code, your environment should me more abstract than this, you should have a replica of the env locally, and do a continuous delivery of some sort to staging and/or production (also see docker and kubernetes).

In graphical IDE's you is not mandatory to use the mouse/trackpad, it's a choice.

Collapse
evanoman profile image
Evan Oman

Speaking of text editors vs IDE's remember you are not a type writer, your job is not to write more code and faster (which VIM helps you), is to solve problems.

Fantastic point, important to remember before investing a ton of time into Vim (which I already have...).

Collapse
bgadrian profile image
Adrian B.G.

Yes, I don't want to talk publicly about it, I see that Vim is a religion and I may be harmed along the way :), but most of the devs that Switched to VIM confuse "productivity" with "efficiency". If you write a book or are just a programmer (only write code 99% time) then VIM is a great tool.

Also VIM helps you when you are doing bad practices in web development (like altering the remote code).

Collapse
alysivji profile image
Aly Sivji Author

Thanks! You make some great points.

I definitely miss the comforts of my IDE and have spent a decent amount of time trying to get Vim to replicate a lot of that functionality. Really wish VSCode had better Vim keybindings! Right now I'm just experimenting with some new tools, we'll see how it goes over the next few months. =)

Collapse
bgadrian profile image
Adrian B.G.

Experiments are key of knowledge evolution so you're great already.

Like in a relationship, don't enter one with the thought of changing the partner,it never ends well. VSCode shouldn't be use like VIM and vice versa, intellij also has vim mode but I heard is lacking too.

Also after many years I found that customizing too much an env made me more static, I could code at other computers without my keybindings and bash aliases, so I returned at the basics, now I'm using intellij keys in VSCode too and it doesn't fit so well, it has different windows and panels.

Change is hard to so for our brains, another side effect of ingesting too much time learning an environment is that we'll have a hard time leaving it. So find a balance , don't get emotional they are just tools, next year we may code in the air with the VR headsets.

Collapse
minompi profile image
AlessandroMinoccheri

Amazing post!
I have changed many IDE: Sublime, Atom, Vim and finally PHPStorm (Intellij).
I think that Vim is a great tool but Intellij helps me to write clean code and expose me immediately not used variables or some problems (is a simple example).

Vim need to be well configured to have this tool and you need to understand well what you need.

Intellij does this alone with a minimum of configuration.

I have seen developers write code in Vim very well but it took a long time to be efficient.

Please share your next experience soon to show us your growth!

I'm really curious to see the next episode :)

Collapse
alysivji profile image
Aly Sivji Author

I will definitely write an update in a few months time. Thanks for reading!

Collapse
kwabenberko profile image
Kwabena Bio Berko

Congrats man!

Collapse
alysivji profile image
Collapse
alysivji profile image
Collapse
ben profile image
Ben Halpern

Congrats on everything! You've made a darn good choice by integrating into the dev.to community if I do say so myself.

Collapse
alysivji profile image
Aly Sivji Author

Thanks Ben! Love the community y'all have built. Everybody is so supportive!