My new late night habit is scrolling down through the default news and articles feed app on my android phone, which I don’t even know what it’s called really, hoping to find some eye catching content to read before falling sleep; from stock market insights to the newest Elon Musk’s tweeter outrage.
我新的深夜习惯是在Android手机上向下滚动默认的新闻和文章供稿应用，我什至不知道它的真正含义，希望能在入睡前找到一些引人注目的内容； 从股市洞察到最新的Elon Musk的高音扬声器激怒。
But recently, I have noticed an increase in the number of articles, writings and online course advertisements about “becoming a programmer in a year” or sometimes even shorter.
As someone who has taken the most traditional route to Software Engineering & Development (a bachelor’s degree in Computer Science, a Master’s in AI and nearly 10 years of active presence in the cutting edge industry), sometimes even I wondered if taking a shortcut would be a better idea.
It is no secret it rocks to be a software developer in today’s world. With a few years of experience and a moderate reputation, you don’t bother answering all recruiters’ calls just because there is too many of them approaching you. You get to bargain your job offers against each other more than most people can. You have the luxury of confidently confronting the entitled boss who bullies you and leave at your will, as you know the next opportunity -which is probably an even better one- is right around the corner, even during a pandemic where most people have to deal with an ongoing uncertainty.
成为当今世界的软件开发人员，这并不是什么秘密。 凭借几年的经验和中等的声誉，您不会因为所有的招聘人员都在接近您而打扰所有招聘人员的电话。 与大多数人相比，您互相讨价还价的机会更大。 您可以放心地与有权欺负您的老板打交道，因为您知道，下一个机会-可能是更好的机会-即将来临，即使在大多数人不得不应对的大流行中充满不确定性。
But, can you really become that guy, in one year or less? Well, my short answer is no, although you can pretend like one and possibly get away with it for sometime.
Let me take a step back.
Within past few years, there has been an ever growing demand for IT professionals and especially those with coding skills. However, the fast rate at which new startups and companies appear everyday has caused many issues for those very same companies, leaving them not much time to establish base concepts.
For one, I have noticed most software development companies (especially the smaller ones) don’t have a clear grasp of the basic terminology related to the talents they seek to hire. Terms like “Developer”, “Software Engineer”, “Programmer”, and many others are used interchangeably in the job postings, as if they all mean the same thing. They don’t (ta da!!). And what is clear there, is that many employers don’t exactly know what they are looking for, all they know is they need someone who is able to pick up where their former programmer left off before accepting her new offer.
首先，我注意到大多数软件开发公司(尤其是规模较小的软件开发公司)对与他们寻求聘用的人才有关的基本术语没有清楚的了解。 诸如“开发人员”，“软件工程师”，“程序员”之类的术语以及许多其他术语在职位发布中可以互换使用，就好像它们都是同一件事。 他们没有(ta da !!)。 显而易见的是，许多雇主并不完全知道自己在寻找什么，他们所知道的是，他们需要一个能够在接受前新程序员之前接受其原先程序员离开的地方的人。
Based on my own experience, even title prefixes such as “senior” and “intermediate” are lot more confused and unclear in the software development industry than they are elsewhere, yet again indicating a lack of clarity in the field.
How does all that relate to my argument of this writing? Well, in my humble opinion, you may become a programmer in a year (and that is only if you are very talented and hardworking), but it is very unlikely for you to become a software engineer in that time frame. Sure, you may trick your interviewer to thinking they are the same thing, but I don’t know how far that is going to take you. And let me tell you, there is a huge leap from programmer to software engineer.
所有这些与我对本文的论证有何关系？ 好吧，以我的拙见，您可能会在一年内成为一名程序员(只有在您很有才华和努力工作的情况下)，但是您在那段时间内成为软件工程师的可能性很小。 当然，您可能会欺骗面试官以为他们是同一回事，但我不知道那将带您走多远。 让我告诉您，从程序员到软件工程师都有巨大的飞跃。
Let’s use a simpler, though not perfect analogy. If we compare a software engineer to a, let’s say, civil engineer, then a programmer would be the guy who knows how to nail gyp-rocks to studs and mud and sand them.
The difference between the two is crucial. Where I see a piece of land, a civil engineer can vision a skyscraper, estimate the amount of resources needed to build it, have a nearly accurate idea of how many people it can shelter, how big the sewage lines have to be in order to accommodate that population, how often should its bearing columns get inspected and so on. The other guy however, can install the flooring and walls inside one unit and that’s about it.
两者之间的差异至关重要。 在我看到一块土地的地方，土木工程师可以看到摩天大楼，估算建造摩天大楼所需的资源量，几乎可以准确地知道它可以容纳多少人，必须有多大的排污管道才能容纳该人口，应该多久检查一次其轴承柱等等。 但是，另一个人可以将地板和墙壁安装在一个单元内，仅此而已。
As software in general is much more of a black box to the average person than towers and buildings are, many people — including those who may want to hire you- aren’t exactly aware of what a huge gap there is, between someone who just knows how to get the code on that page working again and someone who can see the entire product all the way through and properly setup its corner stones.
One crucial skill in software engineering (if not the most crucial one) is not even about coding at all. Just like that civil engineer example, a software engineer needs to “hear that guy’s great app idea” and be able to translate it into a product, by mapping often unclear wishful thoughts of “the guy” to processes, flows, data models, action hierarchies and access levels. A software engineer must be able to vision that “tower” long before it is built, producing insights on how many users and requests it can handle using such and such infrastructure, what are its security risks, what design would give us a better chance for scaling in future, what technologies should be used and why, etc. Those are all way beyond a mere programmer.
软件工程中的一项关键技能(即使不是最关键的技能)甚至根本不涉及编码。 就像那个土木工程师的例子一样，软件工程师需要“听到那个家伙的很棒的应用程序创意”，并且能够通过将“那个家伙”的通常不明确的一厢情愿映射到流程，流程，数据模型，动作来将其转化为产品。层次结构和访问级别。 软件工程师必须能够在构建“塔式塔”之前就对其进行构想，从而深入了解使用这样的基础架构可以处理多少用户和请求，存在哪些安全风险，什么样的设计将为我们提供更好的机会未来的扩展，应该使用什么技术以及为什么使用等等，这些远远超出了单纯的程序员的范围。
You can [possibly] become a programmer in a year, but not a software engineer. In fact, you cannot become good at anything in one year. My humble advice is, if you know for sure that software development is your passion, take the longer way and rest assured it will pay off.
您(可能)可以在一年内成为一名程序员，但不能成为软件工程师。 实际上，您一年之内都不可能变得擅长。 我的卑鄙建议是，如果您确定知道软件开发是您的热情，那么请走更长的一段路，并放心，它会有所回报。
By becoming a real software engineer, not only you reward yourself with an exciting, fulfilling and secure career, but you will also save your fellow developers from the burden of having to undo everything you did and do it all over again!