Software engineers often referred to as software developers, design innovative software for businesses and clients. From a personal banking app to a company’s project management workflow system, software engineers are behind many of the essential apps and programs that make business and daily life more efficient.
I have jotted down a few points I think will help anyone
perform as a software engineer at the highest level. This is not an exhaustive
list, but nevertheless a beginning!
Be curious to learn
Software Engineering is an ever-evolving field and it is
difficult to keep up with the pace.
Always be on the lookout to learn new things and try them
out. Be it AI/ML, Data Science, Web3 or Software Design. Follow tech people on
Twitter/Linkedin who publishes relevant stuff they build or working on.
Make it a habit to go through technology blogs of various
companies and even research papers of famous tech eg: Hadoop, Dynamo etc. Most
of these publications are made available for public.
A very important is thing is your college or background
doesn't matter as long as you can keep this curious bug going on. A good habit
that you can follow is to keep a goal of learning 3 new things every day. Write
a journal and keep track of your learning.
Communicate like your life depends on it
There is a reason why every software engineering job listing
emphasis on communication skills. It is a such a major part of every day job
and there is nothing called over-communication among the team.
A major part of learning always comes when you help people
solve their issues and for that to happen, your team should know you are
approachable.
Any idea or an approach has be communicated effectively to
the team for their buy-in, so work on building the rapport. Schedule informal
calls with your teammates, bounce off ideas against each other so they know
your thinking pattern. Being a team player is a crucial asset for being very
successful.
Don't hesitate to seek help from team
Personally I see this as a common theme among most
engineers. They hesitate to seek help with either a fear they will be judged or
a self-confidence that they can figure it out.
Answer is simple: Don't re-invent the wheel.
If there is someone who can help you with that, seek their
help and use your time for something more useful, and productive. Just because
you can spend time on figuring out something, doesn't mean you should.
Also, I have never seen any engineer who are agitated
because someone asks them a lot of questions, its always the other way around.
They prefer being asked questions because it improves their understanding as
well. Its symbiosis, see !
Be a T developer
T
developer is a concept I have come across a while back and been
impressed since. The top horizontal line in letter T (capital letter only :P )
indicates the breadth of knowledge and the bottom vertical line signifies the
depth. So now, how would you usually write T ? First the horizontal line and
then the vertical one.
Same process in the engineering as well. Spend time
assimilating the breadth of knowledge on a system or technical stack. Once you
have mastered enough range, focus on getting deep into it and build a niche.
This is recommended for multiple reasons, a breadth almost
always gives you upper hand in designing better systems. Knowing just a single
part of system, especially in the early stages of your career, limits the
thinking ability and the contribution velocity. Also since the software field
is so rapidly pacing on, having a breadth of knowledge helps you to stay
relevant and pivot.
Equally important is to have an in-depth knowledge in a
specific field or a piece of system. Spend time understanding how that
particular framework is built under the hood and its roadmap from its Github
repo helps you.
Think like a product owner
I cannot stress the importance of this. Think of it, no
research in the history has been funded because it's fun. Its always funded
because of its business/commercial/industrial impact.
Same principle works in software engineering as well. Almost
everyone wants to work in bleeding edge tech like Deep Learning etc, but how
often do we come across those problem statements ?
Most often an idea is limited by our knowledge, thats why we
call people who go beyond their knowledge as "visionaries". This is
an essential skill for a product owner and an equally necessary skill for an
engineer.
Consider your software as your baby. As your own product. As
your startup's product and as if your entire worth depends on it. Now start
thinking on how you can improve it and how can the UX of it can be enhanced.
The output of this exercise is what would translate into exciting problem
statements. Innovation starts with this !
Read every day
Probably the most important skills an engineer can acquire
is to read every day. Every single day.
Not just about software engineering, but about leadership,
management will help the careers. For example, a book like "Measure What Matters"
guides you in framing the right career metrics and a framework to track them. A
book "No Rules Rules",
"Working Backwards"
gives you deep insights into how software teams work towards a problem and how
to build a culture in the team.
A good habit to inculcate is to start reading for 10 minutes every day. It still gives you 3650 minutes ~ 61 hours of reading time every year and also an outside chance that you will not stop in 10 minutes :P . It's a win-win.
Leave a Comment