What is it like being a developer?

What is it like being a developer?
I don’t know about you, but the world of development seems like some kind of mysterious entity. The raging gibberish, disjointed words clattering across the screen. The people that actually understand it, some kind of other species, belonging in the future or maybe a really decent sci-fi movie. Perhaps developers could have defeated The Thing.
I decided to stop marveling at my co-workers from afar and actually ask them a thing or two about what they do. Working at software development companies means prime access to quality developers and all the insights that make them more human than machine.
The one thing I can tell you is that the stereotype of a developer (khakis, IT Crowd, sweats), is only partially true. As a Full Stack co-worker put it, they’re not anti-social like people like to think. Collaboration is actually part and parcel of the gig.
This is what I’ve learned about #developerlife.
gotta be cool, bro
The life of a developer means perseverance under pressure.
Problems arise that you don’t know how to fix, but for which you’re responsible. That’s high stress, and demands cool thinking. Walking away isn’t always possible on a strict deadline with unforeseen hiccups. As Sham Saini, one of my co-workers put it, “You have to figure out how to fix it, otherwise you’ll be there for longer.”
The kinds of challenges you might expect? Bugs you can’t solve. New features malfunctioning without cause. Merging branches of code only to find that a swath of it has just disappeared. These conundrums can quickly become infuriating.
The only way to approach it is through persistence and good critical thinking. If you approach it calmly, you’ve got a better chance of solving the issue. The stress will still be there anyway. Sham recommends thinking your way through and taking the challenge on, piece by piece.
The other, apparently more recent phenomenon? Developers, especially newbies, not believing they’re as good as they are. This comes from code being continually scrutinized, with flaws singled out. However, this is indiscriminate; it’s all about collectively developing the best solution possible. Personalizing this criticism can sink self-image. Which means that performance sinks, too. Tapping into openness and metabolizing feedback as a means for growth, not withdrawal, is key. It’s not about bringing you down, it’s about elevating the project.
Confidence is as confidence does.
you should like computers, or have financial ambition
Fifteen years ago, this industry was brand new. The terms ‘Full Stack Developer’ and ‘Data Scientist’ didn’t even exist. Flash forward to 2020, when software development was valued at $US388.98 billion. No longer obscure terms, we’re now talking about a viable career path for millions of people, and options are only growing.
That said, if you’re getting into software development, you need to make sure you really like it. Sham let me know that in his computer science accelerated program, two-fifths of students who went in didn’t graduate, dropping off in the first year. Serious procrastination is off the table. The two factors that will keep you invested are either a passion for the tech, or a passion for the payment.
Apparently ‘money talk’ is dirty, so saying something like ‘in it for da big bux’ doesn’t really land well. Working as a developer can be extremely lucrative, and as is common knowledge, some of the big players have insane benefits. The fact of the matter is that career drive can come from financial appeal. And why shouldn’t it? As long as you’re not treating people like cash, power to you for planning. If that’s the dream, go for it.
On the flip side, if you love computers, problem solving and teamwork, development could be the thing that you just dig doing. Which makes work life still work, but way more beautiful.
back end programming is essentially plumbing
Breaking it down into simplified terms helped me ‘get it’ ...
A Front End Developer makes a website or app look like it looks. They convert a design given to them into code, so that the finished product looks just like the design. They use HTML and Javascript (coding languages) to do this, plus generate styles using CSS, to refine how something is presented.
Back End Programmers form the skeleton of the site. They get the computer to perform a series of actions, bringing the end result. AKA the plumbing or electricity of a website or app’s ‘building.’ This is mostly done in a programming language called C# (C Sharp).
Full Stack Developers unify the work of those on the front and back end, to ensure it all functions properly and smoothly.
To fill out their skills even more, developers can get some experience as a Quality Assurance (QA) Tester. It means you can reliably test code yourself, whether or not you have a dedicated testing team. This helps mitigate the bugs your client will experience when they receive it back for testing, in advance.
I was also curious about how security training comes into play - with cyberattacks hugely on the rise, is it a prerequisite for developers to keep up-to-speed in this realm? As it turns out, not really. There are dedicated degrees for security professionals, who get paid top dollar to safeguard sensitive data. For your run of the mill developer, knowing the basics around authorization and login are the primary bread and butter.
sprinting is for so much more than track
At Synic, our team works within an Agile framework. A lot of companies use the same thing. This gives a real sense of structure to the typical day of a developer.
It’s a project management style that essentially means adapting to changes, playing to strengths, and teamwork. All of which should give higher quality, faster deliverables. Each day, the team starts the day with a ‘scrum’, a meeting which can last anywhere from 10 minutes to an hour. Developers get to review what they’re working on, and if any issues are cropping up, they can hash it out together.
In Agile, the lifecycle of a project for a client is broken down into two week blocks, which are called ‘sprints.’
Each sprint has its own list of tasks. At the beginning of each sprint, developers are assigned tasks. Whoever finishes first gets to pick what to work on next. Here’s where time tracking comes in; the project manager determines an estimated amount of time each task will take. Accountability for finishing within that allotted time is on the developer. If there’s a good reason, or you just need further support from a more senior developer, what’s great about the framework is that the whole team adapts understandably. That said, you’ll need the good reason.
While you’re developing, code gets uploaded to a main cloud repository; basically an online storage container for the project. Each developer has their own code ‘branch’ off the cloud. At Synic, we use BitBucket and Git software. You’ll upload changes every day to your branch.
At the end of the two week sprint, all of the separate branches are merged into the one cloud. This is a hold-your-breath moment. Sometimes files can conflict, so information can be totally lost. A review is done and the team prep for the next sprint.
experience trumps theory
While a degree is essential as a starting point for the majority of developers, the classroom differs largely from real-world immersion.
At school, you can be told that all code needs to be thoroughly tested and completely perfect. Sure, that’s good for having a high standard for yourself, but in practice, it’s not the case. There are cycles and changes, and a lot more backtracking. Projects aren’t just a one and done plus assessment thing. It’s continual revision over a greater period of time.
There also isn’t one way of doing things. Each company and each team works and develops differently. Speaking with a more experienced developer for five minutes about a problem can teach you a lot more than a one hour lecture. As Sham put it, “In the real world, you need to cut corners and there are tricks people have that make your life easier.” The wisdom of those who’ve been around the block speaks to expediency, without compromising quality.